Mesa (main): clover: implement CL_IMAGE_BUFFER
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Mon Oct 18 02:55:11 UTC 2021
Module: Mesa
Branch: main
Commit: 0abfbb76ffb949af71c79db5354e36a639f01d0f
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0abfbb76ffb949af71c79db5354e36a639f01d0f
Author: Aaron Watry <awatry at gmail.com>
Date: Sun Oct 25 18:32:27 2020 +0100
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 at redhat.com>
Reviewed-by: Dave Airlie <airlied at redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13401>
---
src/gallium/frontends/clover/api/memory.cpp | 4 ++++
src/gallium/frontends/clover/core/memory.cpp | 16 +++++++++++-----
src/gallium/frontends/clover/core/memory.hpp | 4 +++-
3 files changed, 18 insertions(+), 6 deletions(-)
diff --git a/src/gallium/frontends/clover/api/memory.cpp b/src/gallium/frontends/clover/api/memory.cpp
index f56df7b4d45..4ce0d3c6710 100644
--- a/src/gallium/frontends/clover/api/memory.cpp
+++ b/src/gallium/frontends/clover/api/memory.cpp
@@ -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;
diff --git a/src/gallium/frontends/clover/core/memory.cpp b/src/gallium/frontends/clover/core/memory.cpp
index c75da29fcce..251fad26f50 100644
--- a/src/gallium/frontends/clover/core/memory.cpp
+++ b/src/gallium/frontends/clover/core/memory.cpp
@@ -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) {
}
diff --git a/src/gallium/frontends/clover/core/memory.hpp b/src/gallium/frontends/clover/core/memory.hpp
index 1c11ef98573..38cda7ce749 100644
--- a/src/gallium/frontends/clover/core/memory.hpp
+++ b/src/gallium/frontends/clover/core/memory.hpp
@@ -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;
More information about the mesa-commit
mailing list