Mesa (llvmpipe-rast-64): llvmpipe: Try 32-bits dcdx/dcdy.

Jose Fonseca jrfonseca at kemper.freedesktop.org
Tue Oct 29 13:19:21 UTC 2013


Module: Mesa
Branch: llvmpipe-rast-64
Commit: 982b5e84b4bebc765bf1b49ead5e2c68291a3e31
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=982b5e84b4bebc765bf1b49ead5e2c68291a3e31

Author: José Fonseca <jfonseca at vmware.com>
Date:   Tue Oct 29 13:05:07 2013 +0000

llvmpipe: Try 32-bits dcdx/dcdy.

Should work in theory, and it doesn't seem to make things any worse in
practice.

However triangle-rasterization-overdraw fails with or without this.

---

 src/gallium/drivers/llvmpipe/lp_rast.h      |    5 +++++
 src/gallium/drivers/llvmpipe/lp_setup_tri.c |    8 ++++++--
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/llvmpipe/lp_rast.h b/src/gallium/drivers/llvmpipe/lp_rast.h
index 6a94150..56ede0d 100644
--- a/src/gallium/drivers/llvmpipe/lp_rast.h
+++ b/src/gallium/drivers/llvmpipe/lp_rast.h
@@ -111,8 +111,13 @@ struct lp_rast_plane {
    /* edge function values at minx,miny ?? */
    int64_t c;
 
+#if 0
    int64_t dcdx;
    int64_t dcdy;
+#else
+   int32_t dcdx;
+   int32_t dcdy;
+#endif
 
    /* one-pixel sized trivial reject offsets for each plane */
    int64_t eo;
diff --git a/src/gallium/drivers/llvmpipe/lp_setup_tri.c b/src/gallium/drivers/llvmpipe/lp_setup_tri.c
index 5897937..c6add87 100644
--- a/src/gallium/drivers/llvmpipe/lp_setup_tri.c
+++ b/src/gallium/drivers/llvmpipe/lp_setup_tri.c
@@ -464,8 +464,12 @@ do_triangle_ccw(struct lp_setup_context *setup,
             }
          }
 
-         plane[i].dcdx *= FIXED_ONE;
-         plane[i].dcdy *= FIXED_ONE;
+         /* Scale up to match c:
+          */
+         assert((plane[i].dcdx << FIXED_ORDER) >> FIXED_ORDER == plane[i].dcdx);
+         assert((plane[i].dcdy << FIXED_ORDER) >> FIXED_ORDER == plane[i].dcdy);
+         plane[i].dcdx <<= FIXED_ORDER;
+         plane[i].dcdy <<= FIXED_ORDER;
 
          /* find trivial reject offsets for each edge for a single-pixel
           * sized block.  These will be scaled up at each recursive level to




More information about the mesa-commit mailing list