diff options
| -rw-r--r-- | src/gallium/drivers/r300/r300_debug.c | 90 | ||||
| -rw-r--r-- | src/gallium/drivers/r300/r300_debug.h | 146 | 
2 files changed, 160 insertions, 76 deletions
| diff --git a/src/gallium/drivers/r300/r300_debug.c b/src/gallium/drivers/r300/r300_debug.c index dd63136c9d..1ff72172eb 100644 --- a/src/gallium/drivers/r300/r300_debug.c +++ b/src/gallium/drivers/r300/r300_debug.c @@ -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); diff --git a/src/gallium/drivers/r300/r300_debug.h b/src/gallium/drivers/r300/r300_debug.h index a1f873656d..6306594099 100644 --- a/src/gallium/drivers/r300/r300_debug.h +++ b/src/gallium/drivers/r300/r300_debug.h @@ -27,6 +27,152 @@  #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); | 
