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
