Mesa (main): clover/image: add templated basic_image class to simplify image subclassing
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Mon Oct 18 02:55:11 UTC 2021
Module: Mesa
Branch: main
Commit: 029f22e430f74a5d26eb7e69a08fe703ccc4e77a
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=029f22e430f74a5d26eb7e69a08fe703ccc4e77a
Author: Karol Herbst <kherbst at redhat.com>
Date: Thu Apr 1 18:12:30 2021 +0200
clover/image: add templated basic_image class to simplify image subclassing
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/core/memory.cpp | 29 +++++++---------------------
src/gallium/frontends/clover/core/memory.hpp | 21 +++++++++++---------
2 files changed, 19 insertions(+), 31 deletions(-)
diff --git a/src/gallium/frontends/clover/core/memory.cpp b/src/gallium/frontends/clover/core/memory.cpp
index e722af22b50..43e37e5aaf2 100644
--- a/src/gallium/frontends/clover/core/memory.cpp
+++ b/src/gallium/frontends/clover/core/memory.cpp
@@ -255,13 +255,8 @@ image1d::image1d(clover::context &ctx,
const cl_image_format *format,
size_t width, size_t row_pitch,
void *host_ptr) :
- image(ctx, properties, flags, format, width, 1, 1,
- row_pitch, 0, row_pitch, host_ptr) {
-}
-
-cl_mem_object_type
-image1d::type() const {
- return CL_MEM_OBJECT_IMAGE1D;
+ basic_image(ctx, properties, flags, format, width, 1, 1,
+ row_pitch, 0, row_pitch, host_ptr) {
}
image2d::image2d(clover::context &ctx,
@@ -270,13 +265,8 @@ image2d::image2d(clover::context &ctx,
const cl_image_format *format, size_t width,
size_t height, size_t row_pitch,
void *host_ptr) :
- image(ctx, properties, flags, format, width, height, 1,
- row_pitch, 0, height * row_pitch, host_ptr) {
-}
-
-cl_mem_object_type
-image2d::type() const {
- return CL_MEM_OBJECT_IMAGE2D;
+ basic_image(ctx, properties, flags, format, width, height, 1,
+ row_pitch, 0, height * row_pitch, host_ptr) {
}
image3d::image3d(clover::context &ctx,
@@ -286,12 +276,7 @@ image3d::image3d(clover::context &ctx,
size_t width, size_t height, size_t depth,
size_t row_pitch, size_t slice_pitch,
void *host_ptr) :
- image(ctx, properties, flags, format, width, height, depth,
- row_pitch, slice_pitch, depth * slice_pitch,
- host_ptr) {
-}
-
-cl_mem_object_type
-image3d::type() const {
- return CL_MEM_OBJECT_IMAGE3D;
+ basic_image(ctx, properties, flags, format, width, height, depth,
+ row_pitch, slice_pitch, depth * slice_pitch,
+ host_ptr) {
}
diff --git a/src/gallium/frontends/clover/core/memory.hpp b/src/gallium/frontends/clover/core/memory.hpp
index 19d6e2ad45f..34850d6b295 100644
--- a/src/gallium/frontends/clover/core/memory.hpp
+++ b/src/gallium/frontends/clover/core/memory.hpp
@@ -172,7 +172,16 @@ namespace clover {
std::mutex resources_mtx;
};
- class image1d : public image {
+ template<cl_mem_object_type Type>
+ class basic_image : public image {
+ public:
+ using image::image;
+ virtual cl_mem_object_type type() const {
+ return Type;
+ }
+ };
+
+ class image1d : public basic_image<CL_MEM_OBJECT_IMAGE1D> {
public:
image1d(clover::context &ctx,
std::vector<cl_mem_properties> properties,
@@ -180,11 +189,9 @@ namespace clover {
const cl_image_format *format,
size_t width, size_t row_pitch,
void *host_ptr);
-
- virtual cl_mem_object_type type() const;
};
- class image2d : public image {
+ class image2d : public basic_image<CL_MEM_OBJECT_IMAGE2D> {
public:
image2d(clover::context &ctx,
std::vector<cl_mem_properties> properties,
@@ -192,11 +199,9 @@ namespace clover {
const cl_image_format *format, size_t width,
size_t height, size_t row_pitch,
void *host_ptr);
-
- virtual cl_mem_object_type type() const;
};
- class image3d : public image {
+ class image3d : public basic_image<CL_MEM_OBJECT_IMAGE3D>{
public:
image3d(clover::context &ctx,
std::vector<cl_mem_properties> properties,
@@ -205,8 +210,6 @@ namespace clover {
size_t width, size_t height, size_t depth,
size_t row_pitch, size_t slice_pitch,
void *host_ptr);
-
- virtual cl_mem_object_type type() const;
};
}
More information about the mesa-commit
mailing list