Hello! This series fixes the TressFX advanced hair rendering technique used in Tomb Raider (2013). Prior to this series, the shaders would fail to link because a uvec4[327] constant array would get replicated a ton of times, and then each copy would get promoted to a uniform array, wildly exceeding the maximum number of uniform components.
To avoid this, we restrict the compiler from constant propagating whole arrays, which duplicates a lot of data. In the process, we fix some other nasty bugs (creation of "const = const" statements), spiff up the array splitting pass so it actually splits most constant arrays, fix copy propagation of const arrays after the precise/invariant work, and invoke copy propagation to clean up temps before resorting to variable index lowering. src/compiler/glsl/linker.cpp | 1 + .../glsl/lower_const_arrays_to_uniforms.cpp | 11 ++--- src/compiler/glsl/opt_array_splitting.cpp | 56 ++++++++++++++++++++++ src/compiler/glsl/opt_constant_propagation.cpp | 4 +- src/mesa/drivers/dri/i965/brw_link.cpp | 2 + 5 files changed, 64 insertions(+), 10 deletions(-) --Ken _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev