clover: add trivial clCreateCommandQueueWithProperties implementation

It's not adding 2.0 features, but it's enough to run the 2.0 CTS on top of
clover and probably most CL applications using it.

We just fail if we hit unknown properties and that's probably good enough
until we implement the other bits properly.

Signed-off-by: Karol Herbst <kherbst@redhat.com>
Acked-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Pierre Moreau <dev@pmoreau.org>
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/2370>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/2370>
This commit is contained in:
Karol Herbst 2018-03-12 11:04:38 +01:00 committed by Marge Bot
parent b064697af1
commit 333c9d5bb0
2 changed files with 22 additions and 1 deletions

View file

@ -147,7 +147,7 @@ namespace clover {
NULL, // clEnqueueAcquireEGLObjectsKHR
NULL, // clEnqueueReleaseEGLObjectsKHR
NULL, // clCreateEventFromEGLSyncKHR
NULL, // clCreateCommandQueueWithProperties
clCreateCommandQueueWithProperties,
NULL, // clCreatePipe
NULL, // clGetPipeInfo
NULL, // clSVMAlloc

View file

@ -112,3 +112,24 @@ clFlush(cl_command_queue d_q) try {
} catch (error &e) {
return e.get();
}
CLOVER_API cl_command_queue
clCreateCommandQueueWithProperties(cl_context context, cl_device_id device,
const cl_queue_properties *properties,
cl_int *errcode_ret) try {
cl_command_queue_properties props = 0;
if (properties) {
for (auto idx = 0; properties[idx]; idx += 2) {
if (properties[idx] == CL_QUEUE_PROPERTIES)
props |= properties[idx + 1];
else
throw error(CL_INVALID_VALUE);
}
}
return clCreateCommandQueue(context, device, props, errcode_ret);
} catch (error &e) {
ret_error(errcode_ret, e);
return NULL;
}