Pushed. Thanks. Jose
----- Original Message ----- > Fixes a bunch of piglit tests related to flat interpolation of > floats. > > Signed-off-by: Olivier Galibert <galib...@pobox.com> > --- > src/gallium/drivers/llvmpipe/lp_setup_tri.c | 45 > ++++++++++++++++++++++++--- > 1 file changed, 40 insertions(+), 5 deletions(-) > > diff --git a/src/gallium/drivers/llvmpipe/lp_setup_tri.c > b/src/gallium/drivers/llvmpipe/lp_setup_tri.c > index 9916101..97a76d8 100644 > --- a/src/gallium/drivers/llvmpipe/lp_setup_tri.c > +++ b/src/gallium/drivers/llvmpipe/lp_setup_tri.c > @@ -815,10 +815,35 @@ calc_fixed_position( struct lp_setup_context > *setup, > > /** > * Rotate a triangle, flipping its clockwise direction, > + * Swaps values for xy[0] and xy[1] > + */ > +static INLINE void > +rotate_fixed_position_01( struct fixed_position* position ) > +{ > + int x, y; > + > + x = position->x[1]; > + y = position->y[1]; > + position->x[1] = position->x[0]; > + position->y[1] = position->y[0]; > + position->x[0] = x; > + position->y[0] = y; > + > + position->dx01 = -position->dx01; > + position->dy01 = -position->dy01; > + position->dx20 = position->x[2] - position->x[0]; > + position->dy20 = position->y[2] - position->y[0]; > + > + position->area = -position->area; > +} > + > + > +/** > + * Rotate a triangle, flipping its clockwise direction, > * Swaps values for xy[1] and xy[2] > */ > static INLINE void > -rotate_fixed_position( struct fixed_position* position ) > +rotate_fixed_position_12( struct fixed_position* position ) > { > int x, y; > > @@ -852,8 +877,13 @@ static void triangle_cw( struct lp_setup_context > *setup, > calc_fixed_position(setup, &position, v0, v1, v2); > > if (position.area < 0) { > - rotate_fixed_position(&position); > - retry_triangle_ccw(setup, &position, v0, v2, v1, > !setup->ccw_is_frontface); > + if (setup->flatshade_first) { > + rotate_fixed_position_12(&position); > + retry_triangle_ccw(setup, &position, v0, v2, v1, > !setup->ccw_is_frontface); > + } else { > + rotate_fixed_position_01(&position); > + retry_triangle_ccw(setup, &position, v1, v0, v2, > !setup->ccw_is_frontface); > + } > } > } > > @@ -893,8 +923,13 @@ static void triangle_both( struct > lp_setup_context *setup, > if (position.area > 0) > retry_triangle_ccw( setup, &position, v0, v1, v2, > setup->ccw_is_frontface ); > else if (position.area < 0) { > - rotate_fixed_position( &position ); > - retry_triangle_ccw( setup, &position, v0, v2, v1, > !setup->ccw_is_frontface ); > + if (setup->flatshade_first) { > + rotate_fixed_position_12( &position ); > + retry_triangle_ccw( setup, &position, v0, v2, v1, > !setup->ccw_is_frontface ); > + } else { > + rotate_fixed_position_01( &position ); > + retry_triangle_ccw( setup, &position, v1, v0, v2, > !setup->ccw_is_frontface ); > + } > } > } > > -- > 1.7.10.rc3.1.gb306 > > _______________________________________________ > 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