ir_to_mesa: Move the STATE_VAR elements of a builtin uniform to a temp (v2).
authorEric Anholt <eric@anholt.net>
Wed, 1 Sep 2010 23:06:32 +0000 (16:06 -0700)
committerEric Anholt <eric@anholt.net>
Tue, 7 Sep 2010 20:59:29 +0000 (13:59 -0700)
commit6c0ba32fd1466e8c1700acab3003dc1fe1deb337
tree08815f9b81e5faee71ca2a02b777d94dda29b130
parent956f049fd24eb5239361e68a1f27e1bebb3315a0
ir_to_mesa: Move the STATE_VAR elements of a builtin uniform to a temp (v2).

Like the constant handling and the handling of other uniforms, we add
the whole thing to the Parameters, avoiding messy, incomplete logic
for adding just the elements of a builting uniform that get used.
This means that a driver that relies only on ParameterValues[] for its
parameters will have an increased parameter load, but drivers
generally don't do that (since they have other params they need to
handle, too).

Fixes glsl-fs-statevar-call (testcase for Ember).  Bug #29687.

v2: Continue referencing the STATE_VAR[] file directly when the
uniform will land in STATE_VAR[] formatted exactly as we'd put into a
temporary.  When there's array dereferencing, we don't copy-propagate
in Mesa IR (not knowing where the array is in register space), so
smarts here are required or we'll massively increase the temp count.
src/mesa/program/ir_to_mesa.cpp