Mesa (main): llvmpipe: consistently deal with post-rast state
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Jun 11 08:13:09 UTC 2021
Module: Mesa
Branch: main
Commit: 9fa53d1f5093af8ea7db5022cf8197282dc4f4d5
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=9fa53d1f5093af8ea7db5022cf8197282dc4f4d5
Author: Erik Faye-Lund <erik.faye-lund at collabora.com>
Date: Wed Jun 9 10:55:44 2021 +0200
llvmpipe: consistently deal with post-rast state
There's no good reason why we peek into the rasterization state when
dealing with the point_quad_rasterization state, rather than set it
through lp_setup_set_point_state like other point-state.
Let's fix this up, and get rid of a needless NULL-check per primitive.
This makes the code a bit easier to read as well, and will help once
these conditions gets more complicated later on.
Reviewed-by: Roland Scheidegger <sroland at vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11183>
---
src/gallium/drivers/llvmpipe/lp_setup.c | 4 +++-
src/gallium/drivers/llvmpipe/lp_setup.h | 3 ++-
src/gallium/drivers/llvmpipe/lp_setup_context.h | 1 +
src/gallium/drivers/llvmpipe/lp_setup_point.c | 3 +--
src/gallium/drivers/llvmpipe/lp_state_rasterizer.c | 3 ++-
5 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/gallium/drivers/llvmpipe/lp_setup.c b/src/gallium/drivers/llvmpipe/lp_setup.c
index 8834739198f..707ba5df29f 100644
--- a/src/gallium/drivers/llvmpipe/lp_setup.c
+++ b/src/gallium/drivers/llvmpipe/lp_setup.c
@@ -600,7 +600,8 @@ lp_setup_set_point_state( struct lp_setup_context *setup,
float point_size,
boolean point_size_per_vertex,
uint sprite_coord_enable,
- uint sprite_coord_origin)
+ uint sprite_coord_origin,
+ boolean point_quad_rasterization)
{
LP_DBG(DEBUG_SETUP, "%s\n", __FUNCTION__);
@@ -608,6 +609,7 @@ lp_setup_set_point_state( struct lp_setup_context *setup,
setup->sprite_coord_enable = sprite_coord_enable;
setup->sprite_coord_origin = sprite_coord_origin;
setup->point_size_per_vertex = point_size_per_vertex;
+ setup->legacy_points = !point_quad_rasterization;
}
void
diff --git a/src/gallium/drivers/llvmpipe/lp_setup.h b/src/gallium/drivers/llvmpipe/lp_setup.h
index a948212a511..da702378fa9 100644
--- a/src/gallium/drivers/llvmpipe/lp_setup.h
+++ b/src/gallium/drivers/llvmpipe/lp_setup.h
@@ -90,7 +90,8 @@ lp_setup_set_point_state( struct lp_setup_context *setup,
float point_size,
boolean point_size_per_vertex,
uint sprite_coord_enable,
- uint sprite_coord_origin);
+ uint sprite_coord_origin,
+ boolean point_quad_rasterization);
void
lp_setup_set_setup_variant( struct lp_setup_context *setup,
diff --git a/src/gallium/drivers/llvmpipe/lp_setup_context.h b/src/gallium/drivers/llvmpipe/lp_setup_context.h
index 82fc14b5e5e..891eadbc229 100644
--- a/src/gallium/drivers/llvmpipe/lp_setup_context.h
+++ b/src/gallium/drivers/llvmpipe/lp_setup_context.h
@@ -100,6 +100,7 @@ struct lp_setup_context
boolean ccw_is_frontface;
boolean scissor_test;
boolean point_size_per_vertex;
+ boolean legacy_points;
boolean rasterizer_discard;
boolean multisample;
unsigned cullmode;
diff --git a/src/gallium/drivers/llvmpipe/lp_setup_point.c b/src/gallium/drivers/llvmpipe/lp_setup_point.c
index 696612309eb..66e1416abeb 100644
--- a/src/gallium/drivers/llvmpipe/lp_setup_point.c
+++ b/src/gallium/drivers/llvmpipe/lp_setup_point.c
@@ -374,8 +374,7 @@ try_setup_point( struct lp_setup_context *setup,
print_point(setup, v0, size);
/* Bounding rectangle (in pixels) */
- if (!lp_context->rasterizer ||
- lp_context->rasterizer->point_quad_rasterization) {
+ if (!setup->legacy_points) {
/*
* Rasterize points as quads.
*/
diff --git a/src/gallium/drivers/llvmpipe/lp_state_rasterizer.c b/src/gallium/drivers/llvmpipe/lp_state_rasterizer.c
index cd907cfb0f4..712bd5db4e1 100644
--- a/src/gallium/drivers/llvmpipe/lp_state_rasterizer.c
+++ b/src/gallium/drivers/llvmpipe/lp_state_rasterizer.c
@@ -126,7 +126,8 @@ llvmpipe_bind_rasterizer_state(struct pipe_context *pipe, void *handle)
state->lp_state.point_size,
state->lp_state.point_size_per_vertex,
state->lp_state.sprite_coord_enable,
- state->lp_state.sprite_coord_mode);
+ state->lp_state.sprite_coord_mode,
+ state->lp_state.point_quad_rasterization);
}
else {
llvmpipe->rasterizer = NULL;
More information about the mesa-commit
mailing list