Skip to content

Commit

Permalink
Command-buffer query for supported queue properties
Browse files Browse the repository at this point in the history
CTS test update to match OpenCL-Doc & OpenCL-Header PRs:
* KhronosGroup/OpenCL-Headers#265
* KhronosGroup/OpenCL-Docs#850

Still in draft as i've not yet updated an implementation to verify these test changes
  • Loading branch information
EwanC committed Oct 3, 2024
1 parent cd74e02 commit 7655bde
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -52,13 +52,20 @@ bool BasicCommandBufferTest::Skip()
"Unable to query "
"CL_DEVICE_COMMAND_BUFFER_REQUIRED_QUEUE_PROPERTIES_KHR");

cl_command_queue_properties supported_properties;
error = clGetDeviceInfo(
device, CL_DEVICE_COMMAND_BUFFER_SUPPORTED_QUEUE_PROPERTIES_KHR,
sizeof(supported_properties), &supported_properties, NULL);
test_error(error,
"Unable to query "
"CL_DEVICE_COMMAND_BUFFER_SUPPORTED_QUEUE_PROPERTIES_KHR");

cl_command_queue_properties queue_properties;
error = clGetCommandQueueInfo(queue, CL_QUEUE_PROPERTIES,
sizeof(queue_properties), &queue_properties,
NULL);
test_error(error, "Unable to query CL_QUEUE_PROPERTIES");


// Query if device supports simultaneous use
cl_device_command_buffer_capabilities_khr capabilities;
error = clGetDeviceInfo(device, CL_DEVICE_COMMAND_BUFFER_CAPABILITIES_KHR,
Expand All @@ -69,7 +76,7 @@ bool BasicCommandBufferTest::Skip()
&& (capabilities & CL_COMMAND_BUFFER_CAPABILITY_SIMULTANEOUS_USE_KHR)
!= 0;
out_of_order_support =
capabilities & CL_COMMAND_BUFFER_CAPABILITY_OUT_OF_ORDER_KHR;
supported_properties & CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE;

// Skip if queue properties don't contain those required
return required_properties != (required_properties & queue_properties);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,22 @@ struct CommandBufferProfiling : public BasicCommandBufferTest
//--------------------------------------------------------------------------
cl_int SetUp(int elements) override
{
cl_int error = CL_SUCCESS;

cl_command_queue_properties supported_properties;
cl_int error = clGetDeviceInfo(
device, CL_DEVICE_COMMAND_BUFFER_SUPPORTED_QUEUE_PROPERTIES_KHR,
sizeof(supported_properties), &supported_properties, NULL);
test_error(error,
"Unable to query "
"CL_DEVICE_COMMAND_BUFFER_SUPPORTED_QUEUE_PROPERTIES_KHR");

// CL_QUEUE_PROFILING_ENABLE is mandated minimum property returned by
// CL_DEVICE_COMMAND_BUFFER_SUPPORTED_QUEUE_PROPERTIES_KHR
if (!(supported_properties & CL_QUEUE_PROFILING_ENABLE))
{
return TEST_FAIL;
}

queue = clCreateCommandQueue(context, device, CL_QUEUE_PROFILING_ENABLE,
&error);
test_error(error, "clCreateCommandQueue failed");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -217,8 +217,8 @@ struct CreateCommandBufferQueueWithoutMinProperties

// CL_INCOMPATIBLE_COMMAND_QUEUE_KHR if any command-queue in queues is an
// out-of-order command-queue and the device associated with the command-queue
// does not support the CL_COMMAND_BUFFER_CAPABILITY_OUT_OF_ORDER_KHR
// capability.
// does not return CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE from
// CL_DEVICE_COMMAND_BUFFER_SUPPORTED_QUEUE_PROPERTIES_KHR
struct CreateCommandBufferDeviceDoesNotSupportOutOfOderQueue
: public BasicCommandBufferTest
{
Expand Down

0 comments on commit 7655bde

Please sign in to comment.