aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMathias Fröhlich <[email protected]>2018-01-27 12:09:00 -0700
committerBrian Paul <[email protected]>2018-01-30 09:07:59 -0700
commit06621e8a0df9ece4211e9d612b9199c9403e2290 (patch)
tree5a2b8c9afe1432710cd18f4e3bb7010151ca0984
parent6395a0ecf2224f7647262aa82d3ebba69cba891b (diff)
mesa: Care for differences in fog mode only if fog is consumed.
In creating fixed function vertex shader hash keys do only care for producing the varying output if fog is enabled and the varing is consumed in the fragment stage. Signed-off-by: Mathias Fröhlich <[email protected]> Reviewed-by: Brian Paul <[email protected]>
-rw-r--r--src/mesa/main/ffvertex_prog.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/mesa/main/ffvertex_prog.c b/src/mesa/main/ffvertex_prog.c
index 172ab698dbd..6d852496e02 100644
--- a/src/mesa/main/ffvertex_prog.c
+++ b/src/mesa/main/ffvertex_prog.c
@@ -222,9 +222,11 @@ static void make_state_key( struct gl_context *ctx, struct state_key *key )
if (ctx->Transform.RescaleNormals)
key->rescale_normals = 1;
- key->fog_distance_mode =
- translate_fog_distance_mode(ctx->Fog.FogCoordinateSource,
- ctx->Fog.FogDistanceMode);
+ /* Only distinguish fog parameters if we actually need */
+ if (key->fragprog_inputs_read & VARYING_BIT_FOGC)
+ key->fog_distance_mode =
+ translate_fog_distance_mode(ctx->Fog.FogCoordinateSource,
+ ctx->Fog.FogDistanceMode);
if (ctx->Point._Attenuated)
key->point_attenuated = 1;