diff options
Diffstat (limited to 'src/mesa/main/state.c')
-rw-r--r-- | src/mesa/main/state.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/mesa/main/state.c b/src/mesa/main/state.c index 3cb90447013..540d3ce993c 100644 --- a/src/mesa/main/state.c +++ b/src/mesa/main/state.c @@ -933,6 +933,14 @@ update_program(GLcontext *ctx) && ctx->FragmentProgram.Current->Instructions; ctx->ATIFragmentShader._Enabled = ctx->ATIFragmentShader.Enabled && ctx->ATIFragmentShader.Current->Instructions; + + ctx->FragmentProgram._Current = ctx->FragmentProgram.Current; + ctx->FragmentProgram._Active = ctx->FragmentProgram._Enabled; + + if (ctx->_MaintainTexEnvProgram && !ctx->FragmentProgram._Enabled) { + ctx->FragmentProgram._Current = &ctx->_TexEnvProgram; + ctx->FragmentProgram._Active = GL_TRUE; + } } @@ -984,6 +992,11 @@ _mesa_update_state( GLcontext *ctx ) if (new_state & (_NEW_ARRAY | _NEW_PROGRAM)) update_arrays( ctx ); + if (ctx->_MaintainTexEnvProgram) { + if (new_state & (_NEW_TEXTURE | _DD_NEW_SEPARATE_SPECULAR)) + _mesa_UpdateTexEnvProgram(ctx); + } + /* ctx->_NeedEyeCoords is now up to date. * * If the truth value of this variable has changed, update for the |