[Mesa-dev] [PATCH] i965: fix the constant interp bitmask for flat mode
Yuanhan Liu
yuanhan.liu at linux.intel.com
Mon Sep 5 18:36:44 PDT 2011
On Mon, Sep 05, 2011 at 10:41:03AM -0700, Eric Anholt wrote:
> On Mon, 5 Sep 2011 15:59:32 +0800, Yuanhan Liu <yuanhan.liu at linux.intel.com> wrote:
> > Fix the constant interpolation enable bit mask for flat light mode.
> > FRAG_BIT_COL0 attribute bit might be 0, in which case we need to
> > shift one more bit right.
> >
> > This would fix the oglc specularColor test fail on both Sandybridge and
> > Ivybridge.
> >
> > Signed-off-by: Yuanhan Liu <yuanhan.liu at linux.intel.com>
> > Signed-off-by: Xiang, Haihao <haihao.xiang at intel.com>
> > ---
> > src/mesa/drivers/dri/i965/gen6_sf_state.c | 14 ++++++++++++--
> > src/mesa/drivers/dri/i965/gen7_sf_state.c | 14 ++++++++++++--
> > 2 files changed, 24 insertions(+), 4 deletions(-)
> >
> > diff --git a/src/mesa/drivers/dri/i965/gen6_sf_state.c b/src/mesa/drivers/dri/i965/gen6_sf_state.c
> > index 5bb731d..2c954d8 100644
> > --- a/src/mesa/drivers/dri/i965/gen6_sf_state.c
> > +++ b/src/mesa/drivers/dri/i965/gen6_sf_state.c
> > @@ -233,8 +233,18 @@ upload_sf_state(struct brw_context *brw)
> >
> > /* flat shading */
> > if (ctx->Light.ShadeModel == GL_FLAT) {
> > - dw17 |= ((brw->fragment_program->Base.InputsRead & (FRAG_BIT_COL0 | FRAG_BIT_COL1)) >>
> > - ((brw->fragment_program->Base.InputsRead & FRAG_BIT_WPOS) ? 0 : 1));
> > + /*
> > + * Setup the Constant Interpolation Enable bit mask for each
> > + * corresponding attribute(currently, we only care two attrs:
> > + * FRAG_BIT_COL0 and FRAG_BIT_COL1).
> > + *
> > + * FIXME: should we care other attributes?
> > + */
> > + dw17 = brw->fragment_program->Base.InputsRead & (FRAG_BIT_COL0 | FRAG_BIT_COL1);
> > + if ((brw->fragment_program->Base.InputsRead & FRAG_BIT_WPOS) == 0)
> > + dw17 >>= 1;
> > + if ((brw->fragment_program->Base.InputsRead & FRAG_BIT_COL0) == 0)
> > + dw17 >>= 1;
> > }
>
> Seems like the code would be a lot more understandable if constant
> interpolation was set up in the "for (attr = 0; attr < FRAG_ATTRIB_MAX;
> attr++)" loop. Plus then it would be obviously extendable when we do
> the flat keyword support.
Nice suggestion. New patch sent.
Thanks,
Yuanhan Liu
More information about the mesa-dev
mailing list