On Wed, 2017-01-18 at 09:50 +1100, Timothy Arceri wrote: > Previously the last stage would not get optimised until the backend > did > its GLSL IR opt loop.
Wait that would be all stages would not get optimised until the backend called the glsl ir opts. Forgot we worked on a stage at a time for a second there. > I plan on removing that from i965 shortly which > caused huge regressions in Deus-ex and Tomb Raider which have large > constant arrays. Moving lowering before the opt loop in the GLSL > linker > fixes this and unexpectedly improves some compute shaders also. > > shader-db results BDW: > > instructions helped: shaders/closed/steam/deus-ex-mankind- > divided/374.shader_test CS SIMD16: 204 -> 194 (-4.90%) > instructions helped: shaders/closed/steam/deus-ex-mankind- > divided/318.shader_test CS SIMD8: 1010 -> 741 (-26.63%) > instructions helped: shaders/closed/steam/deus-ex-mankind- > divided/144.shader_test CS SIMD8: 542 -> 385 (-28.97%) > > cycles helped: shaders/closed/steam/deus-ex-mankind- > divided/318.shader_test CS SIMD8: 1831382 -> 1818492 (-0.70%) > cycles helped: shaders/closed/steam/deus-ex-mankind- > divided/144.shader_test CS SIMD8: 216238 -> 206180 (-4.65%) > cycles helped: shaders/closed/steam/deus-ex-mankind- > divided/374.shader_test CS SIMD16: 18484 -> 16644 (-9.95%) > > total instructions in shared programs: 13060313 -> 13059877 (-0.00%) > instructions in affected programs: 1756 -> 1320 (-24.83%) > helped: 3 > HURT: 0 > > total cycles in shared programs: 256586698 -> 256561910 (-0.01%) > cycles in affected programs: 2066104 -> 2041316 (-1.20%) > helped: 3 > HURT: 0 > --- > src/compiler/glsl/linker.cpp | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/src/compiler/glsl/linker.cpp > b/src/compiler/glsl/linker.cpp > index d187b66..5233d43 100644 > --- a/src/compiler/glsl/linker.cpp > +++ b/src/compiler/glsl/linker.cpp > @@ -5051,6 +5051,8 @@ link_shaders(struct gl_context *ctx, struct > gl_shader_program *prog) > lower_tess_level(prog->_LinkedShaders[i]); > } > > + lower_const_arrays_to_uniforms(prog->_LinkedShaders[i]->ir, > i); > + > if (ctx->Const.GLSLOptimizeConservatively) { > /* Run it just once. */ > do_common_optimization(prog->_LinkedShaders[i]->ir, true, > false, > @@ -5064,7 +5066,6 @@ link_shaders(struct gl_context *ctx, struct > gl_shader_program *prog) > ; > } > > - lower_const_arrays_to_uniforms(prog->_LinkedShaders[i]->ir, > i); > propagate_invariance(prog->_LinkedShaders[i]->ir); > } > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev