i965: Drop the confusing saturate argument to math instruction setup.
authorEric Anholt <eric@anholt.net>
Mon, 6 Aug 2012 21:59:39 +0000 (14:59 -0700)
committerEric Anholt <eric@anholt.net>
Wed, 8 Aug 2012 23:21:30 +0000 (16:21 -0700)
commit9b4053cabd8bda180b352d2d2047209f6ca5f6e8
tree98e1bc1e07fa9ba203fb52e8cafa5ba0ff3d80a2
parent33dfdc735e052d9c9b33883350e926d40220b6ac
i965: Drop the confusing saturate argument to math instruction setup.

This was ridiculous.  We were ignoring the inst->header.saturate flag in the
case of math and only math.  On gen4, we would leave inst->header.saturate in
place if it happened to be set, which would end up being applied to the
implicit mov and thus trash the first argument.  On gen6, we would overwrite
inst->header.saturate with the saturate flag from the argument, which was not
set appropriately in brw_vec4_emit.cpp, and was only not a bug due to our
incompetence at coalescing saturate moves.

By ripping the argument out and making saturate work just like all the other
brw_eu_emit.c code generation, we can avoid both these classes of bugs.

Fixes piglit fog-modes, and the new specific fs-saturate-exp2 case.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=48628
NOTE: This is a candidate for the 8.0 branch.
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_eu.h
src/mesa/drivers/dri/i965/brw_eu_emit.c
src/mesa/drivers/dri/i965/brw_eu_util.c
src/mesa/drivers/dri/i965/brw_fs_emit.cpp
src/mesa/drivers/dri/i965/brw_sf_emit.c
src/mesa/drivers/dri/i965/brw_vec4_emit.cpp
src/mesa/drivers/dri/i965/brw_vs_emit.c
src/mesa/drivers/dri/i965/brw_wm_emit.c