Mesa (master): amd/common: Add modifier size helper.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Feb 2 01:01:33 UTC 2021


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

Author: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Date:   Mon Nov 16 12:28:13 2020 +0100

amd/common: Add modifier size helper.

For use in Vulkan.

Reviewed-By: Chad Versace <chad at kiwitree.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7667>

---

 src/amd/common/ac_surface.c | 16 ++++++++++++++++
 src/amd/common/ac_surface.h |  3 +++
 2 files changed, 19 insertions(+)

diff --git a/src/amd/common/ac_surface.c b/src/amd/common/ac_surface.c
index b987da21ac5..77dcb9cf1cf 100644
--- a/src/amd/common/ac_surface.c
+++ b/src/amd/common/ac_surface.c
@@ -2974,6 +2974,22 @@ uint64_t ac_surface_get_plane_stride(enum chip_class chip_class,
    }
 }
 
+uint64_t ac_surface_get_plane_size(const struct radeon_surf *surf,
+                                   unsigned plane)
+{
+   switch (plane) {
+   case 0:
+      return surf->surf_size;
+   case 1:
+      return surf->display_dcc_offset ?
+             surf->u.gfx9.display_dcc_size : surf->dcc_size;
+   case 2:
+      return surf->dcc_size;
+   default:
+      unreachable("Invalid plane index");
+   }
+}
+
 void ac_surface_print_info(FILE *out, const struct radeon_info *info,
                            const struct radeon_surf *surf)
 {
diff --git a/src/amd/common/ac_surface.h b/src/amd/common/ac_surface.h
index 201ef08e7d5..ae112cf02bf 100644
--- a/src/amd/common/ac_surface.h
+++ b/src/amd/common/ac_surface.h
@@ -367,6 +367,9 @@ uint64_t ac_surface_get_plane_offset(enum chip_class chip_class,
 uint64_t ac_surface_get_plane_stride(enum chip_class chip_class,
                                      const struct radeon_surf *surf,
                                      unsigned plane);
+/* Of the whole miplevel, not an individual layer */
+uint64_t ac_surface_get_plane_size(const struct radeon_surf *surf,
+                                   unsigned plane);
 
 void ac_surface_print_info(FILE *out, const struct radeon_info *info,
                            const struct radeon_surf *surf);



More information about the mesa-commit mailing list