[intel] intel_batchbuffer_flush using uninit 'used' to check for buffer empty
[mesa.git] / src / mesa / shader / prog_print.c
index d290ce0a2a5e892ea1ac898f6202b430a3dba5be..308cce2206c5497815ad1c6d7b61f428a7d716ca 100644 (file)
@@ -99,7 +99,23 @@ arb_input_attrib_string(GLint index, GLenum progType)
       "vertex.texcoord[4]",
       "vertex.texcoord[5]",
       "vertex.texcoord[6]",
-      "vertex.texcoord[7]"
+      "vertex.texcoord[7]",
+      "vertex.attrib[0]",
+      "vertex.attrib[1]",
+      "vertex.attrib[2]",
+      "vertex.attrib[3]",
+      "vertex.attrib[4]",
+      "vertex.attrib[5]",
+      "vertex.attrib[6]",
+      "vertex.attrib[7]",
+      "vertex.attrib[8]",
+      "vertex.attrib[9]",
+      "vertex.attrib[10]",
+      "vertex.attrib[11]",
+      "vertex.attrib[12]",
+      "vertex.attrib[13]",
+      "vertex.attrib[14]",
+      "vertex.attrib[15]"
    };
    const char *fragAttribs[] = {
       "fragment.position",
@@ -361,8 +377,8 @@ writemask_string(GLuint writeMask)
 }
 
 
-static const char *
-condcode_string(GLuint condcode)
+const char *
+_mesa_condcode_string(GLuint condcode)
 {
    switch (condcode) {
    case COND_GT:  return "GT";
@@ -390,7 +406,7 @@ print_dst_reg(const struct prog_dst_register *dstReg, gl_prog_print_mode mode,
 
    if (dstReg->CondMask != COND_TR) {
       _mesa_printf(" (%s.%s)",
-                   condcode_string(dstReg->CondMask),
+                   _mesa_condcode_string(dstReg->CondMask),
                    _mesa_swizzle_string(dstReg->CondSwizzle, GL_FALSE, GL_FALSE));
    }
 
@@ -561,21 +577,27 @@ _mesa_print_instruction_opt(const struct prog_instruction *inst, GLint indent,
       print_comment(inst);
       break;
    case OPCODE_BRA:
-      _mesa_printf("BRA %u (%s%s)",
+      _mesa_printf("BRA %d (%s%s)",
                    inst->BranchTarget,
-                   condcode_string(inst->DstReg.CondMask),
+                   _mesa_condcode_string(inst->DstReg.CondMask),
                    _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_IF:
-      _mesa_printf("IF (%s%s); # (if false, goto %d)",
-                   condcode_string(inst->DstReg.CondMask),
-                   _mesa_swizzle_string(inst->DstReg.CondSwizzle, 0, GL_FALSE),
-                   inst->BranchTarget);
+      if (inst->SrcReg[0].File != PROGRAM_UNDEFINED) {
+         /* Use ordinary register */
+         _mesa_printf("IF ");
+         print_src_reg(&inst->SrcReg[0], mode, prog);
+         _mesa_printf("; ");
+      }
+      else {
+         /* Use cond codes */
+         _mesa_printf("IF (%s%s);",
+                      _mesa_condcode_string(inst->DstReg.CondMask),
+                      _mesa_swizzle_string(inst->DstReg.CondSwizzle,
+                                           0, GL_FALSE));
+      }
+      _mesa_printf(" # (if false, goto %d)", inst->BranchTarget);
       print_comment(inst);
       return indent + 3;
    case OPCODE_ELSE:
@@ -591,27 +613,47 @@ _mesa_print_instruction_opt(const struct prog_instruction *inst, GLint indent,
       _mesa_printf("ENDLOOP; # (goto %d)\n", inst->BranchTarget);
       break;
    case OPCODE_BRK:
-      _mesa_printf("BRK (%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_CONT:
-      _mesa_printf("CONT (%s%s); #(goto %d)",
-                   condcode_string(inst->DstReg.CondMask),
+      _mesa_printf("%s (%s%s); # (goto %d)",
+                   _mesa_opcode_string(inst->Opcode),
+                   _mesa_condcode_string(inst->DstReg.CondMask),
                    _mesa_swizzle_string(inst->DstReg.CondSwizzle, 0, GL_FALSE),
                    inst->BranchTarget);
       print_comment(inst);
       break;
+
    case OPCODE_BGNSUB:
-      _mesa_printf("SUB");
-      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;  # (goto %d)\n", inst->Comment, inst->BranchTarget);
+      }
+      else {
+         _mesa_printf("CAL %u", inst->BranchTarget);
+         print_comment(inst);
+      }
+      break;
+   case OPCODE_RET:
+      _mesa_printf("RET (%s%s)",
+                   _mesa_condcode_string(inst->DstReg.CondMask),
+                   _mesa_swizzle_string(inst->DstReg.CondSwizzle, 0, GL_FALSE));
       print_comment(inst);
       break;
+
    case OPCODE_END:
       _mesa_printf("END\n");
       break;