ac/surface: override all offsets including metadata offsets
authorMarek Olšák <marek.olsak@amd.com>
Mon, 4 May 2020 11:53:38 +0000 (07:53 -0400)
committerMarge Bot <eric+marge@anholt.net>
Thu, 7 May 2020 20:13:41 +0000 (20:13 +0000)
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4863>

src/amd/common/ac_surface.c

index 577b2d487eb9bd814657367895017e3eaa08364a..86519f216e1f6e4717404d73a0b23f4f2ef08261 100644 (file)
@@ -2204,6 +2204,8 @@ void ac_surface_override_offset_stride(const struct radeon_info *info,
                (uint64_t)pitch * surf->u.gfx9.surf_height * surf->bpe;
       }
       surf->u.gfx9.surf_offset = offset;
+      if (surf->u.gfx9.stencil_offset)
+         surf->u.gfx9.stencil_offset += offset;
    } else {
       surf->u.legacy.level[0].nblk_x = pitch;
       surf->u.legacy.level[0].slice_size_dw =
@@ -2214,4 +2216,17 @@ void ac_surface_override_offset_stride(const struct radeon_info *info,
             surf->u.legacy.level[i].offset += offset;
       }
    }
+
+   if (surf->htile_offset)
+      surf->htile_offset += offset;
+   if (surf->fmask_offset)
+      surf->fmask_offset += offset;
+   if (surf->cmask_offset)
+      surf->cmask_offset += offset;
+   if (surf->dcc_offset)
+      surf->dcc_offset += offset;
+   if (surf->display_dcc_offset)
+      surf->display_dcc_offset += offset;
+   if (surf->dcc_retile_map_offset)
+      surf->dcc_retile_map_offset += offset;
 }