From f787baff80235e8f90a72d43d4372b1ac977f161 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Thu, 5 Mar 2009 17:14:05 -0700 Subject: mesa: when printing src regs, use |reg| for absolute value And check opcode number to avoid crashing on driver-private opcodes. --- src/mesa/shader/prog_print.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/mesa/shader/prog_print.c b/src/mesa/shader/prog_print.c index 2747480834..6988e9c052 100644 --- a/src/mesa/shader/prog_print.c +++ b/src/mesa/shader/prog_print.c @@ -458,11 +458,15 @@ fprint_src_reg(FILE *f, gl_prog_print_mode mode, const struct gl_program *prog) { - _mesa_fprintf(f, "%s%s", + const char *abs = srcReg->Abs ? "|" : ""; + + _mesa_fprintf(f, "%s%s%s%s", + abs, reg_string((enum register_file) srcReg->File, srcReg->Index, mode, srcReg->RelAddr, prog), _mesa_swizzle_string(srcReg->Swizzle, - srcReg->NegateBase, GL_FALSE)); + srcReg->NegateBase, GL_FALSE), + abs); #if 0 _mesa_fprintf(f, "%s[%d]%s", file_string((enum register_file) srcReg->File, mode), @@ -724,11 +728,16 @@ _mesa_fprint_instruction_opt(FILE *f, break; /* XXX may need other special-case instructions */ default: - /* typical alu instruction */ - fprint_alu_instruction(f, inst, - _mesa_opcode_string(inst->Opcode), - _mesa_num_inst_src_regs(inst->Opcode), - mode, prog); + if (inst->Opcode < MAX_OPCODE) { + /* typical alu instruction */ + fprint_alu_instruction(f, inst, + _mesa_opcode_string(inst->Opcode), + _mesa_num_inst_src_regs(inst->Opcode), + mode, prog); + } + else { + _mesa_fprintf(f, "Other opcode %d\n", inst->Opcode); + } break; } return indent; -- cgit v1.2.3