r600g: dump raw shader output for debugging
authorJerome Glisse <jglisse@redhat.com>
Fri, 3 Dec 2010 16:34:47 +0000 (11:34 -0500)
committerJerome Glisse <jglisse@redhat.com>
Fri, 3 Dec 2010 16:35:36 +0000 (11:35 -0500)
Signed-off-by: Jerome Glisse <jglisse@redhat.com>
src/gallium/drivers/r600/r600_asm.c
src/gallium/drivers/r600/r600_asm.h
src/gallium/drivers/r600/r600_shader.c

index edadedf..73daa00 100644 (file)
@@ -947,3 +947,28 @@ void r600_bc_clear(struct r600_bc *bc)
 
        LIST_INITHEAD(&cf->list);
 }
+
+void r600_bc_dump(struct r600_bc *bc)
+{
+       unsigned i;
+       char chip = '6';
+
+       switch (bc->chiprev) {
+       case 1:
+               chip = '7';
+               break;
+       case 2:
+               chip = 'E';
+               break;
+       case 0:
+       default:
+               chip = '6';
+               break;
+       }
+       fprintf(stderr, "bytecode %d dw -----------------------\n", bc->ndw);
+       fprintf(stderr, "     %c\n", chip);
+       for (i = 0; i < bc->ndw; i++) {
+               fprintf(stderr, "0x%08X\n", bc->bytecode[i]);
+       }
+       fprintf(stderr, "--------------------------------------\n");
+}
index f2016af..1be5e4a 100644 (file)
@@ -200,6 +200,7 @@ int r600_bc_add_output(struct r600_bc *bc, const struct r600_bc_output *output);
 int r600_bc_build(struct r600_bc *bc);
 int r600_bc_add_cfinst(struct r600_bc *bc, int inst);
 int r600_bc_add_alu_type(struct r600_bc *bc, const struct r600_bc_alu *alu, int type);
+void r600_bc_dump(struct r600_bc *bc);
 
 /* r700_asm.c */
 int r700_bc_alu_build(struct r600_bc *bc, struct r600_bc_alu *alu, unsigned id);
index 77b1809..b6d815f 100644 (file)
@@ -351,6 +351,7 @@ int r600_pipe_shader_create(struct pipe_context *ctx, struct r600_pipe_shader *s
                        return r;
                }
        }
+//r600_bc_dump(&shader->shader.bc);
 //fprintf(stderr, "______________________________________________________________\n");
        return 0;
 }