From f753ac355e5bbd1129755224c54a73339da97cb1 Mon Sep 17 00:00:00 2001 From: Erik Faye-Lund Date: Tue, 30 Apr 2019 13:41:39 +0200 Subject: [PATCH] softpipe: setup pixel_offset for all primitive types If we don't update this for all primitive-types, we end up rendering slightly offset points and lines up until the point where the first triangle gets drawn. This is obviously not correct, and violates OpenGL's repeatability rule. Signed-off-by: Erik Faye-Lund Fixes: ca9c413647b ("softpipe: Respect gl_rasterization_rules in primitive setup.") Reviewed-By: Gert Wollny --- src/gallium/drivers/softpipe/sp_setup.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/gallium/drivers/softpipe/sp_setup.c b/src/gallium/drivers/softpipe/sp_setup.c index ffe49260b9a..a91e4f588c8 100644 --- a/src/gallium/drivers/softpipe/sp_setup.c +++ b/src/gallium/drivers/softpipe/sp_setup.c @@ -390,17 +390,6 @@ setup_sort_vertices(struct setup_context *setup, return FALSE; } - - /* Prepare pixel offset for rasterisation: - * - pixel center (0.5, 0.5) for GL, or - * - assume (0.0, 0.0) for other APIs. - */ - if (setup->softpipe->rasterizer->half_pixel_center) { - setup->pixel_offset = 0.5f; - } else { - setup->pixel_offset = 0.0f; - } - return TRUE; } @@ -1476,6 +1465,16 @@ sp_setup_prepare(struct setup_context *setup) } } + /* Prepare pixel offset for rasterisation: + * - pixel center (0.5, 0.5) for GL, or + * - assume (0.0, 0.0) for other APIs. + */ + if (setup->softpipe->rasterizer->half_pixel_center) { + setup->pixel_offset = 0.5f; + } else { + setup->pixel_offset = 0.0f; + } + setup->max_layer = max_layer; sp->quad.first->begin( sp->quad.first ); -- 2.30.2