gallium: Make TGSI_SEMANTIC_FOG register four-component wide.
authorJosé Fonseca <jfonseca@vmware.com>
Wed, 20 Nov 2013 15:22:31 +0000 (15:22 +0000)
committerJosé Fonseca <jfonseca@vmware.com>
Thu, 21 Nov 2013 14:00:05 +0000 (14:00 +0000)
commit2d5f21ba650cb85ffea0ed6f41ee0d1e6fe5a29a
treea5e1eb3adde7b37f14b6bd93f3b363e8d1101eac
parentedd9efc2fb99ed67df38fa53ecd0283b8156c4ec
gallium: Make TGSI_SEMANTIC_FOG register four-component wide.

D3D9 Shader Model 2 restricted the fog register to one component,
http://msdn.microsoft.com/en-us/library/windows/desktop/bb172945.aspx ,
but that restriction no longer exists in Shader Model 3, and several
WHCK tests enforce that.

So this change:
- lifts the single-component restriction TGSI_SEMANTIC_FOG
  from Gallium interface
- updates the Mesa state tracker to enforce output fog has (f, 0, 0, 1)
- draw module was updated to leave TGSI_SEMANTIC_FOG output registers
  alone

Several gallium drivers that are going out of their way to clear
TGSI_SEMANTIC_FOG components could be simplified in the future.

Thanks to Si Chen and Michal Krol for identifying the problem.

Testing done: piglit fogcoord-*.vpfp tests

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
src/gallium/auxiliary/draw/draw_llvm.c
src/gallium/auxiliary/draw/draw_vs_exec.c
src/gallium/docs/source/tgsi.rst
src/mesa/state_tracker/st_glsl_to_tgsi.cpp
src/mesa/state_tracker/st_mesa_to_tgsi.c