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> Reviewed-by: Paul Berry <stereotype...@gmail.com> --- src/mesa/drivers/dri/i965/brw_clip_util.c | 53 +++++++++++++++++++------------ 1 file changed, 32 insertions(+), 21 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_clip_util.c b/src/mesa/drivers/dri/i965/brw_clip_util.c index b188bf7..8500b8b 100644 --- a/src/mesa/drivers/dri/i965/brw_clip_util.c +++ b/src/mesa/drivers/dri/i965/brw_clip_util.c @@ -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.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.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.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev