clover: Add checks for image support to the image functions v2
Most image functions are required to return a CL_INVALID_OPERATION error when used on devices without image support. v2: - Simplified the code Reviewed-by: Francisco Jerez <currojerez@riseup.net>
This commit is contained in:
@@ -106,6 +106,9 @@ clCreateImage2D(cl_context d_ctx, cl_mem_flags flags,
|
||||
void *host_ptr, cl_int *r_errcode) try {
|
||||
auto &ctx = obj(d_ctx);
|
||||
|
||||
if (!any_of(std::mem_fn(&device::image_support), ctx.devices()))
|
||||
throw error(CL_INVALID_OPERATION);
|
||||
|
||||
if (flags & ~(CL_MEM_READ_WRITE | CL_MEM_WRITE_ONLY | CL_MEM_READ_ONLY |
|
||||
CL_MEM_USE_HOST_PTR | CL_MEM_ALLOC_HOST_PTR |
|
||||
CL_MEM_COPY_HOST_PTR))
|
||||
@@ -141,6 +144,9 @@ clCreateImage3D(cl_context d_ctx, cl_mem_flags flags,
|
||||
void *host_ptr, cl_int *r_errcode) try {
|
||||
auto &ctx = obj(d_ctx);
|
||||
|
||||
if (!any_of(std::mem_fn(&device::image_support), ctx.devices()))
|
||||
throw error(CL_INVALID_OPERATION);
|
||||
|
||||
if (flags & ~(CL_MEM_READ_WRITE | CL_MEM_WRITE_ONLY | CL_MEM_READ_ONLY |
|
||||
CL_MEM_USE_HOST_PTR | CL_MEM_ALLOC_HOST_PTR |
|
||||
CL_MEM_COPY_HOST_PTR))
|
||||
|
||||
@@ -31,6 +31,9 @@ clCreateSampler(cl_context d_ctx, cl_bool norm_mode,
|
||||
cl_int *r_errcode) try {
|
||||
auto &ctx = obj(d_ctx);
|
||||
|
||||
if (!any_of(std::mem_fn(&device::image_support), ctx.devices()))
|
||||
throw error(CL_INVALID_OPERATION);
|
||||
|
||||
ret_error(r_errcode, CL_SUCCESS);
|
||||
return new sampler(ctx, norm_mode, addr_mode, filter_mode);
|
||||
|
||||
|
||||
@@ -101,6 +101,9 @@ namespace {
|
||||
const vector_t &orig, const vector_t ®ion) {
|
||||
vector_t size = { img.width(), img.height(), img.depth() };
|
||||
|
||||
if (!q.device().image_support())
|
||||
throw error(CL_INVALID_OPERATION);
|
||||
|
||||
if (img.context() != q.context())
|
||||
throw error(CL_INVALID_CONTEXT);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user