[Mesa-dev] [PATCH v4] clover: stub missing CL 1.2 functions
Francisco Jerez
currojerez at riseup.net
Fri Aug 7 04:45:56 PDT 2015
"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.
> ---
> 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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: clover_not_supported_until.patch
Type: text/x-diff
Size: 4193 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150807/2d4a4b8e/attachment.patch>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 212 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150807/2d4a4b8e/attachment.sig>
More information about the mesa-dev
mailing list