mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-27 14:10:25 +01:00
llvmpipe: scale up bounding box planes to subpixel precision
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). Reviewed-by: Brian Paul <brianp@vmware.com> Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
This commit is contained in:
parent
0298f5aca7
commit
16530fdc82
3 changed files with 30 additions and 30 deletions
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -676,24 +676,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;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue