Browse Source

r300/compiler: Add rc_print_program

Signed-off-by: Nicolai Hähnle <nhaehnle@gmail.com>
tags/mesa_7_6_rc1
Nicolai Hähnle 16 years ago
parent
commit
2237d136cd

+ 24
- 0
src/mesa/drivers/dri/r300/compiler/radeon_program.c 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++;
}
}

+ 2
- 0
src/mesa/drivers/dri/r300/compiler/radeon_program.h 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

+ 1
- 1
src/mesa/shader/prog_print.c 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,

+ 7
- 0
src/mesa/shader/prog_print.h 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,

Loading…
Cancel
Save