r300-gallium: Start VS dumper.
authorCorbin Simpson <MostAwesomeDude@gmail.com>
Sat, 9 May 2009 07:28:49 +0000 (00:28 -0700)
committerCorbin Simpson <MostAwesomeDude@gmail.com>
Sat, 9 May 2009 07:45:48 +0000 (00:45 -0700)
src/gallium/drivers/r300/r300_debug.c
src/gallium/drivers/r300/r300_debug.h

index dd63136c9d62eb4f1b5ed6613e66950bcf3e53c8..1ff72172ebd31eb5bd48b478df78d62849c010bd 100644 (file)
@@ -30,81 +30,6 @@ static void r300_dump_fs(struct r300_fragment_shader* fs)
     }
 }
 
-static char* r500_fs_swiz[] = {
-    " R",
-    " G",
-    " B",
-    " A",
-    " 0",
-    ".5",
-    " 1",
-    " U",
-};
-
-static char* r500_fs_op_rgb[] = {
-    "MAD",
-    "DP3",
-    "DP4",
-    "D2A",
-    "MIN",
-    "MAX",
-    "---",
-    "CND",
-    "CMP",
-    "FRC",
-    "SOP",
-    "MDH",
-    "MDV",
-};
-
-static char* r500_fs_op_alpha[] = {
-    "MAD",
-    " DP",
-    "MIN",
-    "MAX",
-    "---",
-    "CND",
-    "CMP",
-    "FRC",
-    "EX2",
-    "LN2",
-    "RCP",
-    "RSQ",
-    "SIN",
-    "COS",
-    "MDH",
-    "MDV",
-};
-
-static char* r500_fs_mask[] = {
-    "NONE",
-    "R   ",
-    " G  ",
-    "RG  ",
-    "  B ",
-    "R B ",
-    " GB ",
-    "RGB ",
-    "   A",
-    "R  A",
-    " G A",
-    "RG A",
-    "  BA",
-    "R BA",
-    " GBA",
-    "RGBA",
-};
-
-static char* r500_fs_tex[] = {
-    "    NOP",
-    "     LD",
-    "TEXKILL",
-    "   PROJ",
-    "LODBIAS",
-    "    LOD",
-    "   DXDY",
-};
-
 void r500_fs_dump(struct r500_fragment_shader* fs)
 {
     int i;
@@ -225,12 +150,25 @@ void r500_fs_dump(struct r500_fragment_shader* fs)
     }
 }
 
