Module: Mesa Branch: master Commit: 6549caf2c23812db0e277c7f4b8801a7f6a493b9 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6549caf2c23812db0e277c7f4b8801a7f6a493b9
Author: Marek Olšák <[email protected]> Date: Sat Nov 28 03:46:30 2020 -0500 st/mesa: fix a defect when st_validate_state was invoked for unused states This fixes a small performance issue. Discovered with piglit/drawoverhead. Reviewed-by: Eric Anholt <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8017> --- src/mesa/state_tracker/st_cb_bitmap.c | 4 ++-- src/mesa/state_tracker/st_cb_compute.c | 3 ++- src/mesa/state_tracker/st_draw.c | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/mesa/state_tracker/st_cb_bitmap.c b/src/mesa/state_tracker/st_cb_bitmap.c index ab770669071..1b372b0c229 100644 --- a/src/mesa/state_tracker/st_cb_bitmap.c +++ b/src/mesa/state_tracker/st_cb_bitmap.c @@ -610,8 +610,8 @@ st_Bitmap(struct gl_context *ctx, GLint x, GLint y, * for bitmap drawing uses no constants and the FS constants are * explicitly uploaded in the draw_bitmap_quad() function. */ - if ((st->dirty | ctx->NewDriverState) & ~ST_NEW_CONSTANTS & - ST_PIPELINE_RENDER_STATE_MASK || + if ((st->dirty | ctx->NewDriverState) & st->active_states & + ~ST_NEW_CONSTANTS & ST_PIPELINE_RENDER_STATE_MASK || st->gfx_shaders_may_be_dirty) { st_validate_state(st, ST_PIPELINE_META); } diff --git a/src/mesa/state_tracker/st_cb_compute.c b/src/mesa/state_tracker/st_cb_compute.c index a99484e4f2e..21d9f7cb8c8 100644 --- a/src/mesa/state_tracker/st_cb_compute.c +++ b/src/mesa/state_tracker/st_cb_compute.c @@ -53,7 +53,8 @@ static void st_dispatch_compute_common(struct gl_context *ctx, if (ctx->NewState) _mesa_update_state(ctx); - if ((st->dirty | ctx->NewDriverState) & ST_PIPELINE_COMPUTE_STATE_MASK || + if ((st->dirty | ctx->NewDriverState) & st->active_states & + ST_PIPELINE_COMPUTE_STATE_MASK || st->compute_shader_may_be_dirty) st_validate_state(st, ST_PIPELINE_COMPUTE); diff --git a/src/mesa/state_tracker/st_draw.c b/src/mesa/state_tracker/st_draw.c index 7e79d7f6a65..a1a123fbae1 100644 --- a/src/mesa/state_tracker/st_draw.c +++ b/src/mesa/state_tracker/st_draw.c @@ -97,7 +97,8 @@ prepare_draw(struct st_context *st, struct gl_context *ctx) st_invalidate_readpix_cache(st); /* Validate state. */ - if ((st->dirty | ctx->NewDriverState) & ST_PIPELINE_RENDER_STATE_MASK || + if ((st->dirty | ctx->NewDriverState) & st->active_states & + ST_PIPELINE_RENDER_STATE_MASK || st->gfx_shaders_may_be_dirty) { st_validate_state(st, ST_PIPELINE_RENDER); } _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
