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