diff options
author | Mathias Fröhlich <[email protected]> | 2018-01-27 12:09:00 -0700 |
---|---|---|
committer | Brian Paul <[email protected]> | 2018-01-30 09:07:59 -0700 |
commit | 06621e8a0df9ece4211e9d612b9199c9403e2290 (patch) | |
tree | 5a2b8c9afe1432710cd18f4e3bb7010151ca0984 | |
parent | 6395a0ecf2224f7647262aa82d3ebba69cba891b (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.c | 8 |
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; |