From: Brian Paul Date: Fri, 6 Feb 2009 17:48:38 +0000 (-0700) Subject: mesa: fix tnl->render_inputs_bitset setup for fragment program texcoords X-Git-Tag: 062012170305~17671^2~58 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f6d23943cd289ed2b60ec01006fb155f22969749;p=profile%2Fivi%2Fmesa.git mesa: fix tnl->render_inputs_bitset setup for fragment program texcoords Handle the case where there's no per-vertex texcoords but the fragment shader needs texcoords. Fixes piglit shaders/fp-generic/dph test. --- diff --git a/src/mesa/tnl/t_context.c b/src/mesa/tnl/t_context.c index 5e2a582..19ec556 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 );