summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/r300/r300_state_tcl.c
diff options
context:
space:
mode:
authorCorbin Simpson <MostAwesomeDude@gmail.com>2009-05-17 09:39:06 -0700
committerCorbin Simpson <MostAwesomeDude@gmail.com>2009-05-17 09:39:06 -0700
commit764bf9501adea0f3dbe8d7c718b22dfb067fbbfa (patch)
tree2cb0659cdc0587fa3064220e28ab6afc777979b2 /src/gallium/drivers/r300/r300_state_tcl.c
parent08ec7e0d329a72433b427e8167b2c3442d1f53b4 (diff)
r300-gallium: vs: Dupe tokens, better debug, count spurious insts.
Diffstat (limited to 'src/gallium/drivers/r300/r300_state_tcl.c')
-rw-r--r--src/gallium/drivers/r300/r300_state_tcl.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/gallium/drivers/r300/r300_state_tcl.c b/src/gallium/drivers/r300/r300_state_tcl.c
index ed9164db49..8b7a2ec5e9 100644
--- a/src/gallium/drivers/r300/r300_state_tcl.c
+++ b/src/gallium/drivers/r300/r300_state_tcl.c
@@ -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:
- r300_vs_instruction(vs, assembler,
- &parser.FullToken.FullInstruction);
+ 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);