Mesa (main): clover/image: add dimension property

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Oct 18 02:55:12 UTC 2021


Module: Mesa
Branch: main
Commit: 91ff83b6c871dcfc33629924a7ebfb0d8b17be98
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=91ff83b6c871dcfc33629924a7ebfb0d8b17be98

Author: Aaron Watry <awatry at gmail.com>
Date:   Sun Oct 11 21:34:24 2020 +0200

clover/image: add dimension property

With that we can fix CL_IMAGE_HEIGHT and CL_IMAGE_DEPTH.

v2 (Karol Herbst): split up commit
   (Serge Martin): convert to virtual method

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.hpp | 18 +++++++++++-------
 2 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/src/gallium/frontends/clover/api/memory.cpp b/src/gallium/frontends/clover/api/memory.cpp
index f80beff216c..03f1c48b8d6 100644
--- a/src/gallium/frontends/clover/api/memory.cpp
+++ b/src/gallium/frontends/clover/api/memory.cpp
@@ -498,11 +498,11 @@ clGetImageInfo(cl_mem d_mem, cl_image_info param,
       break;
 
    case CL_IMAGE_HEIGHT:
-      buf.as_scalar<size_t>() = img.height();
+      buf.as_scalar<size_t>() = img.dimensions() > 1 ? img.height() : 0;
       break;
 
    case CL_IMAGE_DEPTH:
-      buf.as_scalar<size_t>() = img.depth();
+      buf.as_scalar<size_t>() = img.dimensions() > 2 ? img.depth() : 0;
       break;
 
    case CL_IMAGE_ARRAY_SIZE:
diff --git a/src/gallium/frontends/clover/core/memory.hpp b/src/gallium/frontends/clover/core/memory.hpp
index f05a261332b..d6a170bcfb9 100644
--- a/src/gallium/frontends/clover/core/memory.hpp
+++ b/src/gallium/frontends/clover/core/memory.hpp
@@ -144,6 +144,7 @@ namespace clover {
 
    public:
       cl_image_format format() const;
+      virtual cl_uint dimensions() const = 0;
       size_t width() const;
       size_t height() const;
       size_t depth() const;
@@ -176,16 +177,19 @@ namespace clover {
       std::mutex resources_mtx;
    };
 
-   template<cl_mem_object_type Type>
+   template<cl_mem_object_type Type, cl_uint Dim>
    class basic_image : public image {
    public:
       using image::image;
       virtual cl_mem_object_type type() const {
          return Type;
       }
+      virtual cl_uint dimensions() const {
+         return Dim;
+      }
    };
 
-   class image1d : public basic_image<CL_MEM_OBJECT_IMAGE1D> {
+   class image1d : public basic_image<CL_MEM_OBJECT_IMAGE1D, 1> {
    public:
       image1d(clover::context &ctx,
               std::vector<cl_mem_properties> properties,
@@ -195,7 +199,7 @@ namespace clover {
               void *host_ptr);
    };
 
-   class image1d_buffer : public basic_image<CL_MEM_OBJECT_IMAGE1D_BUFFER> {
+   class image1d_buffer : public basic_image<CL_MEM_OBJECT_IMAGE1D_BUFFER, 1> {
    public:
       image1d_buffer(clover::context &ctx,
                      std::vector<cl_mem_properties> properties,
@@ -205,7 +209,7 @@ namespace clover {
                      void *host_ptr, cl_mem buffer);
    };
 
-   class image1d_array : public basic_image<CL_MEM_OBJECT_IMAGE1D_ARRAY> {
+   class image1d_array : public basic_image<CL_MEM_OBJECT_IMAGE1D_ARRAY, 1> {
    public:
       image1d_array(clover::context &ctx,
                     std::vector<cl_mem_properties> properties,
@@ -216,7 +220,7 @@ namespace clover {
                     void *host_ptr);
    };
 
-   class image2d : public basic_image<CL_MEM_OBJECT_IMAGE2D> {
+   class image2d : public basic_image<CL_MEM_OBJECT_IMAGE2D, 2> {
    public:
       image2d(clover::context &ctx,
               std::vector<cl_mem_properties> properties,
@@ -226,7 +230,7 @@ namespace clover {
               void *host_ptr);
    };
 
-   class image2d_array : public basic_image<CL_MEM_OBJECT_IMAGE2D_ARRAY> {
+   class image2d_array : public basic_image<CL_MEM_OBJECT_IMAGE2D_ARRAY, 2> {
    public:
       image2d_array(clover::context &ctx,
                     std::vector<cl_mem_properties> properties,
@@ -237,7 +241,7 @@ namespace clover {
                     void *host_ptr);
    };
 
-   class image3d : public basic_image<CL_MEM_OBJECT_IMAGE3D>{
+   class image3d : public basic_image<CL_MEM_OBJECT_IMAGE3D, 3>{
    public:
       image3d(clover::context &ctx,
               std::vector<cl_mem_properties> properties,



More information about the mesa-commit mailing list