summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Whitwell <keithw@vmware.com>2010-10-12 13:20:39 +0100
committerKeith Whitwell <keithw@vmware.com>2010-10-12 13:20:39 +0100
commit0ca0382d1bfd1e9128fa4b588ce1411f7b8a85df (patch)
tree13adfe18e53021cf09451114bbe7b56d98b58ea5
parent22ec25e2bf5c9309610b68e8e40472a8ea695ba9 (diff)
Revert "llvmpipe: try to keep plane c values small"
This reverts commit 9773722c2b09d5f0615a47cecf4347859474dc56. Looks like there are some floor/rounding issues here that need to be better understood.
-rw-r--r--src/gallium/drivers/llvmpipe/lp_setup_line.c3
-rw-r--r--src/gallium/drivers/llvmpipe/lp_setup_tri.c38
2 files changed, 17 insertions, 24 deletions
diff --git a/src/gallium/drivers/llvmpipe/lp_setup_line.c b/src/gallium/drivers/llvmpipe/lp_setup_line.c
index c940860850..693ac28175 100644
--- a/src/gallium/drivers/llvmpipe/lp_setup_line.c
+++ b/src/gallium/drivers/llvmpipe/lp_setup_line.c
@@ -640,7 +640,8 @@ try_setup_line( struct lp_setup_context *setup,
}
}
- plane->c = (plane->c + (FIXED_ONE-1)) / FIXED_ONE;
+ plane->dcdx *= FIXED_ONE;
+ plane->dcdy *= FIXED_ONE;
/* find trivial reject offsets for each edge for a single-pixel
* sized block. These will be scaled up at each recursive level to
diff --git a/src/gallium/drivers/llvmpipe/lp_setup_tri.c b/src/gallium/drivers/llvmpipe/lp_setup_tri.c
index dfe1bd11ea..8fd034666c 100644
--- a/src/gallium/drivers/llvmpipe/lp_setup_tri.c
+++ b/src/gallium/drivers/llvmpipe/lp_setup_tri.c
@@ -343,34 +343,26 @@ do_triangle_ccw(struct lp_setup_context *setup,
* Also, sometimes (in FBO cases) GL will render upside down
* to its usual method, in which case it will probably want
* to use the opposite, top-left convention.
- *
- * XXX: Chances are this will get stripped away. In fact this
- * is only meaningful if:
- *
- * (plane->c & (FIXED_ONE-1)) == 0
- *
*/
- if ((plane->c & (FIXED_ONE-1)) == 0) {
- if (plane->dcdx < 0) {
- /* both fill conventions want this - adjust for left edges */
- plane->c++;
+ if (plane->dcdx < 0) {
+ /* both fill conventions want this - adjust for left edges */
+ plane->c++;
+ }
+ else if (plane->dcdx == 0) {
+ if (setup->pixel_offset == 0) {
+ /* correct for top-left fill convention:
+ */
+ if (plane->dcdy > 0) plane->c++;
}
- else if (plane->dcdx == 0) {
- if (setup->pixel_offset == 0) {
- /* correct for top-left fill convention:
- */
- if (plane->dcdy > 0) plane->c++;
- }
- else {
- /* correct for bottom-left fill convention:
- */
- if (plane->dcdy < 0) plane->c++;
- }
+ else {
+ /* correct for bottom-left fill convention:
+ */
+ if (plane->dcdy < 0) plane->c++;
}
}
- plane->c = (plane->c + (FIXED_ONE-1)) / FIXED_ONE;
-
+ plane->dcdx *= FIXED_ONE;
+ plane->dcdy *= FIXED_ONE;
/* find trivial reject offsets for each edge for a single-pixel
* sized block. These will be scaled up at each recursive level to