i965/fs: Fix discard and alpha test in 16-wide.
authorEric Anholt <eric@anholt.net>
Wed, 11 May 2011 19:43:28 +0000 (12:43 -0700)
committerEric Anholt <eric@anholt.net>
Wed, 18 May 2011 20:57:17 +0000 (13:57 -0700)
commit27b03926618ddcafabb7b61e652fe6458b017b24
tree6d26453d88695f52e9ef524ba4757ec0f9e16213
parent367020d87ce8c27aeb58b3887fbd29d216fdc151
i965/fs: Fix discard and alpha test in 16-wide.

As of gen6, alt-mode (which we use) MOVs of floats are not raw --
they'll modify infs/nans.  This broke discard and alpha test in
16-wide, where apparently the upper 8 bits of the pixel enables being
set were causing the whole value to get trashed upon being moved.
Treating the values as UD instead of float makes sure they get
preserved.  While I'm here, replace the two 8-wide moves of the halves
of the header with a single compressed move.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=36648
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_fs.cpp