diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/mesa/main/state.c | 2 | ||||
| -rw-r--r-- | src/mesa/main/texenvprogram.c | 18 | 
2 files changed, 16 insertions, 4 deletions
| diff --git a/src/mesa/main/state.c b/src/mesa/main/state.c index 9ba131bee5..d8191ab518 100644 --- a/src/mesa/main/state.c +++ b/src/mesa/main/state.c @@ -546,7 +546,7 @@ _mesa_update_state_locked( GLcontext *ctx )     /* Determine which state flags effect vertex/fragment program state */     if (ctx->FragmentProgram._MaintainTexEnvProgram) { -      prog_flags |= (_NEW_TEXTURE | _NEW_FOG | _DD_NEW_SEPARATE_SPECULAR | +      prog_flags |= (_NEW_TEXTURE | _NEW_FOG |  		     _NEW_ARRAY | _NEW_LIGHT | _NEW_POINT | _NEW_RENDERMODE);     }     if (ctx->VertexProgram._MaintainTnlProgram) { diff --git a/src/mesa/main/texenvprogram.c b/src/mesa/main/texenvprogram.c index a3f1246c98..6b090ff399 100644 --- a/src/mesa/main/texenvprogram.c +++ b/src/mesa/main/texenvprogram.c @@ -62,6 +62,18 @@ struct texenvprog_cache_item     struct texenvprog_cache_item *next;  }; +static GLboolean +texenv_doing_secondary_color(GLcontext *ctx) +{ +   if (ctx->Light.Enabled && +       (ctx->Light.Model.ColorControl == GL_SEPARATE_SPECULAR_COLOR)) +      return GL_TRUE; + +   if (ctx->Fog.ColorSumEnabled) +      return GL_TRUE; + +   return GL_FALSE; +}  /**   * Up to nine instructions per tex unit, plus fog, specular color. @@ -298,7 +310,7 @@ static GLbitfield get_fp_input_mask( GLcontext *ctx )        if (ctx->Light.Enabled) {           fp_inputs |= FRAG_BIT_COL0; -         if (ctx->_TriangleCaps & DD_SEPARATE_SPECULAR) +         if (texenv_doing_secondary_color(ctx))              fp_inputs |= FRAG_BIT_COL1;        } @@ -416,8 +428,8 @@ static void make_state_key( GLcontext *ctx,  struct state_key *key )         }     } -   /* _DD_NEW_SEPARATE_SPECULAR */ -   if (ctx->_TriangleCaps & DD_SEPARATE_SPECULAR) { +   /* _NEW_LIGHT | _NEW_FOG */ +   if (texenv_doing_secondary_color(ctx)) {        key->separate_specular = 1;        inputs_referenced |= FRAG_BIT_COL1;     } | 
