Mesa (master): mesa: meaningless whitespace change to see if git's working (ignore)

Brian Paul brianp at kemper.freedesktop.org
Fri Feb 6 16:57:39 UTC 2009


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

Author: Brian Paul <brianp at vmware.com>
Date:   Fri Feb  6 09:57:28 2009 -0700

mesa: meaningless whitespace change to see if git's working (ignore)

---

 Makefile                              |    1 +
 src/mesa/main/debug.c                 |    4 +--
 src/mesa/main/mtypes.h                |   10 ++++-
 src/mesa/shader/shader_api.c          |   62 +++++++++++++++++++++++++++++++++
 src/mesa/shader/slang/slang_compile.c |   18 ++++++++--
 src/mesa/shader/slang/slang_link.c    |   20 ++++++----
 src/mesa/shader/slang/slang_log.c     |    6 +--
 src/mesa/sources                      |    1 +
 8 files changed, 102 insertions(+), 20 deletions(-)

diff --git a/Makefile b/Makefile
index 419265d..4d4c6a5 100644
--- a/Makefile
+++ b/Makefile
@@ -16,6 +16,7 @@ default: $(TOP)/configs/current
 doxygen:
 	cd doxygen && $(MAKE)
 
+
 clean:
 	- at touch $(TOP)/configs/current
 	- at for dir in $(SUBDIRS) ; do \
diff --git a/src/mesa/main/debug.c b/src/mesa/main/debug.c
index 77fef32..65970a5 100644
--- a/src/mesa/main/debug.c
+++ b/src/mesa/main/debug.c
@@ -164,9 +164,7 @@ static void add_debug_flags( const char *debug )
       { "api",       VERBOSE_API },
       { "list",      VERBOSE_DISPLAY_LIST },
       { "lighting",  VERBOSE_LIGHTING },
-      { "disassem",  VERBOSE_DISASSEM },
-      { "glsl",      VERBOSE_GLSL },     /* report GLSL compile/link errors */
-      { "glsl_dump", VERBOSE_GLSL_DUMP } /* print shader GPU instructions */
+      { "disassem",  VERBOSE_DISASSEM }
    };
    GLuint i;
 
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index 17dd3e6..509da06 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -2162,6 +2162,13 @@ struct gl_shader_program
 };   
 
 
+#define GLSL_DUMP      0x1  /**< Dump shaders to stdout */
+#define GLSL_LOG       0x2  /**< Write shaders to files */
+#define GLSL_OPT       0x4  /**< Force optimizations (override pragmas) */
+#define GLSL_NO_OPT    0x8  /**< Force no optimizations (override pragmas) */
+#define GLSL_UNIFORMS 0x10  /**< Print glUniform calls */
+
+
 /**
  * Context state for GLSL vertex/fragment shaders.
  */
@@ -2173,6 +2180,7 @@ struct gl_shader_state
    GLboolean EmitCondCodes;             /**< Use condition codes? */
    GLboolean EmitComments;              /**< Annotated instructions */
    void *MemPool;
+   GLbitfield Flags;                    /**< Mask of GLSL_x flags */
 };
 
 
@@ -3163,8 +3171,6 @@ enum _verbose
    VERBOSE_PRIMS		= 0x0400,
    VERBOSE_VERTS		= 0x0800,
    VERBOSE_DISASSEM		= 0x1000,
-   VERBOSE_GLSL			= 0x2000,
-   VERBOSE_GLSL_DUMP		= 0x4000
 };
 
 
diff --git a/src/mesa/shader/shader_api.c b/src/mesa/shader/shader_api.c
index acee34d..fb2a7e5 100644
--- a/src/mesa/shader/shader_api.c
+++ b/src/mesa/shader/shader_api.c
@@ -370,6 +370,31 @@ _mesa_lookup_shader_err(GLcontext *ctx, GLuint name, const char *caller)
 }
 
 
+/**
+ * Return mask of GLSL_x flags by examining the MESA_GLSL env var.
+ */
+static GLbitfield
+get_shader_flags(void)
+{
+   GLbitfield flags = 0x0;
+   const char *env = _mesa_getenv("MESA_GLSL");
+
+   if (env) {
+      if (_mesa_strstr(env, "dump"))
+         flags |= GLSL_DUMP;
+      if (_mesa_strstr(env, "log"))
+         flags |= GLSL_LOG;
+      if (_mesa_strstr(env, "nopt"))
+         flags |= GLSL_NO_OPT;
+      else if (_mesa_strstr(env, "opt"))
+         flags |= GLSL_OPT;
+      if (_mesa_strstr(env, "uniform"))
+         flags |= GLSL_UNIFORMS;
+   }
+
+   return flags;
+}
+
 
 /**
  * Initialize context's shader state.
@@ -383,6 +408,7 @@ _mesa_init_shader_state(GLcontext * ctx)
    ctx->Shader.EmitHighLevelInstructions = GL_TRUE;
    ctx->Shader.EmitCondCodes = GL_TRUE; /* XXX probably want GL_FALSE... */
    ctx->Shader.EmitComments = GL_FALSE;
+   ctx->Shader.Flags = get_shader_flags();
 }
 
 
