remplace clCreateImage2D and clCreateImage3D implementation with call to clCreateImage --- src/gallium/state_trackers/clover/api/memory.cpp | 92 +++++++++--------------- 1 file changed, 32 insertions(+), 60 deletions(-)
diff --git a/src/gallium/state_trackers/clover/api/memory.cpp b/src/gallium/state_trackers/clover/api/memory.cpp index 6e95931..50721d1 100644 --- a/src/gallium/state_trackers/clover/api/memory.cpp +++ b/src/gallium/state_trackers/clover/api/memory.cpp @@ -227,36 +227,22 @@ CLOVER_API cl_mem clCreateImage2D(cl_context d_ctx, cl_mem_flags d_flags, const cl_image_format *format, size_t width, size_t height, size_t row_pitch, - void *host_ptr, cl_int *r_errcode) try { - const cl_mem_flags flags = d_flags | - (d_flags & dev_access_flags ? 0 : CL_MEM_READ_WRITE); - auto &ctx = obj(d_ctx); - - validate_flags(d_flags, all_mem_flags); - - if (!any_of(std::mem_fn(&device::image_support), ctx.devices())) - throw error(CL_INVALID_OPERATION); - - if (!format) - throw error(CL_INVALID_IMAGE_FORMAT_DESCRIPTOR); - - if (width < 1 || height < 1) - throw error(CL_INVALID_IMAGE_SIZE); - - if (bool(host_ptr) != bool(flags & (CL_MEM_USE_HOST_PTR | - CL_MEM_COPY_HOST_PTR))) - throw error(CL_INVALID_HOST_PTR); - - if (!supported_formats(ctx, CL_MEM_OBJECT_IMAGE2D).count(*format)) - throw error(CL_IMAGE_FORMAT_NOT_SUPPORTED); - - ret_error(r_errcode, CL_SUCCESS); - return new image2d(ctx, flags, format, width, height, - row_pitch, host_ptr); - -} catch (error &e) { - ret_error(r_errcode, e); - return NULL; + void *host_ptr, cl_int *r_errcode) { + + const cl_image_desc desc = { + .image_type = CL_MEM_OBJECT_IMAGE2D, + .image_width = width, + .image_height = height, + .image_depth = 0, + .image_array_size = 0, + .image_row_pitch = row_pitch, + .image_slice_pitch = 0, + .num_mip_levels = 0, + .num_samples = 0, + .buffer = NULL + }; + + return clCreateImage(d_ctx, d_flags, format, &desc, host_ptr, r_errcode); } CLOVER_API cl_mem @@ -264,36 +250,22 @@ clCreateImage3D(cl_context d_ctx, cl_mem_flags d_flags, const cl_image_format *format, size_t width, size_t height, size_t depth, size_t row_pitch, size_t slice_pitch, - void *host_ptr, cl_int *r_errcode) try { - const cl_mem_flags flags = d_flags | - (d_flags & dev_access_flags ? 0 : CL_MEM_READ_WRITE); - auto &ctx = obj(d_ctx); - - validate_flags(d_flags, all_mem_flags); - - if (!any_of(std::mem_fn(&device::image_support), ctx.devices())) - throw error(CL_INVALID_OPERATION); - - if (!format) - throw error(CL_INVALID_IMAGE_FORMAT_DESCRIPTOR); - - if (width < 1 || height < 1 || depth < 2) - throw error(CL_INVALID_IMAGE_SIZE); - - if (bool(host_ptr) != bool(flags & (CL_MEM_USE_HOST_PTR | - CL_MEM_COPY_HOST_PTR))) - throw error(CL_INVALID_HOST_PTR); - - if (!supported_formats(ctx, CL_MEM_OBJECT_IMAGE3D).count(*format)) - throw error(CL_IMAGE_FORMAT_NOT_SUPPORTED); - - ret_error(r_errcode, CL_SUCCESS); - return new image3d(ctx, flags, format, width, height, depth, - row_pitch, slice_pitch, host_ptr); - -} catch (error &e) { - ret_error(r_errcode, e); - return NULL; + void *host_ptr, cl_int *r_errcode) { + + const cl_image_desc desc = { + .image_type = CL_MEM_OBJECT_IMAGE3D, + .image_width = width, + .image_height = height, + .image_depth = depth, + .image_array_size = 0, + .image_row_pitch = row_pitch, + .image_slice_pitch = slice_pitch, + .num_mip_levels = 0, + .num_samples = 0, + .buffer = NULL + }; + + return clCreateImage(d_ctx, d_flags, format, &desc, host_ptr, r_errcode); } CLOVER_API cl_int -- 2.5.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev