[Mesa-dev] [PATCH 2/4] i965: Drop has_pln checks in unlit centroid workaround.

Timothy Arceri timothy.arceri at collabora.com
Sat Jul 16 23:17:12 UTC 2016


On Sun, 2016-07-17 at 09:14 +1000, Timothy Arceri wrote:
> On Fri, 2016-07-15 at 23:43 -0700, Kenneth Graunke wrote:
> > The unlit centroid workaround starts being necessary on Gen6, which
> > is the first platform with multisampling.  PLN exists on G45+, so
> > all
> > platforms which need this workaround have PLN.
> > 
> > Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> > ---
> >  src/mesa/drivers/dri/i965/brw_fs.cpp | 7 ++-----
> >  1 file changed, 2 insertions(+), 5 deletions(-)
> > 
> > diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp
> > b/src/mesa/drivers/dri/i965/brw_fs.cpp
> > index 446cf3a..940f425 100644
> > --- a/src/mesa/drivers/dri/i965/brw_fs.cpp
> > +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
> > @@ -1185,16 +1185,13 @@
> > fs_visitor::emit_general_interpolation(fs_reg
> > *attr, const char *name,
> >                                 delta_xy[centroid_to_pixel(bary)],
> > interp);
> >                 inst->predicate = BRW_PREDICATE_NORMAL;
> >                 inst->predicate_inverse = true;
> > -               if (devinfo->has_pln)
> > -                  inst->no_dd_clear = true;
> > +               inst->no_dd_clear = true;
> >  
> >                 inst = bld.emit(FS_OPCODE_LINTERP, *attr,
> >                                 delta_xy[bary], interp);
> >                 inst->predicate = BRW_PREDICATE_NORMAL;
> >                 inst->predicate_inverse = false;
> > -               if (devinfo->has_pln)
> > -                  inst->no_dd_check = true;
> > -
> > +               inst->no_dd_check = true;
> >              } else {
> >                 bld.emit(FS_OPCODE_LINTERP, *attr, delta_xy[bary],
> > interp);
> >              }
> 
> There is code just below this:
> 
>    if (devinfo->gen < 6 && interpolation_mode ==
> INTERP_QUALIFIER_SMOOTH) {
>        bld.MUL(*attr, *attr, this->pixel_w);
>    }
> 
> Which I think you could change to:
> 
>     else {
>        bld.emit(FS_OPCODE_LINTERP, *attr, delta_xy[bary], interp);
>           if (interpolation_mode == INTERP_QUALIFIER_SMOOTH) {
>          
>    bld.MUL(*attr, *attr, this->pixel_w);
>           }
>     }
> 
> With or without that change:

Ignore that we only apply the fix to some gen6+ and it could have been
a source of bugs if it had changed later. Sorry still waking up :P 

> 
> Reviewed-by: Timothy Arceri <timothy.arceri at collabora.com> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list