Mesa (master): clover: Add clCreateProgramWithBuiltInKernels.

Francisco Jerez currojerez at kemper.freedesktop.org
Mon Jul 28 12:49:02 UTC 2014


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

Author: EdB <edb+mesa at sigluy.net>
Date:   Sun Jul 27 23:07:38 2014 +0200

clover: Add clCreateProgramWithBuiltInKernels.

[ Francisco Jerez: Check for devices not associated with the specified
  context.  Style fix. ]

Reviewed-by: Francisco Jerez <currojerez at riseup.net>

---

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

diff --git a/src/gallium/state_trackers/clover/api/dispatch.cpp b/src/gallium/state_trackers/clover/api/dispatch.cpp
index 488e654..43b5537 100644
--- a/src/gallium/state_trackers/clover/api/dispatch.cpp
+++ b/src/gallium/state_trackers/clover/api/dispatch.cpp
@@ -121,7 +121,7 @@ namespace clover {
       clRetainDevice,
       clReleaseDevice,
       clCreateImage,
-      NULL, // clCreateProgramWithBuiltInKernels
+      clCreateProgramWithBuiltInKernels,
       NULL, // clCompileProgram
       NULL, // clLinkProgram
       NULL, // clUnloadPlatformCompiler
diff --git a/src/gallium/state_trackers/clover/api/program.cpp b/src/gallium/state_trackers/clover/api/program.cpp
index a14baa3..293a61f 100644
--- a/src/gallium/state_trackers/clover/api/program.cpp
+++ b/src/gallium/state_trackers/clover/api/program.cpp
@@ -106,6 +106,28 @@ clCreateProgramWithBinary(cl_context d_ctx, cl_uint n,
    return NULL;
 }
 
+CLOVER_API cl_program
+clCreateProgramWithBuiltInKernels(cl_context d_ctx, cl_uint n,
+                                  const cl_device_id *d_devs,
+                                  const char *kernel_names,
+                                  cl_int *r_errcode) try {
+   auto &ctx = obj(d_ctx);
+   auto devs = objs(d_devs, n);
+
+   if (any_of([&](const device &dev) {
+            return !count(dev, ctx.devices());
+         }, devs))
+      throw error(CL_INVALID_DEVICE);
+
+   // No currently supported built-in kernels.
+   throw error(CL_INVALID_VALUE);
+
+} catch (error &e) {
+   ret_error(r_errcode, e);
+   return NULL;
+}
+
+
 CLOVER_API cl_int
 clRetainProgram(cl_program d_prog) try {
    obj(d_prog).retain();




More information about the mesa-commit mailing list