r300: Moar vs debug.
authorCorbin Simpson <MostAwesomeDude@gmail.com>
Fri, 5 Jun 2009 04:38:33 +0000 (21:38 -0700)
committerCorbin Simpson <MostAwesomeDude@gmail.com>
Fri, 5 Jun 2009 06:27:46 +0000 (23:27 -0700)
src/gallium/drivers/r300/r300_debug.c
src/gallium/drivers/r300/r300_debug.h

index ffc93eb591591a830d2c611cea8ccd93a7dd2996..32fa739a1e74bacf41a7d2cd3b5a935f7fa308b9 100644 (file)
@@ -165,14 +165,27 @@ static void r300_vs_op_dump(uint32_t op)
     }
 }
 
+void r300_vs_src_dump(uint32_t src)
+{
+    debug_printf(" %s/%s/%s/%s\n",
+            r300_vs_swiz_debug[(src >> 13) & 0x7],
+            r300_vs_swiz_debug[(src >> 16) & 0x7],
+            r300_vs_swiz_debug[(src >> 19) & 0x7],
+            r300_vs_swiz_debug[(src >> 22) & 0x7]);
+}
+
 void r300_vs_dump(struct r300_vertex_shader* vs)
 {
     int i;
 
     for (i = 0; i < vs->instruction_count; i++) {
+        debug_printf("%d: op: 0x%08x", i, vs->instructions[i].inst0);
         r300_vs_op_dump(vs->instructions[i].inst0);
-        debug_printf("inst1: 0x%x\n", vs->instructions[i].inst1);
-        debug_printf("inst2: 0x%x\n", vs->instructions[i].inst2);
-        debug_printf("inst3: 0x%x\n", vs->instructions[i].inst3);
+        debug_printf(" src0: 0x%08x", vs->instructions[i].inst1);
+        r300_vs_src_dump(vs->instructions[i].inst1);
+        debug_printf(" src1: 0x%08x", vs->instructions[i].inst2);
+        r300_vs_src_dump(vs->instructions[i].inst2);
+        debug_printf(" src2: 0x%08x", vs->instructions[i].inst3);
+        r300_vs_src_dump(vs->instructions[i].inst3);
     }
 }
index 63065940997af77f8e62842568204f43b783e512..3939d834c23832d046667ee734ddb1f3ed72f028 100644 (file)
@@ -173,6 +173,18 @@ static char* r300_vs_me_ops[] = {
     "               (reserved)",
 };
 
+/* XXX refactor to avoid clashing symbols */
+static char* r300_vs_swiz_debug[] = {
+    "X",
+    "Y",
+    "Z",
+    "W",
+    "0",
+    "1",
+    "U",
+    "U",
+};
+
 void r500_fs_dump(struct r500_fragment_shader* fs);
 
 void r300_vs_dump(struct r300_vertex_shader* vs);