mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-03-10 22:20:40 +01:00
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@redhat.com> Reviewed-by: Dave Airlie <airlied@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13401>
This commit is contained in:
parent
786987c447
commit
91ff83b6c8
2 changed files with 13 additions and 9 deletions
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue