[Mesa-dev] [PATCH 18/18] radeon: make texture logging more useful

Marek Olšák maraeo at gmail.com
Wed Sep 25 18:35:38 PDT 2013


From: Marek Olšák <marek.olsak at amd.com>

This has been very useful for tracking down bugs in libdrm.

The *_PRINT_TEXDEPTH environment variables were probably never used,
so I removed them.
---
 src/gallium/drivers/r600/r600_pipe.c          |  2 --
 src/gallium/drivers/radeon/r600_pipe_common.c |  3 ++-
 src/gallium/drivers/radeon/r600_pipe_common.h |  9 ++++----
 src/gallium/drivers/radeon/r600_texture.c     | 33 +++++++++++++--------------
 src/gallium/drivers/radeonsi/radeonsi_pipe.c  |  2 --
 5 files changed, 23 insertions(+), 26 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_pipe.c b/src/gallium/drivers/r600/r600_pipe.c
index 8ee9487..097a6b8 100644
--- a/src/gallium/drivers/r600/r600_pipe.c
+++ b/src/gallium/drivers/r600/r600_pipe.c
@@ -1060,8 +1060,6 @@ struct pipe_screen *r600_screen_create(struct radeon_winsys *ws)
 		rscreen->b.debug_flags |= DBG_NO_HYPERZ;
 	if (!debug_get_bool_option("R600_LLVM", TRUE))
 		rscreen->b.debug_flags |= DBG_NO_LLVM;
