diff --git a/src/mesa/main/enable.c b/src/mesa/main/enable.c index ae1744b428e..730718d6228 100644 --- a/src/mesa/main/enable.c +++ b/src/mesa/main/enable.c @@ -538,7 +538,8 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state) goto invalid_enum_error; if (ctx->Fog.Enabled == state) return; - FLUSH_VERTICES(ctx, _NEW_FOG, GL_FOG_BIT | GL_ENABLE_BIT); + FLUSH_VERTICES(ctx, _NEW_FOG | _NEW_FF_FRAG_PROGRAM, + GL_FOG_BIT | GL_ENABLE_BIT); ctx->Fog.Enabled = state; ctx->Fog._PackedEnabledMode = state ? ctx->Fog._PackedMode : FOG_NONE; break; @@ -1007,7 +1008,8 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state) goto invalid_enum_error; if (ctx->Fog.ColorSumEnabled == state) return; - FLUSH_VERTICES(ctx, _NEW_FOG, GL_FOG_BIT | GL_ENABLE_BIT); + FLUSH_VERTICES(ctx, _NEW_FOG | _NEW_FF_FRAG_PROGRAM, + GL_FOG_BIT | GL_ENABLE_BIT); ctx->Fog.ColorSumEnabled = state; break; diff --git a/src/mesa/main/fog.c b/src/mesa/main/fog.c index a9a354bd689..a2f9246d36f 100644 --- a/src/mesa/main/fog.c +++ b/src/mesa/main/fog.c @@ -106,8 +106,10 @@ _mesa_Fogfv( GLenum pname, const GLfloat *params ) return; FLUSH_VERTICES(ctx, _NEW_FOG, GL_FOG_BIT); ctx->Fog.Mode = m; - ctx->Fog._PackedEnabledMode = ctx->Fog.Enabled ? - ctx->Fog._PackedMode : FOG_NONE; + if (ctx->Fog.Enabled) { + ctx->Fog._PackedEnabledMode = ctx->Fog._PackedMode; + ctx->NewState |= _NEW_FF_FRAG_PROGRAM; + } break; case GL_FOG_DENSITY: if (*params<0.0F) { @@ -161,7 +163,7 @@ _mesa_Fogfv( GLenum pname, const GLfloat *params ) } if (ctx->Fog.FogCoordinateSource == p) return; - FLUSH_VERTICES(ctx, _NEW_FOG, GL_FOG_BIT); + FLUSH_VERTICES(ctx, _NEW_FOG | _NEW_FF_VERT_PROGRAM, GL_FOG_BIT); ctx->Fog.FogCoordinateSource = p; break; } @@ -174,7 +176,7 @@ _mesa_Fogfv( GLenum pname, const GLfloat *params ) } if (ctx->Fog.FogDistanceMode == p) return; - FLUSH_VERTICES(ctx, _NEW_FOG, GL_FOG_BIT); + FLUSH_VERTICES(ctx, _NEW_FOG | _NEW_FF_VERT_PROGRAM, GL_FOG_BIT); ctx->Fog.FogDistanceMode = p; break; } diff --git a/src/mesa/main/state.c b/src/mesa/main/state.c index 82308054ec6..4b2b3ae6950 100644 --- a/src/mesa/main/state.c +++ b/src/mesa/main/state.c @@ -487,13 +487,13 @@ _mesa_update_state_locked( struct gl_context *ctx ) GLbitfield prog_flags = _NEW_PROGRAM; if (ctx->FragmentProgram._UsesTexEnvProgram) { - prog_flags |= _NEW_BUFFERS | _NEW_TEXTURE_OBJECT | _NEW_FOG | + prog_flags |= _NEW_BUFFERS | _NEW_TEXTURE_OBJECT | _NEW_FF_FRAG_PROGRAM | _NEW_RENDERMODE | _NEW_COLOR | _NEW_TEXTURE_STATE; } if (ctx->VertexProgram._UsesTnlProgram) - prog_flags |= _NEW_FF_VERT_PROGRAM | _NEW_FOG; + prog_flags |= _NEW_FF_VERT_PROGRAM; if (new_state & prog_flags) { /* When we generate programs from fixed-function vertex/fragment state