From: Marek Olšák <marek.ol...@amd.com>

---
 src/gallium/drivers/radeon/r600_texture.c | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)

diff --git a/src/gallium/drivers/radeon/r600_texture.c 
b/src/gallium/drivers/radeon/r600_texture.c
index ebd2c5c..129b3f4 100644
--- a/src/gallium/drivers/radeon/r600_texture.c
+++ b/src/gallium/drivers/radeon/r600_texture.c
@@ -500,6 +500,7 @@ static boolean r600_texture_get_handle(struct pipe_screen* 
screen,
        struct r600_texture *rtex = (struct r600_texture*)resource;
        struct radeon_bo_metadata metadata;
        bool update_metadata = false;
+       unsigned stride, offset, slice_size;
 
        /* This is not supported now, but it might be required for OpenCL
         * interop in the future.
@@ -553,12 +554,19 @@ static boolean r600_texture_get_handle(struct 
pipe_screen* screen,
                res->external_usage = usage;
        }
 
-       return rscreen->ws->buffer_get_handle(res->buf,
-                                             
rtex->surface.u.legacy.level[0].nblk_x *
-                                             rtex->surface.bpe,
-                                             
rtex->surface.u.legacy.level[0].offset,
-                                             
rtex->surface.u.legacy.level[0].slice_size,
-                                             whandle);
+       if (rscreen->chip_class >= GFX9) {
+               offset = 0;
+               stride = rtex->surface.u.gfx9.surf_pitch *
+                        rtex->surface.bpe;
+               slice_size = rtex->surface.u.gfx9.surf_slice_size;
+       } else {
+               offset = rtex->surface.u.legacy.level[0].offset;
+               stride = rtex->surface.u.legacy.level[0].nblk_x *
+                        rtex->surface.bpe;
+               slice_size = rtex->surface.u.legacy.level[0].slice_size;
+       }
+       return rscreen->ws->buffer_get_handle(res->buf, stride, offset,
+                                             slice_size, whandle);
 }
 
 static void r600_texture_destroy(struct pipe_screen *screen,
-- 
2.7.4

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to