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

---
 src/gallium/drivers/radeon/r600_texture.c | 29 ++++++++++++++++++-----------
 1 file changed, 18 insertions(+), 11 deletions(-)

diff --git a/src/gallium/drivers/radeon/r600_texture.c 
b/src/gallium/drivers/radeon/r600_texture.c
index df260b6..0231fe2 100644
--- a/src/gallium/drivers/radeon/r600_texture.c
+++ b/src/gallium/drivers/radeon/r600_texture.c
@@ -266,18 +266,25 @@ static int r600_init_surface(struct r600_common_screen 
*rscreen,
                return r;
        }
 
-       if (pitch_in_bytes_override &&
-           pitch_in_bytes_override != surface->u.legacy.level[0].nblk_x * bpe) 
{
-               /* old ddx on evergreen over estimate alignment for 1d, only 1 
level
-                * for those
-                */
-               surface->u.legacy.level[0].nblk_x = pitch_in_bytes_override / 
bpe;
-               surface->u.legacy.level[0].slice_size = pitch_in_bytes_override 
* surface->u.legacy.level[0].nblk_y;
-       }
+       if (rscreen->chip_class >= GFX9) {
+               assert(!pitch_in_bytes_override ||
+                      pitch_in_bytes_override == surface->u.gfx9.surf_pitch * 
bpe);
+               surface->u.gfx9.surf_offset = offset;
+       } else {
+               if (pitch_in_bytes_override &&
+                   pitch_in_bytes_override != 
surface->u.legacy.level[0].nblk_x * bpe) {
+                       /* old ddx on evergreen over estimate alignment for 1d, 
only 1 level
+                        * for those
+                        */
+                       surface->u.legacy.level[0].nblk_x = 
pitch_in_bytes_override / bpe;
+                       surface->u.legacy.level[0].slice_size = 
pitch_in_bytes_override *
+                                                               
surface->u.legacy.level[0].nblk_y;
+               }
 
-       if (offset) {
-               for (i = 0; i < ARRAY_SIZE(surface->u.legacy.level); ++i)
-                       surface->u.legacy.level[i].offset += offset;
+               if (offset) {
+                       for (i = 0; i < ARRAY_SIZE(surface->u.legacy.level); 
++i)
+                               surface->u.legacy.level[i].offset += offset;
+               }
        }
        return 0;
 }
-- 
2.7.4

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

Reply via email to