[Mesa-dev] [PATCH 2/2] clover: implement clCreateImage?D w/ clCreateImage
Francisco Jerez
currojerez at riseup.net
Fri Sep 18 10:33:40 PDT 2015
Serge Martin <edb+mesa at sigluy.net> writes:
> 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
> + };
> +
Designated initializers are a GNU extension in C++, please use a
standard C++ initializer instead:
| const cl_image_desc desc = { CL_MEM_OBJECT_IMAGE2D, width, height, 0, 0,
| row_pitch, 0, 0, 0, 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
> + };
Same here.
> +
> + 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 at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
-------------- 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/20150918/28976e18/attachment.sig>
More information about the mesa-dev
mailing list