diff options
author | Brian Paul <[email protected]> | 2017-08-18 14:38:03 -0600 |
---|---|---|
committer | Brian Paul <[email protected]> | 2017-10-03 12:07:05 -0600 |
commit | 362fb05b65ce7db69af6ae896caa2f0f6afd5fb2 (patch) | |
tree | fca17f0da306179e863694464f717ad24a0200ce /src/gallium/drivers/svga | |
parent | 3e39abf6a033cccbf2bbf85bf23785b7367cdcef (diff) |
svga: tweak pre-VGPU10 rasterization offsets
It seems there's no perfect x/y biases for line drawing to satisfy all
applications. Depending on the biases, either real apps produce results
similar to VGPU10 while Piglit's gl-1.0-ortho-pos fails, or vice versa.
Let's lean toward real applications (Solidworks, SolidEdge, Google Earth)
over Piglit.
Using (-0.5, -0.5) for points, lines and triangles, seems to generally
work well.
We don't seem to have these issues with VGPU10.
Tested with Piglit and CAD-oriented apitraces. See VMware bugs 1775498
and 1905053.
Reviewed-by: José Fonseca <[email protected]>
Reviewed-by: Charmaine Lee <[email protected]>
Diffstat (limited to 'src/gallium/drivers/svga')
-rw-r--r-- | src/gallium/drivers/svga/svga_state_framebuffer.c | 24 |
1 files changed, 7 insertions, 17 deletions
diff --git a/src/gallium/drivers/svga/svga_state_framebuffer.c b/src/gallium/drivers/svga/svga_state_framebuffer.c index c52b7eeebf7..0aabde71e0e 100644 --- a/src/gallium/drivers/svga/svga_state_framebuffer.c +++ b/src/gallium/drivers/svga/svga_state_framebuffer.c @@ -554,23 +554,13 @@ emit_viewport( struct svga_context *svga, } } else { - switch (svga->curr.reduced_prim) { - case PIPE_PRIM_POINTS: - adjust_x = -0.375; - adjust_y = -0.75; - break; - case PIPE_PRIM_LINES: - adjust_x = -0.5; - adjust_y = -0.125; - break; - case PIPE_PRIM_TRIANGLES: - adjust_x = -0.5; - adjust_y = -0.5; - break; - default: - /* nothing */ - break; - } + /* Use (-0.5, -0.5) bias for all prim types. + * Regarding line rasterization, this does not seem to satisfy + * the Piglit gl-1.0-ortho-pos test but it generally produces + * results identical or very similar to VGPU10. + */ + adjust_x = -0.5; + adjust_y = -0.5; } if (invertY) |