ir_to_mesa: Don't do function inlining until linking.
authorEric Anholt <eric@anholt.net>
Thu, 5 Aug 2010 17:13:10 +0000 (10:13 -0700)
committerEric Anholt <eric@anholt.net>
Thu, 5 Aug 2010 17:18:45 +0000 (10:18 -0700)
Optimizations at compile time should generally be done with the goal
of reducing instruction count so that other work, particularly
linking, is less time-consuming if the shader is used multiple times.
However, function inlining increases instruction count for the inlined
function bodies without removing the original function body, since we
don't know if it will be used at link time or not.

Reduces the runtime of linking and executing a Yo Frankie fragment
shader from 0.9 seconds to 0.5 seconds (-45.9%, +/- 2.2%, n=5).

src/mesa/program/ir_to_mesa.cpp

index 74996ae4802a1280c3a23825bcd16212e0abad4c..299b11d27416d41b1a53eef8b260d8a16dec4665 100644 (file)
@@ -2604,7 +2604,6 @@ _mesa_glsl_compile_shader(GLcontext *ctx, struct gl_shader *shader)
       do {
         progress = false;
 
-        progress = do_function_inlining(shader->ir) || progress;
         progress = do_if_simplification(shader->ir) || progress;
         progress = do_copy_propagation(shader->ir) || progress;
         progress = do_dead_code_local(shader->ir) || progress;