glsl: Add context-level controls for whether temporaries have real names
authorIan Romanick <ian.d.romanick@intel.com>
Wed, 9 Jul 2014 01:55:27 +0000 (18:55 -0700)
committerIan Romanick <ian.d.romanick@intel.com>
Tue, 30 Sep 2014 20:34:42 +0000 (13:34 -0700)
No change Valgrind massif results for a trimmed apitrace of dota2.

v2: Minor rebase on _mesa_init_constants changes.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
src/glsl/main.cpp
src/mesa/main/context.c
src/mesa/main/mtypes.h
src/mesa/main/shaderapi.c

index a4452e023f2a9e5ec5be67666c66185725352877..feed100822cfccdb53f0e83824d8fc1b2e8df774 100644 (file)
@@ -210,6 +210,7 @@ initialize_context(struct gl_context *ctx, gl_api api)
       break;
    }
 
+   ctx->Const.GenerateTemporaryNames = true;
    ctx->Driver.NewShader = _mesa_new_shader;
 }
 
index b7e87284e303eb7ccc7442922791030b6344a53e..0edd66d6f9ef73df99e0515d1165845bd5e79347 100644 (file)
@@ -645,6 +645,12 @@ _mesa_init_constants(struct gl_constants *consts, gl_api api)
    consts->GLSLVersion = 120;
    _mesa_override_glsl_version(consts);
 
+#ifdef DEBUG
+   consts->GenerateTemporaryNames = true;
+#else
+   consts->GenerateTemporaryNames = false;
+#endif
+
    /* GL_ARB_framebuffer_object */
    consts->MaxSamples = 0;
 
index b66b1a85def7960ad4d8601618bd3b9128087ffb..dd330eab7299b5171ac51eb1196b9b43ffeaa9fd 100644 (file)
@@ -3571,6 +3571,19 @@ struct gl_constants
     */
    GLboolean DisableVaryingPacking;
 
+   /**
+    * Should meaningful names be generated for compiler temporary variables?
+    *
+    * Generally, it is not useful to have the compiler generate "meaningful"
+    * names for temporary variables that it creates.  This can, however, be a
+    * useful debugging aid.  In Mesa debug builds or release builds when
+    * MESA_GLSL is set at run-time, meaningful names will be generated.
+    * Drivers can also force names to be generated by setting this field.
+    * For example, the i965 driver may set it when INTEL_DEBUG=vs (to dump
+    * vertex shader assembly) is set at run-time.
+    */
+   bool GenerateTemporaryNames;
+
    /*
     * Maximum value supported for an index in DrawElements and friends.
     *
index 30a75191897f3944b836faf18459deef16423f47..3e6f61067c2c6852ef5935603e259b55710e8737 100644 (file)
@@ -123,6 +123,9 @@ _mesa_init_shader_state(struct gl_context *ctx)
 
    ctx->Shader.Flags = _mesa_get_shader_flags();
 
+   if (ctx->Shader.Flags != 0)
+      ctx->Const.GenerateTemporaryNames = true;
+
    /* Extended for ARB_separate_shader_objects */
    ctx->Shader.RefCount = 1;
    mtx_init(&ctx->Shader.Mutex, mtx_plain);