Mesa (master): mesa: when printing src regs, use |reg| for absolute value

Brian Paul brianp at kemper.freedesktop.org
Fri Mar 6 00:29:52 UTC 2009


Module: Mesa
Branch: master
Commit: f787baff80235e8f90a72d43d4372b1ac977f161
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f787baff80235e8f90a72d43d4372b1ac977f161

Author: Brian Paul <brianp at vmware.com>
Date:   Thu Mar  5 17:14:05 2009 -0700

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 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/src/mesa/shader/prog_print.c b/src/mesa/shader/prog_print.c
index 2747480..6988e9c 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;




More information about the mesa-commit mailing list