From 11aa82cc0bda6bd9162f76553a3f68e28978edae Mon Sep 17 00:00:00 2001 From: James Benton Date: Thu, 10 May 2012 17:15:28 +0100 Subject: [PATCH] llvmpipe: Fix triangle bounding box calculation to be correctly inclusive or exclusive MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Tested with custom rasterisation test tool added to piglit suite, reduced errors Signed-off-by: José Fonseca --- src/gallium/drivers/llvmpipe/lp_setup_tri.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/gallium/drivers/llvmpipe/lp_setup_tri.c b/src/gallium/drivers/llvmpipe/lp_setup_tri.c index b50c354fa9b..26d35debdaf 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_tri.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_tri.c @@ -271,15 +271,13 @@ do_triangle_ccw(struct lp_setup_context *setup, */ int adj = (setup->pixel_offset != 0) ? 1 : 0; - bbox.x0 = (MIN3(x[0], x[1], x[2]) + (FIXED_ONE-1)) >> FIXED_ORDER; - bbox.x1 = (MAX3(x[0], x[1], x[2]) + (FIXED_ONE-1)) >> FIXED_ORDER; - bbox.y0 = (MIN3(y[0], y[1], y[2]) + (FIXED_ONE-1) + adj) >> FIXED_ORDER; - bbox.y1 = (MAX3(y[0], y[1], y[2]) + (FIXED_ONE-1) + adj) >> FIXED_ORDER; + /* Inclusive x0, exclusive x1 */ + bbox.x0 = MIN3(x[0], x[1], x[2]) >> FIXED_ORDER; + bbox.x1 = (MAX3(x[0], x[1], x[2]) - 1) >> FIXED_ORDER; - /* Inclusive coordinates: - */ - bbox.x1--; - bbox.y1--; + /* Inclusive / exclusive depending upon adj (bottom-left or top-right) */ + bbox.y0 = (MIN3(y[0], y[1], y[2]) + adj) >> FIXED_ORDER; + bbox.y1 = (MAX3(y[0], y[1], y[2]) - 1 + adj) >> FIXED_ORDER; } if (bbox.x1 < bbox.x0 || -- 2.30.2