Module: Mesa
Branch: staging/23.3
Commit: f103f773b69c2acc95964d679ab79bc169493755
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f103f773b69c2acc95964d679ab79bc169493755

Author: David Rosca <now...@gmail.com>
Date:   Tue Oct 31 10:13:52 2023 +0100

radeonsi: Fix offset for linear surfaces on GFX < 9

Fixes: 86262b6eac0 ("radeonsi,radv: fix usages of surf_pitch")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9949
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10073

Reviewed-by: Marek Olšák <marek.ol...@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25970>
(cherry picked from commit bf364cbdb40f044d2a11b6fe5636e8a039fdad81)

---

 .pick_status.json                         | 2 +-
 src/gallium/drivers/radeonsi/si_texture.c | 4 +++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/.pick_status.json b/.pick_status.json
index 8429aa363e3..28a61b306e9 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -64,7 +64,7 @@
         "description": "radeonsi: Fix offset for linear surfaces on GFX < 9",
         "nominated": true,
         "nomination_type": 1,
-        "resolution": 0,
+        "resolution": 1,
         "main_sha": null,
         "because_sha": "86262b6eac0c232f4b3085cfc86cff9b7de7d11b",
         "notes": null
diff --git a/src/gallium/drivers/radeonsi/si_texture.c 
b/src/gallium/drivers/radeonsi/si_texture.c
index 16948db41a7..6003b71f40f 100644
--- a/src/gallium/drivers/radeonsi/si_texture.c
+++ b/src/gallium/drivers/radeonsi/si_texture.c
@@ -640,7 +640,9 @@ static bool si_resource_get_param(struct pipe_screen 
*screen, struct pipe_contex
       if (resource->target == PIPE_BUFFER) {
          *value = 0;
       } else {
-         uint64_t level_offset = tex->surface.is_linear ? 
tex->surface.u.gfx9.offset[level] : 0;
+         uint64_t level_offset = 0;
+         if (sscreen->info.gfx_level >= GFX9 && tex->surface.is_linear)
+            level_offset = tex->surface.u.gfx9.offset[level];
          *value = ac_surface_get_plane_offset(sscreen->info.gfx_level,
                                               &tex->surface, plane, layer)  + 
level_offset;
       }

Reply via email to