r300/compiler: Add rc_print_program

Signed-off-by: Nicolai Hähnle <nhaehnle@gmail.com>
This commit is contained in:
Nicolai Hähnle 2009-07-23 22:09:11 +02:00
parent 8bcb6ef786
commit 2237d136cd
4 changed files with 34 additions and 1 deletions

View file

@ -194,3 +194,27 @@ void rc_mesa_to_rc_program(struct radeon_compiler * c, struct gl_program * progr
c->Program.InputsRead = program->InputsRead;
}
/**
* Print program to stderr, default options.
*/
void rc_print_program(const struct rc_program *prog)
{
GLuint indent = 0;
GLuint linenum = 1;
struct rc_instruction *inst;
fprintf(stderr, "# Radeon Compiler Program\n");
for(inst = prog->Instructions.Next; inst != &prog->Instructions; inst = inst->Next) {
fprintf(stderr, "%3d: ", linenum);
/* Massive hack: We rely on the fact that the printers do not actually
* use the gl_program argument (last argument) in debug mode */
indent = _mesa_fprint_instruction_opt(
stderr, &inst->I,
indent, PROG_PRINT_DEBUG, 0);
linenum++;
}
}

View file

@ -36,6 +36,7 @@
struct radeon_compiler;
struct rc_instruction;
struct rc_program;
enum {
PROGRAM_BUILTIN = PROGRAM_FILE_MAX /**< not a real register, but a special swizzle constant */
@ -134,5 +135,6 @@ struct rc_instruction *rc_alloc_instruction(struct radeon_compiler * c);
struct rc_instruction *rc_insert_new_instruction(struct radeon_compiler * c, struct rc_instruction * after);
void rc_mesa_to_rc_program(struct radeon_compiler * c, struct gl_program * program);
void rc_print_program(const struct rc_program *prog);
#endif

View file

@ -541,7 +541,7 @@ _mesa_print_alu_instruction(const struct prog_instruction *inst,
/**
* Print a single vertex/fragment program instruction.
*/
static GLint
GLint
_mesa_fprint_instruction_opt(FILE *f,
const struct prog_instruction *inst,
GLint indent,

View file

@ -56,6 +56,13 @@ _mesa_print_alu_instruction(const struct prog_instruction *inst,
extern void
_mesa_print_instruction(const struct prog_instruction *inst);
extern GLint
_mesa_fprint_instruction_opt(FILE *f,
const struct prog_instruction *inst,
GLint indent,
gl_prog_print_mode mode,
const struct gl_program *prog);
extern GLint
_mesa_print_instruction_opt(const struct prog_instruction *inst, GLint indent,
gl_prog_print_mode mode,