summaryrefslogtreecommitdiffstats
path: root/src/glsl/linker.cpp
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2010-08-09 17:03:46 -0700
committerEric Anholt <[email protected]>2010-08-09 19:21:18 -0700
commit8bebbeb7c5b26ec9166a4644a2c051238d18509b (patch)
treef2f663f93e10674b2e39f3c1a44a0e8a57060b1b /src/glsl/linker.cpp
parent81996ae8618759cf7fdd033042a96f3014659f6c (diff)
glsl2: Add constant propagation.
Whereas constant folding evaluates constant expressions at rvalue nodes, constant propagation tracks constant components of vectors across execution to replace (possibly swizzled) variable dereferences with constant values, triggering possible constant folding or reduced variable liveness.
Diffstat (limited to 'src/glsl/linker.cpp')
-rw-r--r--src/glsl/linker.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp
index e93c2f55549..52c93227888 100644
--- a/src/glsl/linker.cpp
+++ b/src/glsl/linker.cpp
@@ -1296,6 +1296,7 @@ link_shaders(struct gl_shader_program *prog)
progress = do_dead_code_local(ir) || progress;
progress = do_dead_code(ir) || progress;
progress = do_tree_grafting(ir) || progress;
+ progress = do_constant_propagation(ir) || progress;
progress = do_constant_variable(ir) || progress;
progress = do_constant_folding(ir) || progress;
progress = do_algebraic(ir) || progress;