On 11/25/2016 03:38 PM, Francisco Jerez wrote: > Edward O'Callaghan <[email protected]> writes: > >> Signed-off-by: Edward O'Callaghan <[email protected]> >> --- >> src/gallium/state_trackers/clover/api/memory.cpp | 17 ++++++++++++++++- >> src/gallium/state_trackers/clover/core/memory.cpp | 14 ++++++++++++++ >> src/gallium/state_trackers/clover/core/memory.hpp | 11 +++++++++++ >> 3 files changed, 41 insertions(+), 1 deletion(-) >> >> diff --git a/src/gallium/state_trackers/clover/api/memory.cpp >> b/src/gallium/state_trackers/clover/api/memory.cpp >> index 9b3cd8b..58f56d1 100644 >> --- a/src/gallium/state_trackers/clover/api/memory.cpp >> +++ b/src/gallium/state_trackers/clover/api/memory.cpp >> @@ -181,6 +181,22 @@ clCreateImage(cl_context d_ctx, cl_mem_flags d_flags, >> desc->image_width, desc->image_height, >> desc->image_row_pitch, host_ptr); >> >> + case CL_MEM_OBJECT_IMAGE2D_ARRAY: >> + if (!desc->image_width || !desc->image_height) >> + throw error(CL_INVALID_IMAGE_SIZE); >> + >> + if (all_of([=](const device &dev) { >> + const size_t max = 1 << dev.max_image_levels_2d(); >> + return (desc->image_width > max || >> + desc->image_height > max); >> + }, ctx.devices())) >> + throw error(CL_INVALID_IMAGE_SIZE); >> + >> + return new image2d_array(ctx, flags, format, >> + desc->image_width, desc->image_height, >> + desc->image_array_size, >> desc->image_slice_pitch, >> + host_ptr); >> + >> case CL_MEM_OBJECT_IMAGE3D: >> if (!desc->image_width || !desc->image_height || !desc->image_depth) >> throw error(CL_INVALID_IMAGE_SIZE); >> @@ -201,7 +217,6 @@ clCreateImage(cl_context d_ctx, cl_mem_flags d_flags, >> case CL_MEM_OBJECT_IMAGE1D: >> case CL_MEM_OBJECT_IMAGE1D_ARRAY: >> case CL_MEM_OBJECT_IMAGE1D_BUFFER: >> - case CL_MEM_OBJECT_IMAGE2D_ARRAY: >> // XXX - Not implemented. >> throw error(CL_IMAGE_FORMAT_NOT_SUPPORTED); >> >> diff --git a/src/gallium/state_trackers/clover/core/memory.cpp >> b/src/gallium/state_trackers/clover/core/memory.cpp >> index b852e68..de1862b 100644 >> --- a/src/gallium/state_trackers/clover/core/memory.cpp >> +++ b/src/gallium/state_trackers/clover/core/memory.cpp >> @@ -198,6 +198,20 @@ image2d::type() const { >> return CL_MEM_OBJECT_IMAGE2D; >> } >> >> +image2d_array::image2d_array(clover::context &ctx, cl_mem_flags flags, >> + const cl_image_format *format, >> + size_t width, size_t height, >> + size_t array_size, size_t slice_pitch, >> + void *host_ptr) : >> + image(ctx, flags, format, width, height, 1, >> + 0, slice_pitch, slice_pitch * array_size, host_ptr) { >> +} > > Seems like you aren't passing the row pitch as argument, and the array > size is getting lost so you won't be able to recover it in order to > implement memory transfer functions and CL image queries. So I should extend the image base class with a private _array_size state and a const getter method also, would that be reasonable?
>
>> +
>> +cl_mem_object_type
>> +image2d_array::type() const {
>> + return CL_MEM_OBJECT_IMAGE2D_ARRAY;
>> +}
>> +
>> image3d::image3d(clover::context &ctx, cl_mem_flags flags,
>> const cl_image_format *format,
>> size_t width, size_t height, size_t depth,
>> diff --git a/src/gallium/state_trackers/clover/core/memory.hpp
>> b/src/gallium/state_trackers/clover/core/memory.hpp
>> index bd6da6b..1a3e8c9 100644
>> --- a/src/gallium/state_trackers/clover/core/memory.hpp
>> +++ b/src/gallium/state_trackers/clover/core/memory.hpp
>> @@ -144,6 +144,17 @@ namespace clover {
>> virtual cl_mem_object_type type() const;
>> };
>>
>> + class image2d_array : public image {
>> + public:
>> + image2d_array(clover::context &ctx, cl_mem_flags flags,
>> + const cl_image_format *format,
>> + size_t width, size_t height,
>> + size_t array_size, size_t slice_pitch,
>> + void *host_ptr);
>> +
>> + virtual cl_mem_object_type type() const;
>> + };
>> +
>> class image3d : public image {
>> public:
>> image3d(clover::context &ctx, cl_mem_flags flags,
>> --
>> 2.7.4
>>
>> _______________________________________________
>> mesa-dev mailing list
>> [email protected]
>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
signature.asc
Description: OpenPGP digital signature
_______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
