Mesa (master): radeonsi: move si_pm4_delete_state logic into si_pm4_free_state
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Sat Jan 30 20:59:50 UTC 2021
Module: Mesa
Branch: master
Commit: d4b503d0bcd8dafacd54b4df1bb562ad385b5bbe
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=d4b503d0bcd8dafacd54b4df1bb562ad385b5bbe
Author: Marek Olšák <marek.olsak at amd.com>
Date: Sat Jan 9 07:55:59 2021 -0500
radeonsi: move si_pm4_delete_state logic into si_pm4_free_state
also clear dirty_states.
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8794>
---
src/gallium/drivers/radeonsi/si_pm4.c | 10 ++++++++--
src/gallium/drivers/radeonsi/si_state.h | 7 +------
2 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/src/gallium/drivers/radeonsi/si_pm4.c b/src/gallium/drivers/radeonsi/si_pm4.c
index c710a1e2e7a..22b6e3ad518 100644
--- a/src/gallium/drivers/radeonsi/si_pm4.c
+++ b/src/gallium/drivers/radeonsi/si_pm4.c
@@ -99,8 +99,14 @@ void si_pm4_free_state(struct si_context *sctx, struct si_pm4_state *state, unsi
if (!state)
return;
- if (idx != ~0 && sctx->emitted.array[idx] == state) {
- sctx->emitted.array[idx] = NULL;
+ if (idx != ~0) {
+ if (sctx->emitted.array[idx] == state)
+ sctx->emitted.array[idx] = NULL;
+
+ if (sctx->queued.array[idx] == state) {
+ sctx->queued.array[idx] = NULL;
+ sctx->dirty_states &= ~BITFIELD_BIT(idx);
+ }
}
si_pm4_clear_state(state);
diff --git a/src/gallium/drivers/radeonsi/si_state.h b/src/gallium/drivers/radeonsi/si_state.h
index d8b0a14cffe..f9d1bcdd407 100644
--- a/src/gallium/drivers/radeonsi/si_state.h
+++ b/src/gallium/drivers/radeonsi/si_state.h
@@ -485,12 +485,7 @@ struct si_buffer_resources {
} while (0)
#define si_pm4_delete_state(sctx, member, value) \
- do { \
- if ((sctx)->queued.named.member == (value)) { \
- (sctx)->queued.named.member = NULL; \
- } \
- si_pm4_free_state(sctx, (struct si_pm4_state *)(value), SI_STATE_IDX(member)); \
- } while (0)
+ si_pm4_free_state(sctx, (struct si_pm4_state *)(value), SI_STATE_IDX(member))
/* si_descriptors.c */
void si_set_mutable_tex_desc_fields(struct si_screen *sscreen, struct si_texture *tex,
More information about the mesa-commit
mailing list