glsl: propagate MaxUnrollIterations to the optimizer's loop unroller
authorBrian Paul <brianp@vmware.com>
Tue, 20 Mar 2012 23:43:12 +0000 (17:43 -0600)
committerBrian Paul <brianp@vmware.com>
Wed, 21 Mar 2012 19:46:36 +0000 (13:46 -0600)
Instead of the hard-coded value of 32.  Note that MaxUnrollIterations
defaults to 32 so there's no net change.  But the gallium state tracker
can override this.

NOTE: This is a candidate for the 8.0 branch.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/glsl/linker.cpp

index 471525e9e214dd54f23c8dc8c1c257d9ce4c22a1..8278e43adb804bb5394f40dc7f41b6121f508dfb 100644 (file)
@@ -2294,7 +2294,9 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog)
       if (ctx->ShaderCompilerOptions[i].LowerClipDistance)
          lower_clip_distance(prog->_LinkedShaders[i]->ir);
 
-      while (do_common_optimization(prog->_LinkedShaders[i]->ir, true, false, 32))
+      unsigned max_unroll = ctx->ShaderCompilerOptions[i].MaxUnrollIterations;
+
+      while (do_common_optimization(prog->_LinkedShaders[i]->ir, true, false, max_unroll))
         ;
    }