summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/llvmpipe/lp_setup_tri.c
diff options
context:
space:
mode:
authorJames Benton <[email protected]>2012-05-10 17:15:28 +0100
committerJosé Fonseca <[email protected]>2012-05-11 13:21:23 +0100
commit11aa82cc0bda6bd9162f76553a3f68e28978edae (patch)
tree078e83d22eec6768506d93d0166a112690b04558 /src/gallium/drivers/llvmpipe/lp_setup_tri.c
parent0c8a8a35e107bcb04de94154933156165fed62a8 (diff)
llvmpipe: Fix triangle bounding box calculation to be correctly inclusive or exclusive
Tested with custom rasterisation test tool added to piglit suite, reduced errors Signed-off-by: José Fonseca <[email protected]>
Diffstat (limited to 'src/gallium/drivers/llvmpipe/lp_setup_tri.c')
-rw-r--r--src/gallium/drivers/llvmpipe/lp_setup_tri.c14
1 files 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 ||