diff options
author | Marek Olšák <marek.olsak@amd.com> | 2020-06-15 16:34:52 -0400 |
---|---|---|
committer | Marek Olšák <marek.olsak@amd.com> | 2020-07-22 12:08:19 -0400 |
commit | 69014d8c94f99fbf0de26f3a76426a92762821a0 (patch) | |
tree | 79bfd3e722b690d2b3b2b89609b5f8136b20f75c /src/gallium/drivers/radeonsi/si_state.c | |
parent | b84dbd29369c47215c7d25c52319b65c4d48c239 (diff) |
radeonsi: implement CP register shadowing
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5798>
Diffstat (limited to 'src/gallium/drivers/radeonsi/si_state.c')
-rw-r--r-- | src/gallium/drivers/radeonsi/si_state.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c index 40995c5e5c0..4ebcf5088a6 100644 --- a/src/gallium/drivers/radeonsi/si_state.c +++ b/src/gallium/drivers/radeonsi/si_state.c @@ -5108,7 +5108,7 @@ static void si_set_raster_config(struct si_context *sctx, struct si_pm4_state *p } } -void si_init_cs_preamble_state(struct si_context *sctx) +void si_init_cs_preamble_state(struct si_context *sctx, bool uses_reg_shadowing) { struct si_screen *sscreen = sctx->screen; uint64_t border_color_va = sctx->border_color_buffer->gpu_address; @@ -5118,13 +5118,15 @@ void si_init_cs_preamble_state(struct si_context *sctx) if (!pm4) return; - si_pm4_cmd_add(pm4, PKT3(PKT3_CONTEXT_CONTROL, 1, 0)); - si_pm4_cmd_add(pm4, CC0_UPDATE_LOAD_ENABLES(1)); - si_pm4_cmd_add(pm4, CC1_UPDATE_SHADOW_ENABLES(1)); + if (!uses_reg_shadowing) { + si_pm4_cmd_add(pm4, PKT3(PKT3_CONTEXT_CONTROL, 1, 0)); + si_pm4_cmd_add(pm4, CC0_UPDATE_LOAD_ENABLES(1)); + si_pm4_cmd_add(pm4, CC1_UPDATE_SHADOW_ENABLES(1)); - if (has_clear_state) { - si_pm4_cmd_add(pm4, PKT3(PKT3_CLEAR_STATE, 0, 0)); - si_pm4_cmd_add(pm4, 0); + if (has_clear_state) { + si_pm4_cmd_add(pm4, PKT3(PKT3_CLEAR_STATE, 0, 0)); + si_pm4_cmd_add(pm4, 0); + } } /* CLEAR_STATE doesn't restore these correctly. */ |