fix some printing issues related to subroutines
authorBrian <brian@yutani.localnet.net>
Tue, 27 Mar 2007 20:53:17 +0000 (14:53 -0600)
committerBrian <brian@yutani.localnet.net>
Tue, 27 Mar 2007 22:06:47 +0000 (16:06 -0600)
src/mesa/shader/prog_print.c

index 8fa7ef3..4ecdc82 100644 (file)
@@ -567,17 +567,6 @@ _mesa_print_instruction_opt(const struct prog_instruction *inst, GLint indent,
                    _mesa_swizzle_string(inst->DstReg.CondSwizzle, 0, GL_FALSE));
       print_comment(inst);
       break;
-   case OPCODE_CAL:
-      _mesa_printf("CAL %u", inst->BranchTarget);
-      print_comment(inst);
-      break;
-   case OPCODE_RET:
-      _mesa_printf("RET (%s%s); # (goto %d)",
-                   condcode_string(inst->DstReg.CondMask),
-                   _mesa_swizzle_string(inst->DstReg.CondSwizzle, 0, GL_FALSE),
-                   inst->BranchTarget);
-      print_comment(inst);
-      break;
    case OPCODE_IF:
       if (inst->SrcReg[0].File != PROGRAM_UNDEFINED) {
          /* Use ordinary register */
@@ -629,13 +618,38 @@ _mesa_print_instruction_opt(const struct prog_instruction *inst, GLint indent,
       break;
 
    case OPCODE_BGNSUB:
-      _mesa_printf("BGNSUB");
-      print_comment(inst);
-      return indent + 3;
+      if (mode == PROG_PRINT_NV) {
+         _mesa_printf("%s:\n", inst->Comment); /* comment is label */
+         return indent;
+      }
+      else {
+         _mesa_printf("BGNSUB");
+         print_comment(inst);
+         return indent + 3;
+      }
    case OPCODE_ENDSUB:
-      _mesa_printf("ENDSUB");
+      if (mode == PROG_PRINT_DEBUG) {
+         _mesa_printf("ENDSUB");
+         print_comment(inst);
+      }
+      break;
+   case OPCODE_CAL:
+      if (mode == PROG_PRINT_NV) {
+         _mesa_printf("CAL %s;\n", inst->Comment);
+      }
+      else {
+         _mesa_printf("CAL %u", inst->BranchTarget);
+         print_comment(inst);
+      }
+      break;
+   case OPCODE_RET:
+      _mesa_printf("RET (%s%s); # (goto %d)",
+                   condcode_string(inst->DstReg.CondMask),
+                   _mesa_swizzle_string(inst->DstReg.CondSwizzle, 0, GL_FALSE),
+                   inst->BranchTarget);
       print_comment(inst);
       break;
+
    case OPCODE_END:
       _mesa_printf("END\n");
       break;