glsl: Add a new opt_copy_propagation variant that does it channel-wise.
authorEric Anholt <eric@anholt.net>
Tue, 25 Jan 2011 00:28:13 +0000 (10:28 +1000)
committerEric Anholt <eric@anholt.net>
Fri, 4 Feb 2011 18:18:38 +0000 (12:18 -0600)
commite31266ed3e3667c043bc5ad1abd65cfdb0fa7fdb
treea9ddee7289bb07b33c2749a555f8df57055294cb
parentcde443e0b94ec6d8d0a99284e72ca7f9e2591174
glsl: Add a new opt_copy_propagation variant that does it channel-wise.

This patch cleans up many of the extra copies in GLSL IR introduced by
i965's scalarizing passes.  It doesn't result in a statistically
significant performance difference on nexuiz high settings (n=3) or my
demo (n=10), due to brw_fs.cpp's register coalescing covering most of
those extra moves anyway.  However, it does make the debug of wine's
GLSL shaders much more tractable, and reduces instruction count of
glsl-fs-convolution-2 from 376 to 288.
src/glsl/Makefile
src/glsl/glsl_parser_extras.cpp
src/glsl/ir_optimization.h
src/glsl/opt_copy_propagation_elements.cpp [new file with mode: 0644]