From 92ade3df054dee964a040262247bd14676a2746c Mon Sep 17 00:00:00 2001 From: Joshua Ashton Date: Tue, 14 Sep 2021 04:00:34 +0100 Subject: [PATCH] ac/surface: Add ac_modifier_supports_dcc_image_stores helper MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Helper function to check if a modifier supports DCC image stores. Signed-off-by: Joshua Ashton Reviewed-by: Marek Olšák Reviewed-by: Bas Nieuwenhhuizen Part-of: --- src/amd/common/ac_surface.c | 8 ++++++++ src/amd/common/ac_surface.h | 1 + 2 files changed, 9 insertions(+) diff --git a/src/amd/common/ac_surface.c b/src/amd/common/ac_surface.c index c39b9a26de2..4101af239ed 100644 --- a/src/amd/common/ac_surface.c +++ b/src/amd/common/ac_surface.c @@ -105,6 +105,14 @@ bool ac_modifier_has_dcc_retile(uint64_t modifier) return IS_AMD_FMT_MOD(modifier) && AMD_FMT_MOD_GET(DCC_RETILE, modifier); } +bool ac_modifier_supports_dcc_image_stores(uint64_t modifier) +{ + return ac_modifier_has_dcc(modifier) && + !AMD_FMT_MOD_GET(DCC_INDEPENDENT_64B, modifier) && + AMD_FMT_MOD_GET(DCC_INDEPENDENT_128B, modifier) && + AMD_FMT_MOD_GET(DCC_MAX_COMPRESSED_BLOCK, modifier) == AMD_FMT_MOD_DCC_BLOCK_128B; +} + static AddrSwizzleMode ac_modifier_gfx9_swizzle_mode(uint64_t modifier) { diff --git a/src/amd/common/ac_surface.h b/src/amd/common/ac_surface.h index d52a62de027..6a10e12247a 100644 --- a/src/amd/common/ac_surface.h +++ b/src/amd/common/ac_surface.h @@ -454,6 +454,7 @@ bool ac_get_supported_modifiers(const struct radeon_info *info, uint64_t *mods); bool ac_modifier_has_dcc(uint64_t modifier); bool ac_modifier_has_dcc_retile(uint64_t modifier); +bool ac_modifier_supports_dcc_image_stores(uint64_t modifier); unsigned ac_surface_get_nplanes(const struct radeon_surf *surf); uint64_t ac_surface_get_plane_offset(enum chip_class chip_class,