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; } -- 2.1.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev