r300-gallium: vs: Dupe tokens, better debug, count spurious insts.

This commit is contained in:
Corbin Simpson
2009-05-17 09:39:06 -07:00
parent 08ec7e0d32
commit 764bf9501a
3 changed files with 23 additions and 6 deletions

View File

@@ -152,10 +152,12 @@ void r500_fs_dump(struct r500_fragment_shader* fs)
static void r300_vs_op_dump(uint32_t op)
{
if (op & 0x81) {
if (op & 0x80) {
if (op & 0x1) {
debug_printf("PVS_MACRO_OP_2CLK_M2X_ADD\n");
} else if (op & 0x80) {
} else {
debug_printf(" PVS_MACRO_OP_2CLK_MADD\n");
}
} else if (op & 0x40) {
debug_printf("%s\n", r300_vs_me_ops[op & 0x1f]);
} else {

View File

@@ -634,6 +634,7 @@ static void* r300_create_vs_state(struct pipe_context* pipe,
struct r300_vertex_shader* vs = CALLOC_STRUCT(r300_vertex_shader);
/* Copy state directly into shader. */
vs->state = *shader;
vs->state.tokens = tgsi_dup_tokens(shader->tokens);
tgsi_scan_shader(shader->tokens, &vs->info);
@@ -679,6 +680,7 @@ static void r300_delete_vs_state(struct pipe_context* pipe, void* shader)
struct r300_vertex_shader* vs = (struct r300_vertex_shader*)shader;
draw_delete_vertex_shader(r300->draw, vs->draw);
FREE(vs->state.tokens);
FREE(shader);
} else {
draw_delete_vertex_shader(r300->draw,

View File

@@ -334,6 +334,8 @@ void r300_translate_vertex_shader(struct r300_context* r300,
int i;
struct r300_constant_buffer* consts =
&r300->shader_constants[PIPE_SHADER_VERTEX];
boolean end = FALSE;
int spurious = 0;
struct r300_vs_asm* assembler = CALLOC_STRUCT(r300_vs_asm);
if (assembler == NULL) {
@@ -373,8 +375,16 @@ void r300_translate_vertex_shader(struct r300_context* r300,
assembler->imm_count++;
break;
case TGSI_TOKEN_TYPE_INSTRUCTION:
if (parser.FullToken.FullInstruction.Instruction.Opcode ==
TGSI_OPCODE_END) {
end = TRUE;
}
if (end) {
spurious++;
} else {
r300_vs_instruction(vs, assembler,
&parser.FullToken.FullInstruction);
}
break;
}
}
@@ -391,6 +401,9 @@ void r300_translate_vertex_shader(struct r300_context* r300,
debug_printf("r300: vs: tab: %d %d %d %d\n", assembler->tab[0],
assembler->tab[1], assembler->tab[2], assembler->tab[3]);
debug_printf("r300: vs: %d spurious instructions following END\n",
spurious - 1);
tgsi_dump(vs->state.tokens);
/* XXX finish r300 vertex shader dumper */
r300_vs_dump(vs);