i965/fs: Fix register allocation for uniform pull constants in 16-wide.
authorEric Anholt <eric@anholt.net>
Thu, 7 Mar 2013 00:38:10 +0000 (16:38 -0800)
committerEric Anholt <eric@anholt.net>
Mon, 11 Mar 2013 19:11:53 +0000 (12:11 -0700)
commitf10f5e498008636b110d01b2613e552da7793708
tree573266a35378edc7e50c4aea48d91a6efc10f8c8
parentf09a8e17e5a2d78c14d588db405e098b9b910a8a
i965/fs: Fix register allocation for uniform pull constants in 16-wide.

We were allowing a compressed instruction to write a register that
contained the last use of a uniform pull constant (either UBO load or push
constant spillover), so it would get half its values smashed.

Since we need to see the actual instruction to decide this, move the
pre-gen6 pixel_x/y logic here, which should improve the performance of
register allocation since virtual_grf_interferes() is called more than
once per instruction.

NOTE: This is a candidate for the stable branches.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=61317
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp