[Mesa-dev] [PATCH 4/4] clover: Implement 'CL_MEM_OBJECT_IMAGE1D_ARRAY'
Francisco Jerez
currojerez at riseup.net
Fri Nov 25 04:39:54 UTC 2016
Edward O'Callaghan <funfunctor at folklore1984.net> writes:
> Signed-off-by: Edward O'Callaghan <funfunctor at folklore1984.net>
> ---
> src/gallium/state_trackers/clover/api/memory.cpp | 13 +++++++++----
> src/gallium/state_trackers/clover/core/memory.cpp | 14 ++++++++++++++
> src/gallium/state_trackers/clover/core/memory.hpp | 11 +++++++++++
> 3 files changed, 34 insertions(+), 4 deletions(-)
>
> diff --git a/src/gallium/state_trackers/clover/api/memory.cpp b/src/gallium/state_trackers/clover/api/memory.cpp
> index 7aee417..9b3b70e 100644
> --- a/src/gallium/state_trackers/clover/api/memory.cpp
> +++ b/src/gallium/state_trackers/clover/api/memory.cpp
> @@ -182,6 +182,15 @@ clCreateImage(cl_context d_ctx, cl_mem_flags d_flags,
> desc->image_width,
> desc->image_row_pitch, host_ptr);
>
> + case CL_MEM_OBJECT_IMAGE1D_ARRAY:
> + if (!desc->image_width)
> + throw error(CL_INVALID_IMAGE_SIZE);
> +
Missing width and array size checking.
> + return new image1d_array(ctx, flags, format,
> + desc->image_width,
> + desc->image_array_size, desc->image_slice_pitch,
> + host_ptr);
> +
> case CL_MEM_OBJECT_IMAGE2D:
> if (!desc->image_width || !desc->image_height)
> throw error(CL_INVALID_IMAGE_SIZE);
> @@ -230,10 +239,6 @@ clCreateImage(cl_context d_ctx, cl_mem_flags d_flags,
> desc->image_depth, desc->image_row_pitch,
> desc->image_slice_pitch, host_ptr);
>
> - case CL_MEM_OBJECT_IMAGE1D_ARRAY:
> - // XXX - Not implemented.
> - throw error(CL_IMAGE_FORMAT_NOT_SUPPORTED);
> -
> default:
> throw error(CL_INVALID_IMAGE_DESCRIPTOR);
> }
> diff --git a/src/gallium/state_trackers/clover/core/memory.cpp b/src/gallium/state_trackers/clover/core/memory.cpp
> index 94b1273..517d53f 100644
> --- a/src/gallium/state_trackers/clover/core/memory.cpp
> +++ b/src/gallium/state_trackers/clover/core/memory.cpp
> @@ -211,6 +211,20 @@ image1d_buffer::type() const {
> return CL_MEM_OBJECT_IMAGE1D_BUFFER;
> }
>
> +image1d_array::image1d_array(clover::context &ctx, cl_mem_flags flags,
> + const cl_image_format *format,
> + size_t width,
> + size_t array_size, size_t slice_pitch,
> + void *host_ptr) :
> + image(ctx, flags, format, width, 0, 1,
> + 0, slice_pitch, slice_pitch * array_size, host_ptr) {
Set unused height argument to one, and make sure we don't lose track of
the array size of the image.
> +}
> +
> +cl_mem_object_type
> +image1d_array::type() const {
> + return CL_MEM_OBJECT_IMAGE1D_ARRAY;
> +}
> +
> image2d::image2d(clover::context &ctx, cl_mem_flags flags,
> const cl_image_format *format, size_t width,
> size_t height, size_t row_pitch,
> diff --git a/src/gallium/state_trackers/clover/core/memory.hpp b/src/gallium/state_trackers/clover/core/memory.hpp
> index 1394fe6..a54db83 100644
> --- a/src/gallium/state_trackers/clover/core/memory.hpp
> +++ b/src/gallium/state_trackers/clover/core/memory.hpp
> @@ -154,6 +154,17 @@ namespace clover {
> virtual cl_mem_object_type type() const;
> };
>
> + class image1d_array : public image {
> + public:
> + image1d_array(clover::context &ctx, cl_mem_flags flags,
> + const cl_image_format *format,
> + size_t width,
> + size_t array_size, size_t slice_pitch,
> + void *host_ptr);
> +
> + virtual cl_mem_object_type type() const;
> + };
> +
> class image2d : public image {
> public:
> image2d(clover::context &ctx, cl_mem_flags flags,
> --
> 2.7.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://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: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20161124/8aa49f2c/attachment.sig>
More information about the mesa-dev
mailing list