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);

Attachment: pgpaKnXdsyio_.pgp
Description: PGP signature

_______________________________________________
mesa-dev mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to