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

Author: Marek Olšák <[email protected]>
Date:   Fri Apr  2 12:54:09 2021 -0400

ac/surface: overlap color and Z/S fields using a union in legacy_surf_layout

to save space

Reviewed-by: Pierre-Eric Pelloux-Prayer <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10083>

---

 src/amd/common/ac_surface.c |  3 ++-
 src/amd/common/ac_surface.h | 20 +++++++++++++++-----
 2 files changed, 17 insertions(+), 6 deletions(-)

diff --git a/src/amd/common/ac_surface.c b/src/amd/common/ac_surface.c
index 754de075b1c..b47159f3b04 100644
--- a/src/amd/common/ac_surface.c
+++ b/src/amd/common/ac_surface.c
@@ -838,7 +838,8 @@ static int gfx6_compute_level(ADDR_HANDLE addrlib, const 
struct ac_surf_config *
    surf->surf_size = surf_level->offset + AddrSurfInfoOut->surfSize;
 
    /* Clear DCC fields at the beginning. */
-   dcc_level->dcc_offset = 0;
+   if (!AddrSurfInfoIn->flags.depth && !AddrSurfInfoIn->flags.stencil)
+      dcc_level->dcc_offset = 0;
 
    /* The previous level's flag tells us if we can use DCC for this level. */
    if (AddrSurfInfoIn->flags.dccCompatible && (level == 0 || 
AddrDccOut->subLvlCompressible)) {
diff --git a/src/amd/common/ac_surface.h b/src/amd/common/ac_surface.h
index d30c739ebbb..7438c5ee7ad 100644
--- a/src/amd/common/ac_surface.h
+++ b/src/amd/common/ac_surface.h
@@ -124,12 +124,22 @@ struct legacy_surf_layout {
    unsigned stencil_adjusted : 1;
 
    struct legacy_surf_level level[RADEON_SURF_MAX_LEVELS];
-   struct legacy_surf_level stencil_level[RADEON_SURF_MAX_LEVELS];
-   struct legacy_surf_dcc_level dcc_level[RADEON_SURF_MAX_LEVELS];
    uint8_t tiling_index[RADEON_SURF_MAX_LEVELS];
-   uint8_t stencil_tiling_index[RADEON_SURF_MAX_LEVELS];
-   struct legacy_surf_fmask fmask;
-   unsigned cmask_slice_tile_max;
+
+   union {
+      /* Color layout */
+      struct {
+         struct legacy_surf_dcc_level dcc_level[RADEON_SURF_MAX_LEVELS];
+         struct legacy_surf_fmask fmask;
+         unsigned cmask_slice_tile_max;
+      };
+
+      /* Z/S layout */
+      struct {
+         struct legacy_surf_level stencil_level[RADEON_SURF_MAX_LEVELS];
+         uint8_t stencil_tiling_index[RADEON_SURF_MAX_LEVELS];
+      };
+   };
 };
 
 /* Same as addrlib - AddrResourceType. */

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to