Dmitry Cherkassov <[email protected]> writes: > image2d is dynamic_cast-ed down from buffer, but is not it's > direct subclass. Make it inhernit buffer.
Hm, nope, you're not supposed to be able to dynamic_cast a buffer into an image2d. If you found this problem in clEnqueueCopyBufferToImage() try the attached patch. Thanks. > > Signed-off-by: Dmitry Cherkassov <[email protected]> > --- > src/gallium/state_trackers/clover/core/memory.cpp | 4 ++-- > src/gallium/state_trackers/clover/core/memory.hpp | 2 +- > 2 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/src/gallium/state_trackers/clover/core/memory.cpp > b/src/gallium/state_trackers/clover/core/memory.cpp > index 8d8be2e..cb64dc1 100644 > --- a/src/gallium/state_trackers/clover/core/memory.cpp > +++ b/src/gallium/state_trackers/clover/core/memory.cpp > @@ -119,7 +119,7 @@ image::image(clover::context &ctx, cl_mem_flags flags, > size_t width, size_t height, size_t depth, > size_t row_pitch, size_t slice_pitch, size_t size, > void *host_ptr) : > - memory_obj(ctx, flags, size, host_ptr), > + buffer(ctx, flags, size, host_ptr), > __format(*format), __width(width), __height(height), __depth(depth), > __row_pitch(row_pitch), __slice_pitch(slice_pitch) { > } > @@ -174,7 +174,7 @@ image2d::image2d(clover::context &ctx, cl_mem_flags flags, > const cl_image_format *format, size_t width, > size_t height, size_t row_pitch, > void *host_ptr) : > - image(ctx, flags, format, width, height, 0, > + image(ctx, flags, format, width, height, 1,// > row_pitch, 0, height * row_pitch, host_ptr) { > } > > diff --git a/src/gallium/state_trackers/clover/core/memory.hpp > b/src/gallium/state_trackers/clover/core/memory.hpp > index 96f70e9..4cb58c4 100644 > --- a/src/gallium/state_trackers/clover/core/memory.hpp > +++ b/src/gallium/state_trackers/clover/core/memory.hpp > @@ -104,7 +104,7 @@ namespace clover { > std::unique_ptr<clover::sub_resource>> resources; > }; > > - struct image : public memory_obj { > + struct image : public buffer { > protected: > image(clover::context &ctx, cl_mem_flags flags, > const cl_image_format *format,
diff --git a/src/gallium/state_trackers/clover/api/transfer.cpp b/src/gallium/state_trackers/clover/api/transfer.cpp
index 295d6c7..7e6b26f 100644
--- a/src/gallium/state_trackers/clover/api/transfer.cpp
+++ b/src/gallium/state_trackers/clover/api/transfer.cpp
@@ -414,7 +414,7 @@ clEnqueueCopyBufferToImage(cl_command_queue q, cl_mem src_obj, cl_mem dst_obj,
const size_t *dst_origin, const size_t *region,
cl_uint num_deps, const cl_event *deps,
cl_event *ev) try {
- image *dst_img = dynamic_cast<image *>(src_obj);
+ image *dst_img = dynamic_cast<image *>(dst_obj);
validate_base(q, num_deps, deps);
validate_obj(q, src_obj);
pgpaKnXdsyio_.pgp
Description: PGP signature
_______________________________________________ mesa-dev mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-dev
