Intricate stuff.  As long as testing was successful, looks good to me.

For both, Reviewed-by: Brian Paul <bri...@vmware.com>

On 01/05/2016 05:06 PM, srol...@vmware.com wrote:
From: Roland Scheidegger <srol...@vmware.com>

Otherwise some planes we get in rasterization have subpixel precision, others
not. Doesn't matter so far, but will soon. (OpenGL actually supports viewports
with subpixel accuracy, so could even do bounding box calcs with that).
---
  src/gallium/drivers/llvmpipe/lp_setup_line.c  | 20 ++++++++++----------
  src/gallium/drivers/llvmpipe/lp_setup_point.c | 20 ++++++++++----------
  src/gallium/drivers/llvmpipe/lp_setup_tri.c   | 20 ++++++++++----------
  3 files changed, 30 insertions(+), 30 deletions(-)

diff --git a/src/gallium/drivers/llvmpipe/lp_setup_line.c 
b/src/gallium/drivers/llvmpipe/lp_setup_line.c
index a0de599..f425825 100644
--- a/src/gallium/drivers/llvmpipe/lp_setup_line.c
+++ b/src/gallium/drivers/llvmpipe/lp_setup_line.c
@@ -713,24 +713,24 @@ try_setup_line( struct lp_setup_context *setup,
        const struct u_rect *scissor =
           &setup->scissors[viewport_index];

-      plane[4].dcdx = -1;
+      plane[4].dcdx = -1 << 8;
        plane[4].dcdy = 0;
-      plane[4].c = 1-scissor->x0;
-      plane[4].eo = 1;
+      plane[4].c = (1-scissor->x0) << 8;
+      plane[4].eo = 1 << 8;

-      plane[5].dcdx = 1;
+      plane[5].dcdx = 1 << 8;
        plane[5].dcdy = 0;
-      plane[5].c = scissor->x1+1;
+      plane[5].c = (scissor->x1+1) << 8;
        plane[5].eo = 0;

        plane[6].dcdx = 0;
-      plane[6].dcdy = 1;
-      plane[6].c = 1-scissor->y0;
-      plane[6].eo = 1;
+      plane[6].dcdy = 1 << 8;
+      plane[6].c = (1-scissor->y0) << 8;
+      plane[6].eo = 1 << 8;

        plane[7].dcdx = 0;
-      plane[7].dcdy = -1;
-      plane[7].c = scissor->y1+1;
+      plane[7].dcdy = -1 << 8;
+      plane[7].c = (scissor->y1+1) << 8;
        plane[7].eo = 0;
     }

diff --git a/src/gallium/drivers/llvmpipe/lp_setup_point.c 
b/src/gallium/drivers/llvmpipe/lp_setup_point.c
index 14c389f..ddb6f0e 100644
--- a/src/gallium/drivers/llvmpipe/lp_setup_point.c
+++ b/src/gallium/drivers/llvmpipe/lp_setup_point.c
@@ -492,24 +492,24 @@ try_setup_point( struct lp_setup_context *setup,
     {
        struct lp_rast_plane *plane = GET_PLANES(point);

-      plane[0].dcdx = -1;
+      plane[0].dcdx = -1 << 8;
        plane[0].dcdy = 0;
-      plane[0].c = 1-bbox.x0;
-      plane[0].eo = 1;
+      plane[0].c = (1-bbox.x0) << 8;
+      plane[0].eo = 1 << 8;

-      plane[1].dcdx = 1;
+      plane[1].dcdx = 1 << 8;
        plane[1].dcdy = 0;
-      plane[1].c = bbox.x1+1;
+      plane[1].c = (bbox.x1+1) << 8;
        plane[1].eo = 0;

        plane[2].dcdx = 0;
-      plane[2].dcdy = 1;
-      plane[2].c = 1-bbox.y0;
-      plane[2].eo = 1;
+      plane[2].dcdy = 1 << 8;
+      plane[2].c = (1-bbox.y0) << 8;
+      plane[2].eo = 1 << 8;

        plane[3].dcdx = 0;
-      plane[3].dcdy = -1;
-      plane[3].c = bbox.y1+1;
+      plane[3].dcdy = -1 << 8;
+      plane[3].c = (bbox.y1+1) << 8;
        plane[3].eo = 0;
     }

diff --git a/src/gallium/drivers/llvmpipe/lp_setup_tri.c 
b/src/gallium/drivers/llvmpipe/lp_setup_tri.c
index fefd1c1..5ad4ac1 100644
--- a/src/gallium/drivers/llvmpipe/lp_setup_tri.c
+++ b/src/gallium/drivers/llvmpipe/lp_setup_tri.c
@@ -576,24 +576,24 @@ do_triangle_ccw(struct lp_setup_context *setup,
     if (nr_planes == 7) {
        const struct u_rect *scissor = &setup->scissors[viewport_index];

-      plane[3].dcdx = -1;
+      plane[3].dcdx = -1 << 8;
        plane[3].dcdy = 0;
-      plane[3].c = 1-scissor->x0;
-      plane[3].eo = 1;
+      plane[3].c = (1-scissor->x0) << 8;
+      plane[3].eo = 1 << 8;

-      plane[4].dcdx = 1;
+      plane[4].dcdx = 1 << 8;
        plane[4].dcdy = 0;
-      plane[4].c = scissor->x1+1;
+      plane[4].c = (scissor->x1+1) << 8;
        plane[4].eo = 0;

        plane[5].dcdx = 0;
-      plane[5].dcdy = 1;
-      plane[5].c = 1-scissor->y0;
-      plane[5].eo = 1;
+      plane[5].dcdy = 1 << 8;
+      plane[5].c = (1-scissor->y0) << 8;
+      plane[5].eo = 1 << 8;

        plane[6].dcdx = 0;
-      plane[6].dcdy = -1;
-      plane[6].c = scissor->y1+1;
+      plane[6].dcdy = -1 << 8;
+      plane[6].c = (scissor->y1+1) << 8;
        plane[6].eo = 0;
     }



_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to