diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/mesa/tnl/t_context.c | 14 | 
1 files changed, 9 insertions, 5 deletions
| diff --git a/src/mesa/tnl/t_context.c b/src/mesa/tnl/t_context.c index 5e2a58249e..19ec556dcd 100644 --- a/src/mesa/tnl/t_context.c +++ b/src/mesa/tnl/t_context.c @@ -109,24 +109,28 @@ _tnl_InvalidateState( GLcontext *ctx, GLuint new_state )     tnl->pipeline.new_state |= new_state; -   /* Calculate tnl->render_inputs: +   /* Calculate tnl->render_inputs.  This bitmask indicates which vertex +    * attributes need to be emitted to the rasterizer.      */     if (ctx->Visual.rgbMode) {        GLuint i;        RENDERINPUTS_ZERO( tnl->render_inputs_bitset );        RENDERINPUTS_SET( tnl->render_inputs_bitset, _TNL_ATTRIB_POS ); +        if (!fp || (fp->Base.InputsRead & FRAG_BIT_COL0)) {           RENDERINPUTS_SET( tnl->render_inputs_bitset, _TNL_ATTRIB_COLOR0 );        } + +      if (NEED_SECONDARY_COLOR(ctx)) +         RENDERINPUTS_SET( tnl->render_inputs_bitset, _TNL_ATTRIB_COLOR1 ); +        for (i = 0; i < ctx->Const.MaxTextureCoordUnits; i++) { -         if (ctx->Texture._EnabledCoordUnits & (1 << i)) { +         if (ctx->Texture._EnabledCoordUnits & (1 << i) || +             (fp && fp->Base.InputsRead & FRAG_BIT_TEX(i))) {              RENDERINPUTS_SET( tnl->render_inputs_bitset, _TNL_ATTRIB_TEX(i) );           }        } - -      if (NEED_SECONDARY_COLOR(ctx)) -         RENDERINPUTS_SET( tnl->render_inputs_bitset, _TNL_ATTRIB_COLOR1 );     }     else {        RENDERINPUTS_SET( tnl->render_inputs_bitset, _TNL_ATTRIB_POS ); | 
