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 <currojerez@riseup.net>
This commit is contained in:
committed by
Francisco Jerez
parent
0508861f29
commit
a97f1b697b
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user