diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/mesa/main/state.c | 25 | 
1 files changed, 12 insertions, 13 deletions
| diff --git a/src/mesa/main/state.c b/src/mesa/main/state.c index 6fe54c753f..2c3177b9e2 100644 --- a/src/mesa/main/state.c +++ b/src/mesa/main/state.c @@ -429,6 +429,18 @@ _mesa_update_state_locked( GLcontext *ctx )     if (MESA_VERBOSE & VERBOSE_STATE)        _mesa_print_state("_mesa_update_state", new_state); +   if (ctx->FragmentProgram._MaintainTexEnvProgram) { +      prog_flags |= (_NEW_TEXTURE | _NEW_FOG | _DD_NEW_SEPARATE_SPECULAR); +   } +   if (ctx->VertexProgram._MaintainTnlProgram) { +      prog_flags |= (_NEW_ARRAY | _NEW_TEXTURE | _NEW_TEXTURE_MATRIX | +                     _NEW_TRANSFORM | _NEW_POINT | +                     _NEW_FOG | _NEW_LIGHT | +                     _MESA_NEW_NEED_EYE_COORDS); +   } +   if (new_state & prog_flags) +      update_program( ctx ); +     if (new_state & (_NEW_MODELVIEW|_NEW_PROJECTION))        _mesa_update_modelview_project( ctx, new_state ); @@ -488,19 +500,6 @@ _mesa_update_state_locked( GLcontext *ctx )     if (new_state & _MESA_NEW_NEED_EYE_COORDS)         _mesa_update_tnl_spaces( ctx, new_state ); -   if (ctx->FragmentProgram._MaintainTexEnvProgram) { -      prog_flags |= (_NEW_TEXTURE | _NEW_FOG | _DD_NEW_SEPARATE_SPECULAR); -   } -   if (ctx->VertexProgram._MaintainTnlProgram) { -      prog_flags |= (_NEW_ARRAY | _NEW_TEXTURE | _NEW_TEXTURE_MATRIX | -                     _NEW_TRANSFORM | _NEW_POINT | -                     _NEW_FOG | _NEW_LIGHT | -                     _MESA_NEW_NEED_EYE_COORDS); -   } -   if (new_state & prog_flags) -      update_program( ctx ); - -     /*      * Give the driver a chance to act upon the new_state flags. | 