+static void r300_vs_op_dump(uint32_t op)
+{
+    if (op & 0x81) {
+        debug_printf("PVS_MACRO_OP_2CLK_M2X_ADD\n");
+    } else if (op & 0x80) {
+        debug_printf("   PVS_MACRO_OP_2CLK_MADD\n");
+    } else if (op & 0x40) {
+        debug_printf("%s\n", r300_vs_me_ops[op & 0x1f]);
+    } else {
+        debug_printf("%s\n", r300_vs_ve_ops[op & 0x1f]);
+    }
+}
+
 void r300_vs_dump(struct r300_vertex_shader* vs)
 {
     int i;
 
     for (i = 0; i < vs->instruction_count; i++) {
-        debug_printf("inst0: 0x%x\n", 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);
index a1f873656dcab1c0411639c4cad62f86964261d7..63065940997af77f8e62842568204f43b783e512 100644 (file)
 #include "r300_state_shader.h"
 #include "r300_state_tcl.h"
 
+static char* r500_fs_swiz[] = {
+    " R",
+    " G",
+    " B",
+    " A",
+    " 0",
+    ".5",
+    " 1",
+    " U",
+};
+
+static char* r500_fs_op_rgb[] = {
+    "MAD",
+    "DP3",
+    "DP4",
+    "D2A",
+    "MIN",
+    "MAX",
+    "---",
+    "CND",
+    "CMP",
+    "FRC",
+    "SOP",
+    "MDH",
+    "MDV",
+};
+
+static char* r500_fs_op_alpha[] = {
+    "MAD",
+    " DP",
+    "MIN",
+    "MAX",
+    "---",
+    "CND",
+    "CMP",
+    "FRC",
+    "EX2",
+    "LN2",
+    "RCP",
+    "RSQ",
+    "SIN",
+    "COS",
+    "MDH",
+    "MDV",
+};
+
+static char* r500_fs_mask[] = {
+    "NONE",
+    "R   ",
+    " G  ",
+    "RG  ",
+    "  B ",
+    "R B ",
+    " GB ",
+    "RGB ",
+    "   A",
+    "R  A",
+    " G A",
+    "RG A",
+    "  BA",
+    "R BA",
+    " GBA",
+    "RGBA",
+};
+
+static char* r500_fs_tex[] = {
+    "    NOP",
+    "     LD",
+    "TEXKILL",
+    "   PROJ",
+    "LODBIAS",
+    "    LOD",
+    "   DXDY",
+};
+
+static char* r300_vs_ve_ops[] = {
+    /* R300 vector ops */
+    "                 VE_NO_OP",
+    "           VE_DOT_PRODUCT",
+    "              VE_MULTIPLY",
+    "                   VE_ADD",
+    "          VE_MULTIPLY_ADD",
+    "       VE_DISTANCE_FACTOR",
+    "              VE_FRACTION",
+    "               VE_MAXIMUM",
+    "               VE_MINIMUM",
+    "VE_SET_GREATER_THAN_EQUAL",
+    "         VE_SET_LESS_THAN",
+    "        VE_MULTIPLYX2_ADD",
+    "        VE_MULTIPLY_CLAMP",
+    "            VE_FLT2FIX_DX",
+    "        VE_FLT2FIX_DX_RND",
+    /* R500 vector ops */
+    "      VE_PRED_SET_EQ_PUSH",
+    "      VE_PRED_SET_GT_PUSH",
+    "     VE_PRED_SET_GTE_PUSH",
+    "     VE_PRED_SET_NEQ_PUSH",
+    "         VE_COND_WRITE_EQ",
+    "         VE_COND_WRITE_GT",
+    "        VE_COND_WRITE_GTE",
+    "        VE_COND_WRITE_NEQ",
+    "      VE_SET_GREATER_THAN",
+    "             VE_SET_EQUAL",
+    "         VE_SET_NOT_EQUAL",
+    "               (reserved)",
+    "               (reserved)",
+    "               (reserved)",
+};
+
+static char* r300_vs_me_ops[] = {
+    /* R300 math ops */
+    "                 ME_NO_OP",
+    "          ME_EXP_BASE2_DX",
+    "          ME_LOG_BASE2_DX",
+    "          ME_EXP_BASEE_FF",
+    "        ME_LIGHT_COEFF_DX",
+    "         ME_POWER_FUNC_FF",
+    "              ME_RECIP_DX",
+    "              ME_RECIP_FF",
+    "         ME_RECIP_SQRT_DX",
+    "         ME_RECIP_SQRT_FF",
+    "              ME_MULTIPLY",
+    "     ME_EXP_BASE2_FULL_DX",
+    "     ME_LOG_BASE2_FULL_DX",
+    " ME_POWER_FUNC_FF_CLAMP_B",
+    "ME_POWER_FUNC_FF_CLAMP_B1",
+    "ME_POWER_FUNC_FF_CLAMP_01",
+    "                   ME_SIN",
+    "                   ME_COS",
+    /* R500 math ops */
+    "        ME_LOG_BASE2_IEEE",
+    "            ME_RECIP_IEEE",
+    "       ME_RECIP_SQRT_IEEE",
+    "           ME_PRED_SET_EQ",
+    "           ME_PRED_SET_GT",
+    "          ME_PRED_SET_GTE",
+    "          ME_PRED_SET_NEQ",
+    "          ME_PRED_SET_CLR",
+    "          ME_PRED_SET_INV",
+    "          ME_PRED_SET_POP",
+    "      ME_PRED_SET_RESTORE",
+    "               (reserved)",
+    "               (reserved)",
+    "               (reserved)",
+};
+
 void r500_fs_dump(struct r500_fragment_shader* fs);
 
 void r300_vs_dump(struct r300_vertex_shader* vs);