Update test_semaphores_cross_queue.cpp with new kernels

This commit is contained in:
paulfradgley
2025-10-28 14:44:23 +00:00
committed by GitHub
parent 77cd0d6061
commit 623f0799cd

View File

@@ -45,10 +45,12 @@ template <bool in_order> struct SemaphoreCrossQueue : public SemaphoreTestBase
clCreateSemaphoreWithPropertiesKHR(context, sema_props, &err); clCreateSemaphoreWithPropertiesKHR(context, sema_props, &err);
test_error(err, "Could not create semaphore"); test_error(err, "Could not create semaphore");
ENQUEUE_KERNEL_WITH_EVENT(queue_1, 0, nullptr, write_int_event);
// Signal semaphore on queue_1 // Signal semaphore on queue_1
clEventWrapper signal_event; clEventWrapper signal_event;
err = clEnqueueSignalSemaphoresKHR(queue_1, 1, semaphore, nullptr, 0, err = clEnqueueSignalSemaphoresKHR(queue_1, 1, semaphore, nullptr, 1,
nullptr, &signal_event); &write_int_event, &signal_event);
test_error(err, "Could not signal semaphore"); test_error(err, "Could not signal semaphore");
// Wait semaphore on queue_2 // Wait semaphore on queue_2
@@ -57,6 +59,8 @@ template <bool in_order> struct SemaphoreCrossQueue : public SemaphoreTestBase
nullptr, &wait_event); nullptr, &wait_event);
test_error(err, "Could not wait semaphore"); test_error(err, "Could not wait semaphore");
ENQUEUE_KERNEL(queue_2, 1, &wait_event);
// Finish queue_1 and queue_2 // Finish queue_1 and queue_2
err = clFinish(queue_1); err = clFinish(queue_1);
test_error(err, "Could not finish queue"); test_error(err, "Could not finish queue");
@@ -219,29 +223,39 @@ struct SemaphoreOutOfOrderOps : public SemaphoreTestBase
if (single_queue) if (single_queue)
{ {
ENQUEUE_KERNEL_WITH_EVENT(producer_queue, 0, nullptr, write_int_event);
clEventWrapper sema_wait_event; clEventWrapper sema_wait_event;
// signal/wait with event dependency // signal/wait with event dependency
err = clEnqueueSignalSemaphoresKHR(producer_queue, 1, semaphore, err = clEnqueueSignalSemaphoresKHR(producer_queue, 1, semaphore,
nullptr, 0, nullptr, nullptr, 1, &write_int_event,
&sema_wait_event); &sema_wait_event);
test_error(err, "Could not signal semaphore"); test_error(err, "Could not signal semaphore");
// consumer and producer queues in sync through wait event // consumer and producer queues in sync through wait event
clEventWrapper second_wait_event;
err = clEnqueueWaitSemaphoresKHR(consumer_queue, 1, semaphore, err = clEnqueueWaitSemaphoresKHR(consumer_queue, 1, semaphore,
nullptr, 1, &sema_wait_event, nullptr, 1, &sema_wait_event,
nullptr); &second_wait_event);
test_error(err, "Could not wait semaphore"); test_error(err, "Could not wait semaphore");
ENQUEUE_KERNEL(consumer_queue, 1, &second_wait_event);
} }
else else
{ {
ENQUEUE_KERNEL_WITH_EVENT(producer_queue, 0, nullptr, write_int_event);
err = clEnqueueSignalSemaphoresKHR(producer_queue, 1, semaphore, err = clEnqueueSignalSemaphoresKHR(producer_queue, 1, semaphore,
nullptr, 0, nullptr, nullptr); nullptr, 1, &write_int_event, nullptr);
test_error(err, "Could not signal semaphore"); test_error(err, "Could not signal semaphore");
clEventWrapper second_wait_event;
err = clEnqueueWaitSemaphoresKHR(consumer_queue, 1, semaphore, err = clEnqueueWaitSemaphoresKHR(consumer_queue, 1, semaphore,
nullptr, 0, nullptr, nullptr); nullptr, 0, nullptr, &second_wait_event);
test_error(err, "Could not wait semaphore"); test_error(err, "Could not wait semaphore");
ENQUEUE_KERNEL(consumer_queue, 1, &second_wait_event);
} }
err = clEnqueueBarrierWithWaitList(consumer_queue, 0, nullptr, nullptr); err = clEnqueueBarrierWithWaitList(consumer_queue, 0, nullptr, nullptr);