Mesa (master): ac/surface: initialize the FMASK slice size for GFX9+

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Dec 7 16:36:39 UTC 2020


Module: Mesa
Branch: master
Commit: 35964e9387532a00f63f11d2ee666ce5112e4417
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=35964e9387532a00f63f11d2ee666ce5112e4417

Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date:   Fri Dec  4 17:40:55 2020 +0100

ac/surface: initialize the FMASK slice size for GFX9+

Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Marek Olšák <marek.olsak at amd.com>
Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7924>

---

 src/amd/common/ac_surface.c      | 3 ++-
 src/amd/common/ac_surface.h      | 2 +-
 src/amd/vulkan/radv_meta_clear.c | 3 +--
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/amd/common/ac_surface.c b/src/amd/common/ac_surface.c
index 0f183ae93a2..855bf043698 100644
--- a/src/amd/common/ac_surface.c
+++ b/src/amd/common/ac_surface.c
@@ -1404,6 +1404,7 @@ static int gfx6_compute_surface(ADDR_HANDLE addrlib, const struct radeon_info *i
 
       surf->fmask_size = fout.fmaskBytes;
       surf->fmask_alignment = fout.baseAlign;
+      surf->fmask_slice_size = fout.sliceSize;
       surf->fmask_tile_swizzle = 0;
 
       surf->u.legacy.fmask.slice_tile_max = (fout.pitch * fout.height) / 64;
@@ -1413,7 +1414,6 @@ static int gfx6_compute_surface(ADDR_HANDLE addrlib, const struct radeon_info *i
       surf->u.legacy.fmask.tiling_index = fout.tileIndex;
       surf->u.legacy.fmask.bankh = fout.pTileInfo->bankHeight;
       surf->u.legacy.fmask.pitch_in_pixels = fout.pitch;
-      surf->u.legacy.fmask.slice_size = fout.sliceSize;
 
       /* Compute tile swizzle for FMASK. */
       if (config->info.fmask_surf_index && !(surf->flags & RADEON_SURF_SHAREABLE)) {
@@ -1973,6 +1973,7 @@ static int gfx9_compute_miptree(struct ac_addrlib *addrlib, const struct radeon_
          surf->u.gfx9.fmask.epitch = fout.pitch - 1;
          surf->fmask_size = fout.fmaskBytes;
          surf->fmask_alignment = fout.baseAlign;
+         surf->fmask_slice_size = fout.sliceSize;
 
          /* Compute tile swizzle for the FMASK surface. */
          if (config->info.fmask_surf_index && fin.swizzleMode >= ADDR_SW_64KB_Z_T &&
diff --git a/src/amd/common/ac_surface.h b/src/amd/common/ac_surface.h
index ebec13d53ba..00912d25a0f 100644
--- a/src/amd/common/ac_surface.h
+++ b/src/amd/common/ac_surface.h
@@ -99,7 +99,6 @@ struct legacy_surf_fmask {
    uint8_t tiling_index;    /* max 31 */
    uint8_t bankh;           /* max 8 */
    uint16_t pitch_in_pixels;
-   uint64_t slice_size;
 };
 
 struct legacy_surf_layout {
@@ -240,6 +239,7 @@ struct radeon_surf {
    uint64_t fmask_size;
    uint32_t surf_alignment;
    uint32_t fmask_alignment;
+   uint64_t fmask_slice_size;
 
    /* DCC and HTILE are very small. */
    uint32_t dcc_size;
diff --git a/src/amd/vulkan/radv_meta_clear.c b/src/amd/vulkan/radv_meta_clear.c
index 0b4b398190d..e839de5a381 100644
--- a/src/amd/vulkan/radv_meta_clear.c
+++ b/src/amd/vulkan/radv_meta_clear.c
@@ -1449,8 +1449,7 @@ radv_clear_fmask(struct radv_cmd_buffer *cmd_buffer,
 		size = image->planes[0].surface.fmask_size;
 	} else {
 		unsigned fmask_slice_size =
-			image->planes[0].surface.u.legacy.fmask.slice_size;
-
+			image->planes[0].surface.fmask_slice_size;
 
 		offset += fmask_slice_size * range->baseArrayLayer;
 		size = fmask_slice_size * radv_get_layerCount(image, range);



More information about the mesa-commit mailing list