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:
parent
3298ee546e
commit
0abfbb76ff
|
@ -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;
|
||||
|
|
|
@ -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) {
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue