Mesa (master): amd/common: introduce ac_surface_print_info

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Nov 13 11:19:03 UTC 2020


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

Author: Simon Ser <contact at emersion.fr>
Date:   Tue Jul 21 18:54:28 2020 +0200

amd/common: introduce ac_surface_print_info

This is mostly copied from si_print_texture_info, with the si-specific
bits removed. Moving it into common code will allow to use it from both
radeonsi and radv.

Signed-off-by: Simon Ser <contact at emersion.fr>
Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5734>

---

 src/amd/common/ac_surface.c | 96 +++++++++++++++++++++++++++++++++++++++++++++
 src/amd/common/ac_surface.h |  5 ++-
 2 files changed, 100 insertions(+), 1 deletion(-)

diff --git a/src/amd/common/ac_surface.c b/src/amd/common/ac_surface.c
index ee20fbebc26..31a49e6e31a 100644
--- a/src/amd/common/ac_surface.c
+++ b/src/amd/common/ac_surface.c
@@ -2896,3 +2896,99 @@ uint64_t ac_surface_get_plane_stride(enum chip_class chip_class,
       unreachable("Invalid plane index");
    }
 }
+
+void ac_surface_print_info(FILE *out, const struct radeon_info *info,
+                           const struct radeon_surf *surf)
+{
+   if (info->chip_class >= GFX9) {
+      fprintf(out,
+              "    Surf: size=%" PRIu64 ", slice_size=%" PRIu64 ", "
+              "alignment=%u, swmode=%u, epitch=%u, pitch=%u, blk_w=%u, "
+              "blk_h=%u, bpe=%u, flags=0x%x\n",
+              surf->surf_size, surf->u.gfx9.surf_slice_size,
+              surf->surf_alignment, surf->u.gfx9.surf.swizzle_mode,
+              surf->u.gfx9.surf.epitch, surf->u.gfx9.surf_pitch,
+              surf->blk_w, surf->blk_h, surf->bpe, surf->flags);
+
+      if (surf->fmask_offset)
+         fprintf(out,
+                 "    FMask: offset=%" PRIu64 ", size=%" PRIu64 ", "
+                 "alignment=%u, swmode=%u, epitch=%u\n",
+                 surf->fmask_offset, surf->fmask_size,
+                 surf->fmask_alignment, surf->u.gfx9.fmask.swizzle_mode,
+                 surf->u.gfx9.fmask.epitch);
+
+      if (surf->cmask_offset)
+         fprintf(out,
+                 "    CMask: offset=%" PRIu64 ", size=%u, "
+                 "alignment=%u\n",
+                 surf->cmask_offset, surf->cmask_size,
+                 surf->cmask_alignment);
+
+      if (surf->htile_offset)
+         fprintf(out,
+                 "    HTile: offset=%" PRIu64 ", size=%u, alignment=%u\n",
+                 surf->htile_offset, surf->htile_size,
+                 surf->htile_alignment);
+
+      if (surf->dcc_offset)
+         fprintf(out,
+                 "    DCC: offset=%" PRIu64 ", size=%u, "
+                 "alignment=%u, pitch_max=%u, num_dcc_levels=%u\n",
+                 surf->dcc_offset, surf->dcc_size, surf->dcc_alignment,
+                 surf->u.gfx9.display_dcc_pitch_max, surf->num_dcc_levels);
+
+      if (surf->u.gfx9.stencil_offset)
+         fprintf(out,
+                 "    Stencil: offset=%" PRIu64 ", swmode=%u, epitch=%u\n",
+                 surf->u.gfx9.stencil_offset,
+                 surf->u.gfx9.stencil.swizzle_mode,
+                 surf->u.gfx9.stencil.epitch);
+   } else {
+      fprintf(out,
+              "    Surf: size=%" PRIu64 ", alignment=%u, blk_w=%u, blk_h=%u, "
+              "bpe=%u, flags=0x%x\n",
+              surf->surf_size, surf->surf_alignment, surf->blk_w,
+              surf->blk_h, surf->bpe, surf->flags);
+
+      fprintf(out,
+              "    Layout: size=%" PRIu64 ", alignment=%u, bankw=%u, bankh=%u, "
+              "nbanks=%u, mtilea=%u, tilesplit=%u, pipeconfig=%u, scanout=%u\n",
+              surf->surf_size, surf->surf_alignment,
+              surf->u.legacy.bankw, surf->u.legacy.bankh,
+              surf->u.legacy.num_banks, surf->u.legacy.mtilea,
+              surf->u.legacy.tile_split, surf->u.legacy.pipe_config,
+              (surf->flags & RADEON_SURF_SCANOUT) != 0);
+
+      if (surf->fmask_offset)
+         fprintf(out,
+                 "    FMask: offset=%" PRIu64 ", size=%" PRIu64 ", "
+                 "alignment=%u, pitch_in_pixels=%u, bankh=%u, "
+                 "slice_tile_max=%u, tile_mode_index=%u\n",
+                 surf->fmask_offset, surf->fmask_size,
+                 surf->fmask_alignment, surf->u.legacy.fmask.pitch_in_pixels,
+                 surf->u.legacy.fmask.bankh,
+                 surf->u.legacy.fmask.slice_tile_max,
+                 surf->u.legacy.fmask.tiling_index);
+
+      if (surf->cmask_offset)
+         fprintf(out,
+                 "    CMask: offset=%" PRIu64 ", size=%u, alignment=%u, "
+                 "slice_tile_max=%u\n",
+                 surf->cmask_offset, surf->cmask_size,
+                 surf->cmask_alignment, surf->u.legacy.cmask_slice_tile_max);
+
+      if (surf->htile_offset)
+         fprintf(out, "    HTile: offset=%" PRIu64 ", size=%u, alignment=%u\n",
+                 surf->htile_offset, surf->htile_size,
+                 surf->htile_alignment);
+
+      if (surf->dcc_offset)
+         fprintf(out, "    DCC: offset=%" PRIu64 ", size=%u, alignment=%u\n",
+                 surf->dcc_offset, surf->dcc_size, surf->dcc_alignment);
+
+      if (surf->has_stencil)
+         fprintf(out, "    StencilLayout: tilesplit=%u\n",
+                 surf->u.legacy.stencil_tile_split);
+   }
+}
diff --git a/src/amd/common/ac_surface.h b/src/amd/common/ac_surface.h
index 878226d3e9a..424bbd12408 100644
--- a/src/amd/common/ac_surface.h
+++ b/src/amd/common/ac_surface.h
@@ -31,6 +31,7 @@
 
 #include <stdbool.h>
 #include <stdint.h>
+#include <stdio.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -321,7 +322,6 @@ void ac_surface_get_umd_metadata(const struct radeon_info *info, struct radeon_s
 bool ac_surface_override_offset_stride(const struct radeon_info *info, struct radeon_surf *surf,
                                        unsigned num_mipmap_levels, uint64_t offset, unsigned pitch);
 
-
 struct ac_modifier_options {
 	bool dcc; /* Whether to allow DCC. */
 	bool dcc_retile; /* Whether to allow use of a DCC retile map. */
@@ -347,6 +347,9 @@ uint64_t ac_surface_get_plane_stride(enum chip_class chip_class,
                                      const struct radeon_surf *surf,
                                      unsigned plane);
 
+void ac_surface_print_info(FILE *out, const struct radeon_info *info,
+                           const struct radeon_surf *surf);
+
 #ifdef __cplusplus
 }
 #endif



More information about the mesa-commit mailing list