@@ -1613,6 +1639,7 @@ _mesa_uniform(GLcontext *ctx, GLint location, GLsizei count,
    struct gl_shader_program *shProg = ctx->Shader.CurrentProgram;
    struct gl_uniform *uniform;
    GLint elems, offset;
+   GLenum basicType;
 
    if (!shProg || !shProg->LinkStatus) {
       _mesa_error(ctx, GL_INVALID_OPERATION, "glUniform(program not linked)");
@@ -1636,19 +1663,35 @@ _mesa_uniform(GLcontext *ctx, GLint location, GLsizei count,
 
    switch (type) {
    case GL_FLOAT:
+      basicType = GL_FLOAT;
+      elems = 1;
+      break;
    case GL_INT:
+      basicType = GL_INT;
       elems = 1;
       break;
    case GL_FLOAT_VEC2:
+      basicType = GL_FLOAT;
+      elems = 2;
+      break;
    case GL_INT_VEC2:
+      basicType = GL_INT;
       elems = 2;
       break;
    case GL_FLOAT_VEC3:
+      basicType = GL_FLOAT;
+      elems = 3;
+      break;
    case GL_INT_VEC3:
+      basicType = GL_INT;
       elems = 3;
       break;
    case GL_FLOAT_VEC4:
+      basicType = GL_FLOAT;
+      elems = 4;
+      break;
    case GL_INT_VEC4:
+      basicType = GL_INT;
       elems = 4;
       break;
    default:
@@ -1660,6 +1703,25 @@ _mesa_uniform(GLcontext *ctx, GLint location, GLsizei count,
 
    uniform = &shProg->Uniforms->Uniforms[location];
 
+   if (ctx->Shader.Flags & GLSL_UNIFORMS) {
+      GLint i;
+      _mesa_printf("Mesa: set program %u uniform %s (loc %d) to: ",
+                   shProg->Name, uniform->Name, location);
+      if (basicType == GL_INT) {
+         const GLint *v = (const GLint *) values;
+         for (i = 0; i < count * elems; i++) {
+            _mesa_printf("%d ", v[i]);
+         }
+      }
+      else {
+         const GLfloat *v = (const GLfloat *) values;
+         for (i = 0; i < count * elems; i++) {
+            _mesa_printf("%g ", v[i]);
+         }
+      }
+      _mesa_printf("\n");
+   }
+
    /* A uniform var may be used by both a vertex shader and a fragment
     * shader.  We may need to update one or both shader's uniform here:
     */
diff --git a/src/mesa/shader/slang/slang_compile.c b/src/mesa/shader/slang/slang_compile.c
index 40460e0..0c7881d 100644
--- a/src/mesa/shader/slang/slang_compile.c
+++ b/src/mesa/shader/slang/slang_compile.c
@@ -32,6 +32,7 @@
 #include "main/context.h"
 #include "shader/program.h"
 #include "shader/programopt.h"
+#include "shader/prog_optimize.h"
 #include "shader/prog_print.h"
 #include "shader/prog_parameter.h"
 #include "shader/grammar/grammar_mesa.h"
@@ -2794,11 +2795,22 @@ _slang_compile(GLcontext *ctx, struct gl_shader *shader)
    _mesa_print_program(shader->Program);
 #endif
 
+   if (success) {
+      if ((ctx->Shader.Flags & GLSL_NO_OPT) == 0) {
+         if ((ctx->Shader.Flags & GLSL_OPT) || shader->Pragmas.Optimize) {
+            /* apply program optimizations */
+            _mesa_remove_extra_moves(shader->Program);
+            _mesa_remove_dead_code(shader->Program);
+            _mesa_consolidate_registers(shader->Program);
+         }
+      }
+   }
+
    shader->CompileStatus = success;
 
-#if 0
-   _mesa_write_shader_to_file(shader);
-#endif
+   if (ctx->Shader.Flags & GLSL_LOG) {
+      _mesa_write_shader_to_file(shader);
+   }
 
    return success;
 }
diff --git a/src/mesa/shader/slang/slang_link.c b/src/mesa/shader/slang/slang_link.c
index 77bcda0..4ee1bec 100644
--- a/src/mesa/shader/slang/slang_link.c
+++ b/src/mesa/shader/slang/slang_link.c
@@ -675,12 +675,12 @@ _slang_link(GLcontext *ctx,
       /* notify driver that a new fragment program has been compiled/linked */
       ctx->Driver.ProgramStringNotify(ctx, GL_FRAGMENT_PROGRAM_ARB,
                                       &shProg->FragmentProgram->Base);
-      if (MESA_VERBOSE & VERBOSE_GLSL_DUMP) {
-         printf("Mesa original fragment program:\n");
+      if (ctx->Shader.Flags & GLSL_DUMP) {
+         _mesa_printf("Mesa original fragment program:\n");
          _mesa_print_program(&fragProg->Base);
          _mesa_print_program_parameters(ctx, &fragProg->Base);
 
-         printf("Mesa post-link fragment program:\n");
+         _mesa_printf("Mesa post-link fragment program:\n");
          _mesa_print_program(&shProg->FragmentProgram->Base);
          _mesa_print_program_parameters(ctx, &shProg->FragmentProgram->Base);
       }
@@ -693,22 +693,26 @@ _slang_link(GLcontext *ctx,
       /* notify driver that a new vertex program has been compiled/linked */
       ctx->Driver.ProgramStringNotify(ctx, GL_VERTEX_PROGRAM_ARB,
                                       &shProg->VertexProgram->Base);
-      if (MESA_VERBOSE & VERBOSE_GLSL_DUMP) {
-         printf("Mesa original vertex program:\n");
+      if (ctx->Shader.Flags & GLSL_DUMP) {
+         _mesa_printf("Mesa original vertex program:\n");
          _mesa_print_program(&vertProg->Base);
          _mesa_print_program_parameters(ctx, &vertProg->Base);
 
-         printf("Mesa post-link vertex program:\n");
+         _mesa_printf("Mesa post-link vertex program:\n");
          _mesa_print_program(&shProg->VertexProgram->Base);
          _mesa_print_program_parameters(ctx, &shProg->VertexProgram->Base);
       }
    }
 
-   if (MESA_VERBOSE & VERBOSE_GLSL_DUMP) {
-      printf("Varying vars:\n");
+   if (ctx->Shader.Flags & GLSL_DUMP) {
+      _mesa_printf("Varying vars:\n");
       _mesa_print_parameter_list(shProg->Varying);
+      if (shProg->InfoLog) {
+         _mesa_printf("Info Log: %s\n", shProg->InfoLog);
+      }
    }
 
+
    shProg->LinkStatus = (shProg->VertexProgram || shProg->FragmentProgram);
 }
 
diff --git a/src/mesa/shader/slang/slang_log.c b/src/mesa/shader/slang/slang_log.c
index d5576d7..30729ba 100644
--- a/src/mesa/shader/slang/slang_log.c
+++ b/src/mesa/shader/slang/slang_log.c
@@ -77,13 +77,11 @@ slang_info_log_message(slang_info_log * log, const char *prefix,
    slang_string_concat(log->text, msg);
    slang_string_concat(log->text, "\n");
 
-   if (MESA_VERBOSE & VERBOSE_GLSL) {
-      _mesa_printf("Mesa: GLSL %s", log->text);
-   }
-
    return 1;
 }
 
+#define EXIT_SUCCESS 13
+
 int
 slang_info_log_print(slang_info_log * log, const char *msg, ...)
 {
diff --git a/src/mesa/sources b/src/mesa/sources
index 01a3fb8..a7210c1 100644
--- a/src/mesa/sources
+++ b/src/mesa/sources
@@ -177,6 +177,7 @@ SHADER_SOURCES = \
 	shader/prog_execute.c \
 	shader/prog_instruction.c \
 	shader/prog_noise.c \
+	shader/prog_optimize.c \
 	shader/prog_parameter.c \
 	shader/prog_print.c \
 	shader/prog_statevars.c \




More information about the mesa-commit mailing list