Added few more stubs so that control reaches to DestroyDevice().
[mesa.git] / src / mesa / program / prog_print.c
index bdeb8fd675230e543ab4ce238aa65a30bc8e6b73..7e043302da219074e682e1ffb8723a7255659380 100644 (file)
 
 #include "main/glheader.h"
 #include "main/context.h"
-#include "main/imports.h"
+
 #include "prog_instruction.h"
 #include "prog_parameter.h"
 #include "prog_print.h"
 #include "prog_statevars.h"
+#include "util/bitscan.h"
 
 
 
@@ -50,12 +51,14 @@ _mesa_register_file_name(gl_register_file f)
    switch (f) {
    case PROGRAM_TEMPORARY:
       return "TEMP";
-   case PROGRAM_STATE_VAR:
-      return "STATE";
+   case PROGRAM_ARRAY:
+      return "ARRAY";
    case PROGRAM_INPUT:
       return "INPUT";
    case PROGRAM_OUTPUT:
       return "OUTPUT";
+   case PROGRAM_STATE_VAR:
+      return "STATE";
    case PROGRAM_CONSTANT:
       return "CONST";
    case PROGRAM_UNIFORM:
@@ -68,10 +71,20 @@ _mesa_register_file_name(gl_register_file f)
       return "SYSVAL";
    case PROGRAM_UNDEFINED:
       return "UNDEFINED";
+   case PROGRAM_IMMEDIATE:
+      return "IMM";
+   case PROGRAM_BUFFER:
+      return "BUFFER";
+   case PROGRAM_MEMORY:
+      return "MEMORY";
+   case PROGRAM_IMAGE:
+      return "IMAGE";
+   case PROGRAM_HW_ATOMIC:
+      return "HWATOMIC";
    default:
       {
          static char s[20];
-         _mesa_snprintf(s, sizeof(s), "FILE%u", f);
+         snprintf(s, sizeof(s), "FILE%u", f);
          return s;
       }
    }
@@ -89,7 +102,6 @@ arb_input_attrib_string(GLuint index, GLenum progType)
     */
    static const char *const vertAttribs[] = {
       "vertex.position",
-      "vertex.weight",
       "vertex.normal",
       "vertex.color.primary",
       "vertex.color.secondary",
@@ -153,6 +165,8 @@ arb_input_attrib_string(GLuint index, GLenum progType)
       "fragment.(twenty-seven)", /* VARYING_SLOT_CULL_DIST1 */
       "fragment.(twenty-eight)", /* VARYING_SLOT_BOUNDING_BOX0 */
       "fragment.(twenty-nine)", /* VARYING_SLOT_BOUNDING_BOX1 */
+      "fragment.(thirty)", /* VARYING_SLOT_VIEW_INDEX */
+      "fragment.(thirty-one)", /* VARYING_SLOT_VIEWPORT_MASK */
       "fragment.varying[0]",
       "fragment.varying[1]",
       "fragment.varying[2]",
@@ -284,6 +298,8 @@ arb_output_attrib_string(GLuint index, GLenum progType)
       "result.(twenty-seven)", /* VARYING_SLOT_CULL_DIST1 */
       "result.(twenty-eight)", /* VARYING_SLOT_BOUNDING_BOX0 */
       "result.(twenty-nine)", /* VARYING_SLOT_BOUNDING_BOX1 */
+      "result.(thirty)", /* VARYING_SLOT_VIEW_INDEX */
+      "result.(thirty-one)", /* VARYING_SLOT_VIEWPORT_MASK */
       "result.varying[0]",
       "result.varying[1]",
       "result.varying[2]",
@@ -520,7 +536,7 @@ fprint_dst_reg(FILE * f,
           reg_string((gl_register_file) dstReg->File,
                      dstReg->Index, mode, dstReg->RelAddr, prog),
           _mesa_writemask_string(dstReg->WriteMask));
-   
+
 #if 0
    fprintf(f, "%s[%d]%s",
           _mesa_register_file_name((gl_register_file) dstReg->File),
@@ -532,7 +548,7 @@ fprint_dst_reg(FILE * f,
 
 static void
 fprint_src_reg(FILE *f,
-               const struct prog_src_register *srcReg, 
+               const struct prog_src_register *srcReg,
                gl_prog_print_mode mode,
                const struct gl_program *prog)
 {
@@ -886,7 +902,7 @@ _mesa_fprint_program_parameters(FILE *f,
       const GLfloat *p = prog->LocalParams[i];
       fprintf(f, "%2d: %f, %f, %f, %f\n", i, p[0], p[1], p[2], p[3]);
    }
-#endif 
+#endif
    _mesa_print_parameter_list(prog->Parameters);
 }
 
@@ -918,7 +934,9 @@ _mesa_fprint_parameter_list(FILE *f,
    fprintf(f, "dirty state flags: 0x%x\n", list->StateFlags);
    for (i = 0; i < list->NumParameters; i++){
       struct gl_program_parameter *param = list->Parameters + i;
-      const GLfloat *v = (GLfloat *) list->ParameterValues[i];
+      unsigned pvo = list->ParameterValueOffset[i];
+      const GLfloat *v = (GLfloat *) list->ParameterValues + pvo;
+
       fprintf(f, "param[%d] sz=%d %s %s = {%.3g, %.3g, %.3g, %.3g}",
              i, param->Size,
              _mesa_register_file_name(list->Parameters[i].Type),
@@ -967,16 +985,22 @@ _mesa_write_shader_to_file(const struct gl_shader *shader)
    case MESA_SHADER_COMPUTE:
       type = "comp";
       break;
+   default:
+      break;
    }
 
-   _mesa_snprintf(filename, sizeof(filename), "shader_%u.%s", shader->Name, type);
+   snprintf(filename, sizeof(filename), "shader_%u.%s", shader->Name, type);
    f = fopen(filename, "w");
    if (!f) {
       fprintf(stderr, "Unable to open %s for writing\n", filename);
       return;
    }
 
+#ifdef DEBUG
    fprintf(f, "/* Shader %u source, checksum %u */\n", shader->Name, shader->SourceChecksum);
+#else
+   fprintf(f, "/* Shader %u source */\n", shader->Name);
+#endif
    fputs(shader->Source, f);
    fprintf(f, "\n");
 
@@ -997,19 +1021,18 @@ _mesa_write_shader_to_file(const struct gl_shader *shader)
  * _mesa_write_shader_to_file function.
  */
 void
-_mesa_append_uniforms_to_file(const struct gl_linked_shader *shader)
+_mesa_append_uniforms_to_file(const struct gl_program *prog)
 {
-   const struct gl_program *const prog = shader->Program;
    const char *type;
    char filename[100];
    FILE *f;
 
-   if (shader->Stage == MESA_SHADER_FRAGMENT)
+   if (prog->info.stage == MESA_SHADER_FRAGMENT)
       type = "frag";
    else
       type = "vert";
 
-   _mesa_snprintf(filename, sizeof(filename), "shader.%s", type);
+   snprintf(filename, sizeof(filename), "shader.%s", type);
    f = fopen(filename, "a"); /* append */
    if (!f) {
       fprintf(stderr, "Unable to open %s for appending\n", filename);