Commit a97f1b69 authored by Serge Martin's avatar Serge Martin Committed by Francisco Jerez
Browse files

clover: Stub missing CL 1.2 functions.



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__

[ Francisco Jerez: Rename to CLOVER_NOT_SUPPORTED_UNTIL and pass the
  minimum API version required by the entry point so the error
  messages don't become stale when support for additional CL versions
  is introduced. ]
Reviewed-by: Francisco Jerez's avatarFrancisco Jerez <currojerez@riseup.net>
parent 0508861f
......@@ -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
......
......@@ -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_UNTIL("1.2");
return CL_KERNEL_ARG_INFO_NOT_AVAILABLE;
}
namespace {
///
/// Common argument checking shared by kernel invocation commands.
......
......@@ -357,9 +357,29 @@ 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
std::cerr << "CL user error: clCreateImage() not supported by OpenCL 1.1." <<
std::endl;
CLOVER_NOT_SUPPORTED_UNTIL("1.2");
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_UNTIL("1.2");
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_UNTIL("1.2");
return CL_INVALID_VALUE;
}
......@@ -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_UNTIL("1.2");
ret_error(r_errcode, CL_LINKER_NOT_AVAILABLE);
return NULL;
}
CLOVER_API cl_int
clUnloadCompiler() {
return CL_SUCCESS;
......
......@@ -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_UNTIL("1.2");
return CL_INVALID_VALUE;
}
......@@ -38,6 +38,13 @@
#define CLOVER_ICD_API PUBLIC
#endif
#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 {
///
/// Return an error code in \a p if non-zero.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment