Mesa (main): ac/surface: Add ac_modifier_supports_dcc_image_stores helper

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Sat Sep 18 00:28:16 UTC 2021


Module: Mesa
Branch: main
Commit: 92ade3df054dee964a040262247bd14676a2746c
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=92ade3df054dee964a040262247bd14676a2746c

Author: Joshua Ashton <joshua at froggi.es>
Date:   Tue Sep 14 04:00:34 2021 +0100

ac/surface: Add ac_modifier_supports_dcc_image_stores helper

Helper function to check if a modifier supports DCC image stores.

Signed-off-by: Joshua Ashton <joshua at froggi.es>
Reviewed-by: Marek Olšák <marek.olsak at amd.com>
Reviewed-by: Bas Nieuwenhhuizen <bas at basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12862>

---

 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,



More information about the mesa-commit mailing list