From d29d215df708641601d82fa935e0e43a7c9d8d66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Sun, 24 Mar 2024 13:57:29 -0400 Subject: [PATCH] radeonsi: check has_stable_pstate in the winsys so that we don't duplicate the condition everywhere Reviewed-by: Pierre-Eric Pelloux-Prayer Part-of: --- src/gallium/drivers/radeonsi/si_pipe.c | 8 +++----- src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c | 4 ++++ 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_pipe.c b/src/gallium/drivers/radeonsi/si_pipe.c index 775d8bbbadf..95979a3998c 100644 --- a/src/gallium/drivers/radeonsi/si_pipe.c +++ b/src/gallium/drivers/radeonsi/si_pipe.c @@ -212,8 +212,7 @@ static void si_destroy_context(struct pipe_context *context) if (sctx->sqtt) { struct si_screen *sscreen = sctx->screen; - if (sscreen->info.has_stable_pstate && sscreen->b.num_contexts == 1 && - !(sctx->context_flags & SI_CONTEXT_FLAG_AUX)) + if (sscreen->b.num_contexts == 1 && !(sctx->context_flags & SI_CONTEXT_FLAG_AUX)) sscreen->ws->cs_set_pstate(&sctx->gfx_cs, RADEON_CTX_PSTATE_NONE); si_destroy_sqtt(sctx); @@ -904,9 +903,8 @@ static struct pipe_context *si_pipe_create_context(struct pipe_screen *screen, v if (ctx && sscreen->info.gfx_level >= GFX9 && sscreen->debug_flags & DBG(SQTT)) { /* Auto-enable stable performance profile if possible. */ - if (sscreen->info.has_stable_pstate && screen->num_contexts == 1 && - sscreen->ws->cs_set_pstate(&((struct si_context *)ctx)->gfx_cs, RADEON_CTX_PSTATE_PEAK)) { - } + if (screen->num_contexts == 1) + sscreen->ws->cs_set_pstate(&((struct si_context *)ctx)->gfx_cs, RADEON_CTX_PSTATE_PEAK); if (ac_check_profile_state(&sscreen->info)) { fprintf(stderr, "radeonsi: Canceling RGP trace request as a hang condition has been " diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c b/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c index 1d4e0638990..7c6a8196d88 100644 --- a/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c +++ b/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c @@ -320,6 +320,10 @@ static bool amdgpu_cs_set_pstate(struct radeon_cmdbuf *rcs, enum radeon_ctx_pstate pstate) { struct amdgpu_cs *cs = amdgpu_cs(rcs); + + if (!cs->aws->info.has_stable_pstate) + return false; + uint32_t amdgpu_pstate = radeon_to_amdgpu_pstate(pstate); return amdgpu_cs_ctx_stable_pstate(cs->ctx->ctx, AMDGPU_CTX_OP_SET_STABLE_PSTATE, amdgpu_pstate, NULL) == 0;