mesa: Fix bugs in ff fragment shader fog handling
authorIan Romanick <ian.d.romanick@intel.com>
Sat, 16 Apr 2011 01:38:54 +0000 (18:38 -0700)
committerIan Romanick <ian.d.romanick@intel.com>
Fri, 22 Apr 2011 00:33:18 +0000 (17:33 -0700)
commit3aa21f93dc1329c6f956277f2746c2a0bdae5446
treebb08ebb6350c487bb69e8366ffcbeeb957273ba8
parenta22aba4eae9b29db731487bce90e8292f7e82c72
mesa: Fix bugs in ff fragment shader fog handling

This patch fixes two bugs related to fog in the fixed-function
fragment shader generation code.

Fog was only lowered to instructions if MRTs were used.  The fragment
shader assembler always lowers "fog option" code to instructions, and
many drivers (e.g., r300) expect this.

When fog lowering did happen, it was after the instruction count was
checked against implementation limits.  Since fog lowering may add up
to 5 instructions, a program that was below the limits before lowering
may exceed the limits after lowering.

NOTE: This is a candidate for the stable branches.

Reviewed-by: Eric Anholt <eric@anholt.net>
Acked-by: Corbin Simpson <MostAwesomeDude@gmail.com>
Acked-by: Alex Deucher <alexdeucher@gmail.com>
src/mesa/main/ff_fragment_shader.cpp