r300-gallium: Start VS dumper.
This commit is contained in:
@@ -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)
|
void r500_fs_dump(struct r500_fragment_shader* fs)
|
||||||
{
|
{
|
||||||
int i;
|
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)
|
void r300_vs_dump(struct r300_vertex_shader* vs)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < vs->instruction_count; 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("inst1: 0x%x\n", vs->instructions[i].inst1);
|
||||||
debug_printf("inst2: 0x%x\n", vs->instructions[i].inst2);
|
debug_printf("inst2: 0x%x\n", vs->instructions[i].inst2);
|
||||||
debug_printf("inst3: 0x%x\n", vs->instructions[i].inst3);
|
debug_printf("inst3: 0x%x\n", vs->instructions[i].inst3);
|
||||||
|
@@ -27,6 +27,152 @@
|
|||||||
#include "r300_state_shader.h"
|
#include "r300_state_shader.h"
|
||||||
#include "r300_state_tcl.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 r500_fs_dump(struct r500_fragment_shader* fs);
|
||||||
|
|
||||||
void r300_vs_dump(struct r300_vertex_shader* vs);
|
void r300_vs_dump(struct r300_vertex_shader* vs);
|
||||||
|
Reference in New Issue
Block a user