Mesa (main): llvmpipe: merge all rasterizer-bind functions
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Mon Jul 25 10:56:32 UTC 2022
Module: Mesa
Branch: main
Commit: a1846e39269a2c1b9e2961ecb9d5e1b10d629ae4
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=a1846e39269a2c1b9e2961ecb9d5e1b10d629ae4
Author: Erik Faye-Lund <erik.faye-lund at collabora.com>
Date: Fri Jul 9 16:45:47 2021 +0200
llvmpipe: merge all rasterizer-bind functions
This makes it more obivous when what state changes, and they are always
just called in order.
Reviewed-by: Brian Paul <brianp at vmware.com>
Reviewed-by: Roland Scheidegger <sroland at vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17653>
---
src/gallium/drivers/llvmpipe/lp_setup.c | 63 +++++++---------------
src/gallium/drivers/llvmpipe/lp_setup.h | 23 +-------
src/gallium/drivers/llvmpipe/lp_state_rasterizer.c | 23 +-------
3 files changed, 22 insertions(+), 87 deletions(-)
diff --git a/src/gallium/drivers/llvmpipe/lp_setup.c b/src/gallium/drivers/llvmpipe/lp_setup.c
index b2cf7449872..28dea4f82b3 100644
--- a/src/gallium/drivers/llvmpipe/lp_setup.c
+++ b/src/gallium/drivers/llvmpipe/lp_setup.c
@@ -595,60 +595,34 @@ lp_setup_clear(struct lp_setup_context *setup,
void
-lp_setup_set_triangle_state(struct lp_setup_context *setup,
- unsigned cull_mode,
- boolean ccw_is_frontface,
- boolean scissor,
- boolean half_pixel_center,
- boolean bottom_edge_rule,
- boolean multisample)
+lp_setup_bind_rasterizer( struct lp_setup_context *setup,
+ const struct pipe_rasterizer_state *rast)
{
LP_DBG(DEBUG_SETUP, "%s\n", __FUNCTION__);
- setup->ccw_is_frontface = ccw_is_frontface;
- setup->cullmode = cull_mode;
+ setup->ccw_is_frontface = rast->front_ccw;
+ setup->cullmode = rast->cull_face;
setup->triangle = first_triangle;
setup->rect = first_rectangle;
- setup->multisample = multisample;
- setup->pixel_offset = half_pixel_center ? 0.5f : 0.0f;
- setup->bottom_edge_rule = bottom_edge_rule;
+ setup->multisample = rast->multisample;
+ setup->pixel_offset = rast->half_pixel_center ? 0.5f : 0.0f;
+ setup->bottom_edge_rule = rast->bottom_edge_rule;
- if (setup->scissor_test != scissor) {
+ if (setup->scissor_test != rast->scissor) {
setup->dirty |= LP_SETUP_NEW_SCISSOR;
- setup->scissor_test = scissor;
+ setup->scissor_test = rast->scissor;
}
-}
+ setup->flatshade_first = rast->flatshade_first;
+ setup->line_width = rast->line_width;
+ setup->rectangular_lines = rast->line_rectangular;
-void
-lp_setup_set_line_state(struct lp_setup_context *setup,
- float line_width,
- boolean line_rectangular)
-{
- LP_DBG(DEBUG_SETUP, "%s\n", __FUNCTION__);
-
- setup->line_width = line_width;
- setup->rectangular_lines = line_rectangular;
-}
-
-
-void
-lp_setup_set_point_state(struct lp_setup_context *setup,
- float point_size,
- boolean point_tri_clip,
- boolean point_size_per_vertex,
- uint sprite_coord_enable,
- uint sprite_coord_origin,
- boolean point_quad_rasterization)
-{
- LP_DBG(DEBUG_SETUP, "%s\n", __FUNCTION__);
-
- setup->point_size = point_size;
- setup->sprite_coord_enable = sprite_coord_enable;
- setup->sprite_coord_origin = sprite_coord_origin;
- setup->point_tri_clip = point_tri_clip;
- setup->point_size_per_vertex = point_size_per_vertex;
- setup->legacy_points = !point_quad_rasterization;
+ setup->point_size = rast->point_size;
+ setup->sprite_coord_enable = rast->sprite_coord_enable;
+ setup->sprite_coord_origin = rast->sprite_coord_mode;
+ setup->point_tri_clip = rast->point_size_per_vertex;
+ setup->point_size_per_vertex = rast->point_size_per_vertex;
+ setup->legacy_points = !rast->point_quad_rasterization;
}
@@ -657,6 +631,7 @@ lp_setup_set_setup_variant(struct lp_setup_context *setup,
const struct lp_setup_variant *variant)
{
LP_DBG(DEBUG_SETUP, "%s\n", __FUNCTION__);
+
setup->setup.variant = variant;
}
diff --git a/src/gallium/drivers/llvmpipe/lp_setup.h b/src/gallium/drivers/llvmpipe/lp_setup.h
index 5ecef123417..a820947cbed 100644
--- a/src/gallium/drivers/llvmpipe/lp_setup.h
+++ b/src/gallium/drivers/llvmpipe/lp_setup.h
@@ -73,27 +73,8 @@ lp_setup_bind_framebuffer( struct lp_setup_context *setup,
const struct pipe_framebuffer_state *fb );
void
-lp_setup_set_triangle_state( struct lp_setup_context *setup,
- unsigned cullmode,
- boolean front_is_ccw,
- boolean scissor,
- boolean half_pixel_center,
- boolean bottom_edge_rule,
- boolean multisample);
-
-void
-lp_setup_set_line_state( struct lp_setup_context *setup,
- float line_width,
- boolean line_rectangular);
-
-void
-lp_setup_set_point_state( struct lp_setup_context *setup,
- float point_size,
- boolean point_tri_clip,
- boolean point_size_per_vertex,
- uint sprite_coord_enable,
- uint sprite_coord_origin,
- boolean point_quad_rasterization);
+lp_setup_bind_rasterizer( struct lp_setup_context *setup,
+ const struct pipe_rasterizer_state *rast);
void
lp_setup_set_setup_variant( struct lp_setup_context *setup,
diff --git a/src/gallium/drivers/llvmpipe/lp_state_rasterizer.c b/src/gallium/drivers/llvmpipe/lp_state_rasterizer.c
index 2b1d65af1c3..80f7a08d8de 100644
--- a/src/gallium/drivers/llvmpipe/lp_state_rasterizer.c
+++ b/src/gallium/drivers/llvmpipe/lp_state_rasterizer.c
@@ -108,28 +108,7 @@ llvmpipe_bind_rasterizer_state(struct pipe_context *pipe, void *handle)
if (state) {
llvmpipe->rasterizer = &state->lp_state;
draw_set_rasterizer_state(llvmpipe->draw, &state->draw_state, handle);
-
- /* XXX: just pass lp_state directly to setup.
- */
- lp_setup_set_triangle_state( llvmpipe->setup,
- state->lp_state.cull_face,
- state->lp_state.front_ccw,
- state->lp_state.scissor,
- state->lp_state.half_pixel_center,
- state->lp_state.bottom_edge_rule,
- state->lp_state.multisample);
- lp_setup_set_flatshade_first( llvmpipe->setup,
- state->lp_state.flatshade_first);
- lp_setup_set_line_state( llvmpipe->setup,
- state->lp_state.line_width,
- state->lp_state.line_rectangular);
- lp_setup_set_point_state( llvmpipe->setup,
- state->lp_state.point_size,
- state->lp_state.point_tri_clip,
- state->lp_state.point_size_per_vertex,
- state->lp_state.sprite_coord_enable,
- state->lp_state.sprite_coord_mode,
- state->lp_state.point_quad_rasterization);
+ lp_setup_bind_rasterizer( llvmpipe->setup, &state->lp_state);
}
else {
llvmpipe->rasterizer = NULL;
More information about the mesa-commit
mailing list