On 14 July 2013 02:39, Chris Forbes <chr...@ijw.co.nz> wrote: > This patch ensures that integers will pass through unscathed. Doing > (useless) computations on them is risky, especially when their bit > patterns correspond to values like inf or nan. > > [V1-2]: Signed-off-by: Olivier Galibert <galibert at pobox.com> > Signed-off-by: Chris Forbes <chr...@ijw.co.nz> > --- > src/mesa/drivers/dri/i965/brw_clip_util.c | 57 > ++++++++++++++++++------------- > 1 file changed, 34 insertions(+), 23 deletions(-) > > diff --git a/src/mesa/drivers/dri/i965/brw_clip_util.c > b/src/mesa/drivers/dri/i965/brw_clip_util.c > index 56c9ccd..a168b32 100644 > --- a/src/mesa/drivers/dri/i965/brw_clip_util.c > +++ b/src/mesa/drivers/dri/i965/brw_clip_util.c > @@ -246,8 +246,8 @@ void brw_clip_interp_vertex( struct brw_clip_compile > *c, > int varying = c->vue_map.slot_to_varying[slot]; > GLuint delta = brw_vue_slot_to_offset(slot); > > - /* HPOS is already handled above */ > - if (varying == VARYING_SLOT_POS) > + /* HPOS, NDC already handled above */ > + if (varying == VARYING_SLOT_POS || varying == BRW_VARYING_SLOT_NDC) > continue; >
Was this hunk supposed to go in patch 4/5? With that fixed, this patch is: Reviewed-by: Paul Berry <stereotype...@gmail.com> > > > @@ -269,28 +269,39 @@ void brw_clip_interp_vertex( struct brw_clip_compile > *c, > * header), so interpolate: > * > * New = attr0 + t*attr1 - t*attr0 > + * > + * Unless the attribute is flat shaded -- in which case just copy > + * from one of the sources (doesn't matter which; already copied > from pv) > */ > - struct brw_reg tmp = get_tmp(c); > - struct brw_reg t = > - c->key.interpolation_mode[slot] == > INTERP_QUALIFIER_NOPERSPECTIVE ? > - t_nopersp : t0; > - > - brw_MUL(p, > - vec4(brw_null_reg()), > - deref_4f(v1_ptr, delta), > - t); > - > - brw_MAC(p, > - tmp, > - negate(deref_4f(v0_ptr, delta)), > - t); > - > - brw_ADD(p, > - deref_4f(dest_ptr, delta), > - deref_4f(v0_ptr, delta), > - tmp); > - > - release_tmp(c, tmp); > + GLuint interp = c->key.interpolation_mode[slot]; > + > + if (interp != INTERP_QUALIFIER_FLAT) { > + struct brw_reg tmp = get_tmp(c); > + struct brw_reg t = > + interp == INTERP_QUALIFIER_NOPERSPECTIVE ? t_nopersp : t0; > + > + brw_MUL(p, > + vec4(brw_null_reg()), > + deref_4f(v1_ptr, delta), > + t); > + > + brw_MAC(p, > + tmp, > + negate(deref_4f(v0_ptr, delta)), > + t); > + > + brw_ADD(p, > + deref_4f(dest_ptr, delta), > + deref_4f(v0_ptr, delta), > + tmp); > + > + release_tmp(c, tmp); > + } > + else { > + brw_MOV(p, > + deref_4f(dest_ptr, delta), > + deref_4f(v0_ptr, delta)); > + } > } > } > > -- > 1.8.3.2 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev