[Mesa-dev] [PATCH v4] clover: stub missing CL 1.2 functions
Serge Martin
edb+mesa at sigluy.net
Fri Aug 7 04:56:49 PDT 2015
On Friday 07 August 2015 14:45:56 Francisco Jerez wrote:
> "Serge Martin (EdB)" <edb+mesa at 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.
It's ok for me. Thanks
EdB
>
> > ---
> >
> > 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.
More information about the mesa-dev
mailing list