-	if (debug_get_bool_option("R600_PRINT_TEXDEPTH", FALSE))
-		rscreen->b.debug_flags |= DBG_TEX_DEPTH;
 
 	if (rscreen->b.family == CHIP_UNKNOWN) {
 		fprintf(stderr, "r600: Unknown chipset 0x%04X\n", rscreen->b.info.pci_id);
diff --git a/src/gallium/drivers/radeon/r600_pipe_common.c b/src/gallium/drivers/radeon/r600_pipe_common.c
index 190896b..852993c 100644
--- a/src/gallium/drivers/radeon/r600_pipe_common.c
+++ b/src/gallium/drivers/radeon/r600_pipe_common.c
@@ -31,7 +31,8 @@
 
 static const struct debug_named_value common_debug_options[] = {
 	/* logging */
-	{ "texdepth", DBG_TEX_DEPTH, "Print texture depth info" },
+	{ "tex", DBG_TEX, "Print texture info" },
+	{ "texmip", DBG_TEXMIP, "Print texture info (mipmapped only)" },
 	{ "compute", DBG_COMPUTE, "Print compute info" },
 	{ "vm", DBG_VM, "Print virtual addresses when creating resources" },
 	{ "trace_cs", DBG_TRACE_CS, "Trace cs and write rlockup_<csid>.c file with faulty cs" },
diff --git a/src/gallium/drivers/radeon/r600_pipe_common.h b/src/gallium/drivers/radeon/r600_pipe_common.h
index f71b712..f0fcaac 100644
--- a/src/gallium/drivers/radeon/r600_pipe_common.h
+++ b/src/gallium/drivers/radeon/r600_pipe_common.h
@@ -61,10 +61,11 @@
 
 /* Debug flags. */
 /* logging */
-#define DBG_TEX_DEPTH		(1 << 0)
-#define DBG_COMPUTE		(1 << 1)
-#define DBG_VM			(1 << 2)
-#define DBG_TRACE_CS		(1 << 3)
+#define DBG_TEX			(1 << 0)
+#define DBG_TEXMIP		(1 << 1)
+#define DBG_COMPUTE		(1 << 2)
+#define DBG_VM			(1 << 3)
+#define DBG_TRACE_CS		(1 << 4)
 /* shaders */
 #define DBG_FS			(1 << 8)
 #define DBG_VS			(1 << 9)
diff --git a/src/gallium/drivers/radeon/r600_texture.c b/src/gallium/drivers/radeon/r600_texture.c
index d94d0fb..22628e8 100644
--- a/src/gallium/drivers/radeon/r600_texture.c
+++ b/src/gallium/drivers/radeon/r600_texture.c
@@ -580,7 +580,8 @@ r600_texture_create_object(struct pipe_screen *screen,
 			base->nr_samples ? base->nr_samples : 1, util_format_short_name(base->format));
 	}
 
-	if (rscreen->debug_flags & DBG_TEX_DEPTH && rtex->is_depth) {
+	if (rscreen->debug_flags & DBG_TEX ||
+	    (rtex->resource.b.b.last_level > 0 && rscreen->debug_flags & DBG_TEXMIP)) {
 		printf("Texture: npix_x=%u, npix_y=%u, npix_z=%u, blk_w=%u, "
 		       "blk_h=%u, blk_d=%u, array_size=%u, last_level=%u, "
 		       "bpe=%u, nsamples=%u, flags=%u\n",
@@ -590,22 +591,20 @@ r600_texture_create_object(struct pipe_screen *screen,
 		       rtex->surface.array_size, rtex->surface.last_level,
 		       rtex->surface.bpe, rtex->surface.nsamples,
 		       rtex->surface.flags);
-		if (rtex->surface.flags & RADEON_SURF_ZBUFFER) {
-			for (int i = 0; i <= rtex->surface.last_level; i++) {
-				printf("  Z %i: offset=%llu, slice_size=%llu, npix_x=%u, "
-				       "npix_y=%u, npix_z=%u, nblk_x=%u, nblk_y=%u, "
-				       "nblk_z=%u, pitch_bytes=%u, mode=%u\n",
-				       i, rtex->surface.level[i].offset,
-				       rtex->surface.level[i].slice_size,
-				       u_minify(rtex->resource.b.b.width0, i),
-				       u_minify(rtex->resource.b.b.height0, i),
-				       u_minify(rtex->resource.b.b.depth0, i),
-				       rtex->surface.level[i].nblk_x,
-				       rtex->surface.level[i].nblk_y,
-				       rtex->surface.level[i].nblk_z,
-				       rtex->surface.level[i].pitch_bytes,
-				       rtex->surface.level[i].mode);
-			}
+		for (int i = 0; i <= rtex->surface.last_level; i++) {
+			printf("  Z %i: offset=%llu, slice_size=%llu, npix_x=%u, "
+			       "npix_y=%u, npix_z=%u, nblk_x=%u, nblk_y=%u, "
+			       "nblk_z=%u, pitch_bytes=%u, mode=%u\n",
+			       i, rtex->surface.level[i].offset,
+			       rtex->surface.level[i].slice_size,
+			       u_minify(rtex->resource.b.b.width0, i),
+			       u_minify(rtex->resource.b.b.height0, i),
+			       u_minify(rtex->resource.b.b.depth0, i),
+			       rtex->surface.level[i].nblk_x,
+			       rtex->surface.level[i].nblk_y,
+			       rtex->surface.level[i].nblk_z,
+			       rtex->surface.level[i].pitch_bytes,
+			       rtex->surface.level[i].mode);
 		}
 		if (rtex->surface.flags & RADEON_SURF_SBUFFER) {
 			for (int i = 0; i <= rtex->surface.last_level; i++) {
diff --git a/src/gallium/drivers/radeonsi/radeonsi_pipe.c b/src/gallium/drivers/radeonsi/radeonsi_pipe.c
index 81cc222..5016e13 100644
--- a/src/gallium/drivers/radeonsi/radeonsi_pipe.c
+++ b/src/gallium/drivers/radeonsi/radeonsi_pipe.c
@@ -793,8 +793,6 @@ struct pipe_screen *radeonsi_screen_create(struct radeon_winsys *ws)
 		return NULL;
 	}
 
-	if (debug_get_bool_option("RADEON_PRINT_TEXDEPTH", FALSE))
-		rscreen->b.debug_flags |= DBG_TEX_DEPTH;
 	if (debug_get_bool_option("RADEON_DUMP_SHADERS", FALSE))
 		rscreen->b.debug_flags |= DBG_FS | DBG_VS | DBG_GS | DBG_PS | DBG_CS;
 
-- 
1.8.1.2



More information about the mesa-dev mailing list