Mesa (master): r300g: rasterizer debug logging

Marek Olšák mareko at kemper.freedesktop.org
Thu Apr 29 04:57:46 UTC 2010


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

Author: Marek Olšák <maraeo at gmail.com>
Date:   Thu Apr 29 06:55:58 2010 +0200

r300g: rasterizer debug logging

---

 src/gallium/drivers/r300/r300_debug.c         |    1 +
 src/gallium/drivers/r300/r300_screen.h        |    1 +
 src/gallium/drivers/r300/r300_state_derived.c |   34 +++++++++++++++++++++++-
 3 files changed, 34 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/r300/r300_debug.c b/src/gallium/drivers/r300/r300_debug.c
index aed0ffe..4c2836f 100644
--- a/src/gallium/drivers/r300/r300_debug.c
+++ b/src/gallium/drivers/r300/r300_debug.c
@@ -38,6 +38,7 @@ static struct debug_option debug_options[] = {
     { "draw", DBG_DRAW, "Draw and emit (for debugging)" },
     { "tex", DBG_TEX, "Textures (for debugging)" },
     { "fall", DBG_FALL, "Fallbacks (for debugging)" },
+    { "rs", DBG_RS, "Rasterizer (for debugging)" },
     { "anisohq", DBG_ANISOHQ, "High quality anisotropic filtering (for benchmarking)" },
     { "notiling", DBG_NO_TILING, "Disable tiling (for benchmarking)" },
     { "noimmd", DBG_NO_IMMD, "Disable immediate mode (for benchmarking)" },
diff --git a/src/gallium/drivers/r300/r300_screen.h b/src/gallium/drivers/r300/r300_screen.h
index 70ea2fe..735c233 100644
--- a/src/gallium/drivers/r300/r300_screen.h
+++ b/src/gallium/drivers/r300/r300_screen.h
@@ -72,6 +72,7 @@ static INLINE struct r300_screen* r300_screen(struct pipe_screen* screen) {
 #define DBG_NO_TILING 0x0000100
 #define DBG_NO_IMMD 0x0000200
 #define DBG_STATS   0x0000400
+#define DBG_RS      0x0000800
 /*@}*/
 
 static INLINE boolean SCREEN_DBG_ON(struct r300_screen * screen, unsigned flags)
diff --git a/src/gallium/drivers/r300/r300_state_derived.c b/src/gallium/drivers/r300/r300_state_derived.c
index 10ea579..fdcfe7a 100644
--- a/src/gallium/drivers/r300/r300_state_derived.c
+++ b/src/gallium/drivers/r300/r300_state_derived.c
@@ -308,6 +308,11 @@ static void r300_update_rs_block(struct r300_context* r300,
             if (fs_inputs->color[i] != ATTR_UNUSED) {
                 rX00_rs_col_write(&rs, col_count, fp_offset);
                 fp_offset++;
+
+                DBG(r300, DBG_RS,
+                    "r300: Rasterized color %i written to FS.\n", i);
+            } else {
+                DBG(r300, DBG_RS, "r300: Rasterized color %i unused.\n", i);
             }
             col_count++;
         } else {
@@ -315,6 +320,9 @@ static void r300_update_rs_block(struct r300_context* r300,
             /* If we try to set it to (0,0,0,1), it will lock up. */
             if (fs_inputs->color[i] != ATTR_UNUSED) {
                 fp_offset++;
+
+                DBG(r300, DBG_RS, "r300: FS input color %i unassigned%s.\n",
+                    i);
             }
         }
     }
@@ -332,9 +340,15 @@ static void r300_update_rs_block(struct r300_context* r300,
             /* Write it to the FS input register if it's used by the FS. */
             if (fs_inputs->generic[i] != ATTR_UNUSED) {
                 rX00_rs_tex_write(&rs, tex_count, fp_offset);
-                if (sprite_coord)
-                    debug_printf("r300: SpriteCoord (generic index %i) is being written to reg %i\n", i, fp_offset);
                 fp_offset++;
+
+                DBG(r300, DBG_RS,
+                    "r300: Rasterized generic %i written to FS%s.\n",
+                    i, sprite_coord ? " (sprite coord)" : "");
+            } else {
+                DBG(r300, DBG_RS,
+                    "r300: Rasterized generic %i unused%s.\n",
+                    i, sprite_coord ? " (sprite coord)" : "");
             }
             tex_count++;
         } else {
@@ -342,6 +356,9 @@ static void r300_update_rs_block(struct r300_context* r300,
             /* If we try to set it to (0,0,0,1), it will lock up. */
             if (fs_inputs->generic[i] != ATTR_UNUSED) {
                 fp_offset++;
+
+                DBG(r300, DBG_RS, "r300: FS input generic %i unassigned%s.\n",
+                    i, sprite_coord ? " (sprite coord)" : "");
             }
         }
     }
@@ -356,6 +373,10 @@ static void r300_update_rs_block(struct r300_context* r300,
         if (fs_inputs->fog != ATTR_UNUSED) {
             rX00_rs_tex_write(&rs, tex_count, fp_offset);
             fp_offset++;
+
+            DBG(r300, DBG_RS, "r300: Rasterized fog written to FS.\n");
+        } else {
+            DBG(r300, DBG_RS, "r300: Rasterized fog unused.\n");
         }
         tex_count++;
     } else {
@@ -363,6 +384,8 @@ static void r300_update_rs_block(struct r300_context* r300,
         /* If we try to set it to (0,0,0,1), it will lock up. */
         if (fs_inputs->fog != ATTR_UNUSED) {
             fp_offset++;
+
+            DBG(r300, DBG_RS, "r300: FS input fog unassigned.\n");
         }
     }
 
@@ -372,6 +395,8 @@ static void r300_update_rs_block(struct r300_context* r300,
         rX00_rs_tex(&rs, tex_count, tex_count, SWIZ_XYZW);
         rX00_rs_tex_write(&rs, tex_count, fp_offset);
 
+        DBG(r300, DBG_RS, "r300: Rasterized WPOS written to FS.\n");
+
         fp_offset++;
         tex_count++;
     }
@@ -380,8 +405,13 @@ static void r300_update_rs_block(struct r300_context* r300,
     if (col_count == 0 && tex_count == 0) {
         rX00_rs_col(&rs, 0, 0, TRUE);
         col_count++;
+
+        DBG(r300, DBG_RS, "r300: Rasterized color 0 to prevent lockups.\n");
     }
 
+    DBG(r300, DBG_RS, "r300: --- Rasterizer status ---: colors: %i, "
+        "generics: %i.\n", col_count, tex_count);
+
     rs.count = (tex_count*4) | (col_count << R300_IC_COUNT_SHIFT) |
         R300_HIRES_EN;
 




More information about the mesa-commit mailing list