From 2882e5162525138316db9a1ab539a17498d06da1 Mon Sep 17 00:00:00 2001 From: Nicolai Haehnle Date: Sat, 14 Jun 2008 03:34:09 +0200 Subject: r300: Add radeonCompilerDump for debugging --- src/mesa/drivers/dri/r300/r300_fragprog.c | 5 +++++ src/mesa/drivers/dri/r300/radeon_program.c | 32 ++++++++++++++++++++++++++++++ src/mesa/drivers/dri/r300/radeon_program.h | 1 + 3 files changed, 38 insertions(+) (limited to 'src/mesa') diff --git a/src/mesa/drivers/dri/r300/r300_fragprog.c b/src/mesa/drivers/dri/r300/r300_fragprog.c index 4c6289298e..814ccd3eac 100644 --- a/src/mesa/drivers/dri/r300/r300_fragprog.c +++ b/src/mesa/drivers/dri/r300/r300_fragprog.c @@ -301,6 +301,11 @@ void r300TranslateFragmentShader(r300ContextPtr r300, &compiler.compiler.Clauses[0], 1, transformations); + if (RADEON_DEBUG & DEBUG_PIXEL) { + _mesa_printf("Compiler state after transformations:\n"); + radeonCompilerDump(&compiler.compiler); + } + if (!r300FragmentProgramEmit(&compiler)) fp->error = GL_TRUE; diff --git a/src/mesa/drivers/dri/r300/radeon_program.c b/src/mesa/drivers/dri/r300/radeon_program.c index 41cedbe61d..c8f40e8189 100644 --- a/src/mesa/drivers/dri/r300/radeon_program.c +++ b/src/mesa/drivers/dri/r300/radeon_program.c @@ -27,6 +27,7 @@ #include "radeon_program.h" +#include "shader/prog_print.h" /** * Initialize a compiler structure with a single mixed clause @@ -79,6 +80,37 @@ int radeonCompilerAllocateTemporary(struct radeon_compiler *compiler) } +static const char* clausename(int type) +{ + switch(type) { + case CLAUSE_MIXED: return "CLAUSE_MIXED"; + case CLAUSE_ALU: return "CLAUSE_ALU"; + case CLAUSE_TEX: return "CLAUSE_TEX"; + default: return "CLAUSE_UNKNOWN"; + } +} + + +/** + * Dump the current compiler state to the console for debugging. + */ +void radeonCompilerDump(struct radeon_compiler *compiler) +{ + int i; + for(i = 0; i < compiler->NumClauses; ++i) { + struct radeon_clause *clause = &compiler->Clauses[i]; + int j; + + _mesa_printf("%2i: %s\n", i+1, clausename(clause->Type)); + + for(j = 0; j < clause->NumInstructions; ++j) { + _mesa_printf("%4i: ", j+1); + _mesa_print_instruction(&clause->Instructions[j]); + } + } +} + + /** * \p position index of the new clause; later clauses are moved * \p type of the new clause; one of CLAUSE_XXX diff --git a/src/mesa/drivers/dri/r300/radeon_program.h b/src/mesa/drivers/dri/r300/radeon_program.h index 3cde4d4f6f..25e70505b1 100644 --- a/src/mesa/drivers/dri/r300/radeon_program.h +++ b/src/mesa/drivers/dri/r300/radeon_program.h @@ -104,6 +104,7 @@ void radeonCompilerInit( struct gl_program *source); void radeonCompilerCleanup(struct radeon_compiler *compiler); int radeonCompilerAllocateTemporary(struct radeon_compiler *compiler); +void radeonCompilerDump(struct radeon_compiler *compiler); struct radeon_clause *radeonCompilerInsertClause( struct radeon_compiler *compiler, -- cgit v1.2.3