"Serge Martin (EdB)" <edb+m...@sigluy.net> writes:

> As sugested by Tom a long time ago
> and in order to be able to create Piglit tests
>
> v2:
> replace NOT_SUPPORTED_BY_CL_1_1 macro with an inline function
> remove extra space in clLinkProgram arg
>
> v3:
> use __func__
>
> v4:
> back to a macro, it make more sense to use it with __func__

Instead of annoying you with another nit-pick I've squashed the attached
change into your patch locally -- A warning like "Not supported by X.Y"
with hard-coded X and Y can easily become stale as soon as we start
supporting multiple CL versions, it seems more future-proof to just
say from what version on it will be supported.

I'll push this with my fix as soon as you confirm you're OK with my
change.

> ---
>  src/gallium/state_trackers/clover/api/dispatch.cpp | 10 ++++-----
>  src/gallium/state_trackers/clover/api/kernel.cpp   |  8 +++++++
>  src/gallium/state_trackers/clover/api/memory.cpp   | 25 
> ++++++++++++++++++++--
>  src/gallium/state_trackers/clover/api/program.cpp  | 10 +++++++++
>  src/gallium/state_trackers/clover/api/transfer.cpp | 12 +++++++++++
>  src/gallium/state_trackers/clover/api/util.hpp     |  7 ++++++
>  6 files changed, 65 insertions(+), 7 deletions(-)
>
> diff --git a/src/gallium/state_trackers/clover/api/dispatch.cpp 
> b/src/gallium/state_trackers/clover/api/dispatch.cpp
> index b5a4094..f10babe 100644
> --- a/src/gallium/state_trackers/clover/api/dispatch.cpp
> +++ b/src/gallium/state_trackers/clover/api/dispatch.cpp
> @@ -123,12 +123,12 @@ namespace clover {
>        clCreateImage,
>        clCreateProgramWithBuiltInKernels,
>        clCompileProgram,
> -      NULL, // clLinkProgram
> +      clLinkProgram,
>        clUnloadPlatformCompiler,
> -      NULL, // clGetKernelArgInfo
> -      NULL, // clEnqueueFillBuffer
> -      NULL, // clEnqueueFillImage
> -      NULL, // clEnqueueMigrateMemObjects
> +      clGetKernelArgInfo,
> +      clEnqueueFillBuffer,
> +      clEnqueueFillImage,
> +      clEnqueueMigrateMemObjects,
>        clEnqueueMarkerWithWaitList,
>        clEnqueueBarrierWithWaitList,
>        NULL, // clGetExtensionFunctionAddressForPlatform
> diff --git a/src/gallium/state_trackers/clover/api/kernel.cpp 
> b/src/gallium/state_trackers/clover/api/kernel.cpp
> index 857a152..de3e300 100644
> --- a/src/gallium/state_trackers/clover/api/kernel.cpp
> +++ b/src/gallium/state_trackers/clover/api/kernel.cpp
> @@ -189,6 +189,14 @@ clGetKernelWorkGroupInfo(cl_kernel d_kern, cl_device_id 
> d_dev,
>     return CL_INVALID_DEVICE;
>  }
>  
> +CLOVER_API cl_int
> +clGetKernelArgInfo(cl_kernel d_kern,
> +                   cl_uint idx, cl_kernel_arg_info param,
> +                   size_t size, void *r_buf, size_t *r_size) {
> +   CLOVER_NOT_SUPPORTED_BY("1.1");
> +   return CL_KERNEL_ARG_INFO_NOT_AVAILABLE;
> +}
> +
>  namespace {
>     ///
>     /// Common argument checking shared by kernel invocation commands.
> diff --git a/src/gallium/state_trackers/clover/api/memory.cpp 
> b/src/gallium/state_trackers/clover/api/memory.cpp
> index 3ff6ba0..42e8c30 100644
> --- a/src/gallium/state_trackers/clover/api/memory.cpp
> +++ b/src/gallium/state_trackers/clover/api/memory.cpp
> @@ -358,8 +358,29 @@ clCreateImage(cl_context d_ctx, cl_mem_flags flags,
>                const cl_image_desc *image_desc,
>                void *host_ptr, cl_int *r_errcode) {
>     // This function was added in OpenCL 1.2
> -   std::cerr << "CL user error: clCreateImage() not supported by OpenCL 
> 1.1." <<
> -                std::endl;
> +   CLOVER_NOT_SUPPORTED_BY("1.1");
>     ret_error(r_errcode, CL_INVALID_OPERATION);
>     return NULL;
>  }
> +
> +CLOVER_API cl_int
> +clEnqueueFillBuffer(cl_command_queue command_queue, cl_mem buffer,
> +                    const void *pattern, size_t pattern_size,
> +                    size_t offset, size_t size,
> +                    cl_uint num_events_in_wait_list,
> +                    const cl_event *event_wait_list,
> +                    cl_event *event) {
> +   CLOVER_NOT_SUPPORTED_BY("1.1");
> +   return CL_INVALID_VALUE;
> +}
> +
> +CLOVER_API cl_int
> +clEnqueueFillImage(cl_command_queue command_queue, cl_mem image,
> +                   const void *fill_color,
> +                   const size_t *origin, const size_t *region,
> +                   cl_uint num_events_in_wait_list,
> +                   const cl_event *event_wait_list,
> +                   cl_event *event) {
> +   CLOVER_NOT_SUPPORTED_BY("1.1");
> +   return CL_INVALID_VALUE;
> +}
> diff --git a/src/gallium/state_trackers/clover/api/program.cpp 
> b/src/gallium/state_trackers/clover/api/program.cpp
> index e9b1f38..0110789 100644
> --- a/src/gallium/state_trackers/clover/api/program.cpp
> +++ b/src/gallium/state_trackers/clover/api/program.cpp
> @@ -231,6 +231,16 @@ clCompileProgram(cl_program d_prog, cl_uint num_devs,
>     return e.get();
>  }
>  
> +CLOVER_API cl_program
> +clLinkProgram(cl_context d_ctx, cl_uint num_devs, const cl_device_id *d_devs,
> +              const char *p_opts, cl_uint num_progs, const cl_program 
> *d_progs,
> +              void (*pfn_notify)(cl_program, void *), void *user_data,
> +              cl_int *r_errcode) {
> +   CLOVER_NOT_SUPPORTED_BY("1.1");
> +   ret_error(r_errcode, CL_LINKER_NOT_AVAILABLE);
> +   return NULL;
> +}
> +
>  CLOVER_API cl_int
>  clUnloadCompiler() {
>     return CL_SUCCESS;
> diff --git a/src/gallium/state_trackers/clover/api/transfer.cpp 
> b/src/gallium/state_trackers/clover/api/transfer.cpp
> index fdb9405..f5b8e2b 100644
> --- a/src/gallium/state_trackers/clover/api/transfer.cpp
> +++ b/src/gallium/state_trackers/clover/api/transfer.cpp
> @@ -726,3 +726,15 @@ clEnqueueUnmapMemObject(cl_command_queue d_q, cl_mem 
> d_mem, void *ptr,
>  } catch (error &e) {
>     return e.get();
>  }
> +
> +CLOVER_API cl_int
> +clEnqueueMigrateMemObjects(cl_command_queue command_queue,
> +                           cl_uint num_mem_objects,
> +                           const cl_mem *mem_objects,
> +                           cl_mem_migration_flags flags,
> +                           cl_uint num_events_in_wait_list,
> +                           const cl_event *event_wait_list,
> +                           cl_event *event) {
> +   CLOVER_NOT_SUPPORTED_BY("1.1");
> +   return CL_INVALID_VALUE;
> +}
> diff --git a/src/gallium/state_trackers/clover/api/util.hpp 
> b/src/gallium/state_trackers/clover/api/util.hpp
> index 918df61..caf6cb3 100644
> --- a/src/gallium/state_trackers/clover/api/util.hpp
> +++ b/src/gallium/state_trackers/clover/api/util.hpp
> @@ -38,6 +38,13 @@
>  #define CLOVER_ICD_API PUBLIC
>  #endif
>  
> +#define CLOVER_NOT_SUPPORTED_BY(version)            \
> +do {                                                \
> +   std::cerr << "CL user error: " << __func__       \
> +      << "() not supported by OpenCL " << (version) \
> +      << std::endl;                                 \
> +} while (0)
> +
>  namespace clover {
>     ///
>     /// Return an error code in \a p if non-zero.
> -- 
> 2.5.0

diff --git a/src/gallium/state_trackers/clover/api/kernel.cpp b/src/gallium/state_trackers/clover/api/kernel.cpp
index de3e300..73ba34a 100644
--- a/src/gallium/state_trackers/clover/api/kernel.cpp
+++ b/src/gallium/state_trackers/clover/api/kernel.cpp
@@ -193,7 +193,7 @@ CLOVER_API cl_int
 clGetKernelArgInfo(cl_kernel d_kern,
                    cl_uint idx, cl_kernel_arg_info param,
                    size_t size, void *r_buf, size_t *r_size) {
-   CLOVER_NOT_SUPPORTED_BY("1.1");
+   CLOVER_NOT_SUPPORTED_UNTIL("1.2");
    return CL_KERNEL_ARG_INFO_NOT_AVAILABLE;
 }
 
diff --git a/src/gallium/state_trackers/clover/api/memory.cpp b/src/gallium/state_trackers/clover/api/memory.cpp
index 42e8c30..1efb95b 100644
--- a/src/gallium/state_trackers/clover/api/memory.cpp
+++ b/src/gallium/state_trackers/clover/api/memory.cpp
@@ -357,8 +357,7 @@ clCreateImage(cl_context d_ctx, cl_mem_flags flags,
               const cl_image_format *format,
               const cl_image_desc *image_desc,
               void *host_ptr, cl_int *r_errcode) {
-   // This function was added in OpenCL 1.2
-   CLOVER_NOT_SUPPORTED_BY("1.1");
+   CLOVER_NOT_SUPPORTED_UNTIL("1.2");
    ret_error(r_errcode, CL_INVALID_OPERATION);
    return NULL;
 }
@@ -370,7 +369,7 @@ clEnqueueFillBuffer(cl_command_queue command_queue, cl_mem buffer,
                     cl_uint num_events_in_wait_list,
                     const cl_event *event_wait_list,
                     cl_event *event) {
-   CLOVER_NOT_SUPPORTED_BY("1.1");
+   CLOVER_NOT_SUPPORTED_UNTIL("1.2");
    return CL_INVALID_VALUE;
 }
 
@@ -381,6 +380,6 @@ clEnqueueFillImage(cl_command_queue command_queue, cl_mem image,
                    cl_uint num_events_in_wait_list,
                    const cl_event *event_wait_list,
                    cl_event *event) {
-   CLOVER_NOT_SUPPORTED_BY("1.1");
+   CLOVER_NOT_SUPPORTED_UNTIL("1.2");
    return CL_INVALID_VALUE;
 }
diff --git a/src/gallium/state_trackers/clover/api/program.cpp b/src/gallium/state_trackers/clover/api/program.cpp
index 0110789..27ca2ef 100644
--- a/src/gallium/state_trackers/clover/api/program.cpp
+++ b/src/gallium/state_trackers/clover/api/program.cpp
@@ -236,7 +236,7 @@ clLinkProgram(cl_context d_ctx, cl_uint num_devs, const cl_device_id *d_devs,
               const char *p_opts, cl_uint num_progs, const cl_program *d_progs,
               void (*pfn_notify)(cl_program, void *), void *user_data,
               cl_int *r_errcode) {
-   CLOVER_NOT_SUPPORTED_BY("1.1");
+   CLOVER_NOT_SUPPORTED_UNTIL("1.2");
    ret_error(r_errcode, CL_LINKER_NOT_AVAILABLE);
    return NULL;
 }
diff --git a/src/gallium/state_trackers/clover/api/transfer.cpp b/src/gallium/state_trackers/clover/api/transfer.cpp
index f5b8e2b..f704625 100644
--- a/src/gallium/state_trackers/clover/api/transfer.cpp
+++ b/src/gallium/state_trackers/clover/api/transfer.cpp
@@ -735,6 +735,6 @@ clEnqueueMigrateMemObjects(cl_command_queue command_queue,
                            cl_uint num_events_in_wait_list,
                            const cl_event *event_wait_list,
                            cl_event *event) {
-   CLOVER_NOT_SUPPORTED_BY("1.1");
+   CLOVER_NOT_SUPPORTED_UNTIL("1.2");
    return CL_INVALID_VALUE;
 }
diff --git a/src/gallium/state_trackers/clover/api/util.hpp b/src/gallium/state_trackers/clover/api/util.hpp
index caf6cb3..4740768 100644
--- a/src/gallium/state_trackers/clover/api/util.hpp
+++ b/src/gallium/state_trackers/clover/api/util.hpp
@@ -38,12 +38,12 @@
 #define CLOVER_ICD_API PUBLIC
 #endif
 
-#define CLOVER_NOT_SUPPORTED_BY(version)            \
-do {                                                \
-   std::cerr << "CL user error: " << __func__       \
-      << "() not supported by OpenCL " << (version) \
-      << std::endl;                                 \
-} while (0)
+#define CLOVER_NOT_SUPPORTED_UNTIL(version)                    \
+   do {                                                        \
+      std::cerr << "CL user error: " << __func__               \
+                << "() requires OpenCL version" << (version)   \
+                << " or greater." << std::endl;                \
+   } while (0)
 
 namespace clover {
    ///

Attachment: signature.asc
Description: PGP signature

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to