glsl: avoid using gl context as a memory context
authorDave Airlie <airlied@gmail.com>
Sat, 15 Dec 2012 03:24:52 +0000 (13:24 +1000)
committerDave Airlie <airlied@gmail.com>
Sat, 15 Dec 2012 05:29:49 +0000 (15:29 +1000)
Not sure what was going on here, but running piglit with debug builds
might be a good plan :-)

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
src/glsl/linker.cpp

index 83d0e8710054167596956408b80fdb9e35a2b18a..be08156e0683b0f78034ff5ff32d96d692fb992b 100644 (file)
@@ -2301,6 +2301,7 @@ is_varying_var(GLenum shaderType, const ir_variable *var)
  */
 bool
 assign_varying_locations(struct gl_context *ctx,
+                        void *mem_ctx,
                         struct gl_shader_program *prog,
                         gl_shader *producer, gl_shader *consumer,
                          unsigned num_tfeedback_decls,
@@ -2375,10 +2376,10 @@ assign_varying_locations(struct gl_context *ctx,
        */
       assert(!ctx->Extensions.EXT_transform_feedback);
    } else {
-      lower_packed_varyings(ctx, producer_base, slots_used, ir_var_out,
+      lower_packed_varyings(mem_ctx, producer_base, slots_used, ir_var_out,
                             producer);
       if (consumer) {
-         lower_packed_varyings(ctx, consumer_base, slots_used, ir_var_in,
+         lower_packed_varyings(mem_ctx, consumer_base, slots_used, ir_var_in,
                                consumer);
       }
    }
@@ -2910,7 +2911,7 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog)
         continue;
 
       if (!assign_varying_locations(
-             ctx, prog, prog->_LinkedShaders[prev], prog->_LinkedShaders[i],
+                                   ctx, mem_ctx, prog, prog->_LinkedShaders[prev], prog->_LinkedShaders[i],
              i == MESA_SHADER_FRAGMENT ? num_tfeedback_decls : 0,
              tfeedback_decls))
         goto done;
@@ -2923,7 +2924,7 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog)
        * locations for use by transform feedback.
        */
       if (!assign_varying_locations(
-             ctx, prog, prog->_LinkedShaders[prev], NULL, num_tfeedback_decls,
+                                   ctx, mem_ctx, prog, prog->_LinkedShaders[prev], NULL, num_tfeedback_decls,
              tfeedback_decls))
          goto done;
    }