summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/softpipe/sp_setup.c
diff options
context:
space:
mode:
authorErik Faye-Lund <erik.faye-lund@collabora.com>2019-04-30 13:41:39 +0200
committerErik Faye-Lund <erik.faye-lund@collabora.com>2019-05-01 13:53:02 +0000
commitf753ac355e5bbd1129755224c54a73339da97cb1 (patch)
tree4b7d465344d6df1620cbb2df6913323a62682528 /src/gallium/drivers/softpipe/sp_setup.c
parent0c6702cfa581d8126cac73c0a1d9980b3b6b94db (diff)
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 <erik.faye-lund@collabora.com> Fixes: ca9c413647b ("softpipe: Respect gl_rasterization_rules in primitive setup.") Reviewed-By: Gert Wollny <gert.wollny@collabora.com>
Diffstat (limited to 'src/gallium/drivers/softpipe/sp_setup.c')
-rw-r--r--src/gallium/drivers/softpipe/sp_setup.c21
1 files 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 );