On Thursday, July 14, 2016 8:23:23 AM PDT Matt Turner wrote: > On Thu, Jul 14, 2016 at 12:57 AM, Kenneth Graunke <kenn...@whitecape.org> > wrote: > > Rather than computing the barycentric mode each time we emit a LINTERP, > > we can simply compute it once, as soon as we know we're doing non-flat > > interpolation. > > > > At that point, emit_linterp() doesn't do much, so fold it into the > > call sites and drop it. > > > > Signed-off-by: Kenneth Graunke <kenn...@whitecape.org> > > --- > > src/mesa/drivers/dri/i965/brw_fs.cpp | 26 ++++++++------------------ > > src/mesa/drivers/dri/i965/brw_fs.h | 3 --- > > 2 files changed, 8 insertions(+), 21 deletions(-) > > > > diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp > > b/src/mesa/drivers/dri/i965/brw_fs.cpp > > index 1f6ff59..d4e5e86 100644 > > --- a/src/mesa/drivers/dri/i965/brw_fs.cpp > > +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp > > @@ -1104,18 +1104,6 @@ centroid_to_pixel(enum brw_barycentric_mode bary) > > return (enum brw_barycentric_mode) ((unsigned) bary - 1); > > } > > > > -fs_inst * > > -fs_visitor::emit_linterp(const fs_reg &attr, const fs_reg &interp, > > - glsl_interp_qualifier interpolation_mode, > > - bool is_centroid, bool is_sample) > > -{ > > - brw_barycentric_mode barycoord_mode = > > - barycentric_mode(interpolation_mode, is_centroid, is_sample); > > - > > - return bld.emit(FS_OPCODE_LINTERP, attr, > > - this->delta_xy[barycoord_mode], interp); > > -} > > - > > void > > fs_visitor::emit_general_interpolation(fs_reg *attr, const char *name, > > const glsl_type *type, > > @@ -1179,6 +1167,9 @@ fs_visitor::emit_general_interpolation(fs_reg *attr, > > const char *name, > > } > > } else { > > /* Smooth/noperspective interpolation case. */ > > + enum brw_barycentric_mode bary = > > + barycentric_mode(interpolation_mode, mod_centroid, mod_sample); > > + > > for (unsigned int i = 0; i < type->vector_elements; i++) { > > fs_reg interp(interp_reg(*location, i)); > > if (devinfo->needs_unlit_centroid_workaround && mod_centroid) { > > @@ -1190,23 +1181,22 @@ fs_visitor::emit_general_interpolation(fs_reg > > *attr, const char *name, > > bld.emit(FS_OPCODE_MOV_DISPATCH_TO_FLAGS); > > > > fs_inst *inst; > > - inst = emit_linterp(*attr, interp, interpolation_mode, > > - false, false); > > + inst = bld.emit(FS_OPCODE_LINTERP, *attr, > > + 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 = emit_linterp(*attr, interp, interpolation_mode, > > - mod_centroid, mod_sample); > > + inst = bld.emit(FS_OPCODE_LINTERP, *attr, > > + delta_xy[bary], interp); > > I think this will fit on one line.
I wish, but it hits 81 :( > This series is put together very well. Nice work. It is: > > Reviewed-by: Matt Turner <matts...@gmail.com> Thanks!
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev