llvmpipe: Respect bottom_edge_rule when computing the rasterization bounding boxes.
authorJosé Fonseca <jfonseca@vmware.com>
Tue, 7 Jan 2014 17:52:21 +0000 (17:52 +0000)
committerJosé Fonseca <jfonseca@vmware.com>
Wed, 8 Jan 2014 12:18:17 +0000 (12:18 +0000)
This was inadvertently forgotten when replacing gl_rasterization_rules
with lower_left_origin and half_pixel_center (commit
2737abb44efebfa10ac84b183c20fc5818d1514e).

This makes a difference when lower_left_origin != half_pixel_center, e.g,
D3D10.

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Reviewed-by: Zack Rusin <zackr@vmware.com>
src/gallium/drivers/llvmpipe/lp_setup_line.c
src/gallium/drivers/llvmpipe/lp_setup_point.c
src/gallium/drivers/llvmpipe/lp_setup_tri.c

index 7e1f6a36745b0ab7632a3962aa04422e9758e1ec..ac182d4cebd5efb9f43a05ab40982835b203eacd 100644 (file)
@@ -553,7 +553,7 @@ try_setup_line( struct lp_setup_context *setup,
        * up needing a bottom-left fill convention, which requires
        * slightly different rounding.
        */
-      int adj = (setup->pixel_offset != 0) ? 1 : 0;
+      int adj = (setup->bottom_edge_rule != 0) ? 1 : 0;
 
       bbox.x0 = (MIN4(x[0], x[1], x[2], x[3]) + (FIXED_ONE-1)) >> FIXED_ORDER;
       bbox.x1 = (MAX4(x[0], x[1], x[2], x[3]) + (FIXED_ONE-1)) >> FIXED_ORDER;
index c42646ef45b4b0e1359f90d68553a4368dd73a7c..834c47bdd762f7e970da65684ceb9315bc4c3a87 100644 (file)
@@ -369,7 +369,7 @@ try_setup_point( struct lp_setup_context *setup,
        * up needing a bottom-left fill convention, which requires
        * slightly different rounding.
        */
-      int adj = (setup->pixel_offset != 0) ? 1 : 0;
+      int adj = (setup->bottom_edge_rule != 0) ? 1 : 0;
 
       bbox.x0 = (x0 + (FIXED_ONE-1) + adj) >> FIXED_ORDER;
       bbox.x1 = (x0 + fixed_width + (FIXED_ONE-1) + adj) >> FIXED_ORDER;
index ce3a0a7671629bd67c62a4ed7d257b8ae0b9d6dc..d9cbc74925097c56ca9d67d8b3edf2ed59f47e3a 100644 (file)
@@ -305,7 +305,7 @@ do_triangle_ccw(struct lp_setup_context *setup,
        * up needing a bottom-left fill convention, which requires
        * slightly different rounding.
        */
-      int adj = (setup->pixel_offset != 0) ? 1 : 0;
+      int adj = (setup->bottom_edge_rule != 0) ? 1 : 0;
 
       /* Inclusive x0, exclusive x1 */
       bbox.x0 =  MIN3(position->x[0], position->x[1], position->x[2]) >> FIXED_ORDER;