Fix payload value query for external semaphores (#2127)

When creating a CL semaphore object from a Vulkan semaphore one, we
explicitly pass `-1` as the file descriptor value in the case of
`VULKAN_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD`. According to the CL
specification:

>     The special value -1 for fd is treated like a valid sync file
>     descriptor referring to an object that has already signaled. The
>     import operation will succeed and the semaphore will have a
>     temporarily imported payload as if a valid file descriptor had
>     been provided.

The test currently checks that the semaphore payload is unsignalled,
unconditionally, which is incorrect.

Changed the test to check for the correct expected payload value.

Signed-off-by: Ahmed Hesham <ahmed.hesham@arm.com>
This commit is contained in:
Ahmed Hesham
2024-11-05 18:14:41 +00:00
committed by GitHub
parent 5d4b51b4f2
commit 10130a1261

View File

@@ -197,10 +197,15 @@ int test_external_semaphores_queries(cl_device_id deviceID, cl_context context,
test_error(err, "Could not release semaphore");
SEMAPHORE_PARAM_TEST(CL_SEMAPHORE_REFERENCE_COUNT_KHR, cl_uint, 1);
// Confirm that querying CL_SEMAPHORE_PAYLOAD_KHR returns the unsignaled
// Confirm that querying CL_SEMAPHORE_PAYLOAD_KHR returns the correct
// state
cl_semaphore_payload_khr expected_payload_value =
(vkExternalSemaphoreHandleType
== VULKAN_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD)
? 1
: 0;
SEMAPHORE_PARAM_TEST(CL_SEMAPHORE_PAYLOAD_KHR, cl_semaphore_payload_khr,
0);
expected_payload_value);
}
return TEST_PASS;