clover: implement CL_IMAGE_BUFFER

We will also need it to implement image1Dbuffer_t

v2 (Karol Herbst): extracted from other commit

Signed-off-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13401>
This commit is contained in:
Aaron Watry 2020-10-25 18:32:27 +01:00 committed by Dave Airlie
parent 3298ee546e
commit 0abfbb76ff
3 changed files with 18 additions and 6 deletions

View File

@ -458,6 +458,10 @@ clGetImageInfo(cl_mem d_mem, cl_image_info param,
buf.as_scalar<size_t>() = img.array_size();
break;
case CL_IMAGE_BUFFER:
buf.as_scalar<cl_mem>() = img.buffer();
break;
case CL_IMAGE_NUM_MIP_LEVELS:
buf.as_scalar<cl_uint>() = 0;
break;

View File

@ -173,10 +173,11 @@ image::image(clover::context &ctx,
const cl_image_format *format,
size_t width, size_t height, size_t depth, size_t array_size,
size_t row_pitch, size_t slice_pitch, size_t size,
void *host_ptr) :
void *host_ptr, cl_mem buffer) :
memory_obj(ctx, properties, flags, size, host_ptr),
_format(*format), _width(width), _height(height), _depth(depth),
_row_pitch(row_pitch), _slice_pitch(slice_pitch), _array_size(array_size) {
_row_pitch(row_pitch), _slice_pitch(slice_pitch), _array_size(array_size),
_buffer(buffer) {
}
resource &
@ -254,6 +255,11 @@ image::array_size() const {
return _array_size;
}
cl_mem
image::buffer() const {
return _buffer;
}
image1d::image1d(clover::context &ctx,
std::vector<cl_mem_properties> properties,
cl_mem_flags flags,
@ -261,7 +267,7 @@ image1d::image1d(clover::context &ctx,
size_t width, size_t row_pitch,
void *host_ptr) :
basic_image(ctx, properties, flags, format, width, 1, 1, 0,
row_pitch, 0, row_pitch, host_ptr) {
row_pitch, 0, row_pitch, host_ptr, nullptr) {
}
image2d::image2d(clover::context &ctx,
@ -271,7 +277,7 @@ image2d::image2d(clover::context &ctx,
size_t height, size_t row_pitch,
void *host_ptr) :
basic_image(ctx, properties, flags, format, width, height, 1, 0,
row_pitch, 0, height * row_pitch, host_ptr) {
row_pitch, 0, height * row_pitch, host_ptr, nullptr) {
}
image3d::image3d(clover::context &ctx,
@ -283,5 +289,5 @@ image3d::image3d(clover::context &ctx,
void *host_ptr) :
basic_image(ctx, properties, flags, format, width, height, depth, 0,
row_pitch, slice_pitch, depth * slice_pitch,
host_ptr) {
host_ptr, nullptr) {
}

View File

@ -140,7 +140,7 @@ namespace clover {
const cl_image_format *format,
size_t width, size_t height, size_t depth, size_t array_size,
size_t row_pitch, size_t slice_pitch, size_t size,
void *host_ptr);
void *host_ptr, cl_mem buffer);
public:
cl_image_format format() const;
@ -151,6 +151,7 @@ namespace clover {
size_t row_pitch() const;
size_t slice_pitch() const;
size_t array_size() const;
cl_mem buffer() const;
virtual clover::resource &
resource_in(command_queue &q);
virtual clover::resource &
@ -169,6 +170,7 @@ namespace clover {
size_t _row_pitch;
size_t _slice_pitch;
size_t _array_size;
cl_mem _buffer;
std::map<device *,
std::unique_ptr<root_resource>> resources;
std::mutex resources_mtx;