[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