Mesa (master): clover: add trivial clCreateCommandQueueWithProperties implementation

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Feb 4 18:31:46 UTC 2020


Module: Mesa
Branch: master
Commit: 333c9d5bb054d5ac5518e830b535e8a4f3f80187
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=333c9d5bb054d5ac5518e830b535e8a4f3f80187

Author: Karol Herbst <kherbst at redhat.com>
Date:   Mon Mar 12 11:04:38 2018 +0100

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 at redhat.com>
Acked-by: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
Reviewed-by: Pierre Moreau <dev at pmoreau.org>
Reviewed-by: Francisco Jerez <currojerez at 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>

---

 src/gallium/state_trackers/clover/api/dispatch.cpp |  2 +-
 src/gallium/state_trackers/clover/api/queue.cpp    | 21 +++++++++++++++++++++
 2 files changed, 22 insertions(+), 1 deletion(-)

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;
+}



More information about the mesa-commit mailing list