"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 { ///
signature.asc
Description: PGP signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev