diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gallium/state_trackers/clover/api/dispatch.cpp | 2 | ||||
-rw-r--r-- | src/gallium/state_trackers/clover/api/queue.cpp | 21 |
2 files changed, 22 insertions, 1 deletions
diff --git a/src/gallium/state_trackers/clover/api/dispatch.cpp b/src/gallium/state_trackers/clover/api/dispatch.cpp index 5671fe39814..a2d270ea05b 100644 --- a/src/gallium/state_trackers/clover/api/dispatch.cpp +++ b/src/gallium/state_trackers/clover/api/dispatch.cpp @@ -147,7 +147,7 @@ namespace clover { NULL, // clEnqueueAcquireEGLObjectsKHR NULL, // clEnqueueReleaseEGLObjectsKHR NULL, // clCreateEventFromEGLSyncKHR - NULL, // clCreateCommandQueueWithProperties + clCreateCommandQueueWithProperties, NULL, // clCreatePipe NULL, // clGetPipeInfo NULL, // clSVMAlloc diff --git a/src/gallium/state_trackers/clover/api/queue.cpp b/src/gallium/state_trackers/clover/api/queue.cpp index 06a28638002..65b271b216f 100644 --- a/src/gallium/state_trackers/clover/api/queue.cpp +++ b/src/gallium/state_trackers/clover/api/queue.cpp @@ -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; +} |