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() = img.height(); + buf.as_scalar() = img.dimensions() > 1 ? img.height() : 0; break; case CL_IMAGE_DEPTH: - buf.as_scalar() = img.depth(); + buf.as_scalar() = 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 + template 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 { + class image1d : public basic_image { public: image1d(clover::context &ctx, std::vector properties, @@ -195,7 +199,7 @@ namespace clover { void *host_ptr); }; - class image1d_buffer : public basic_image { + class image1d_buffer : public basic_image { public: image1d_buffer(clover::context &ctx, std::vector properties, @@ -205,7 +209,7 @@ namespace clover { void *host_ptr, cl_mem buffer); }; - class image1d_array : public basic_image { + class image1d_array : public basic_image { public: image1d_array(clover::context &ctx, std::vector properties, @@ -216,7 +220,7 @@ namespace clover { void *host_ptr); }; - class image2d : public basic_image { + class image2d : public basic_image { public: image2d(clover::context &ctx, std::vector properties, @@ -226,7 +230,7 @@ namespace clover { void *host_ptr); }; - class image2d_array : public basic_image { + class image2d_array : public basic_image { public: image2d_array(clover::context &ctx, std::vector properties, @@ -237,7 +241,7 @@ namespace clover { void *host_ptr); }; - class image3d : public basic_image{ + class image3d : public basic_image{ public: image3d(clover::context &ctx, std::vector properties,