diff options
author | Marek Olšák <marek.olsak@amd.com> | 2020-11-23 22:57:25 -0500 |
---|---|---|
committer | Marek Olšák <marek.olsak@amd.com> | 2020-12-01 15:33:03 -0500 |
commit | 2c61411f253b7211607ebf817d548dd8cacb6ff6 (patch) | |
tree | 8fc37051847e13605e8377f50a47c78748015ef4 /src/gallium/winsys/amdgpu/drm | |
parent | 7cabd8e333d1ba5d8af915d9384d5cc37c3fdf5b (diff) |
winsys/amdgpu: don't use debug_get_option_noop in a hot path
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7721>
Diffstat (limited to 'src/gallium/winsys/amdgpu/drm')
-rw-r--r-- | src/gallium/winsys/amdgpu/drm/amdgpu_cs.c | 7 | ||||
-rw-r--r-- | src/gallium/winsys/amdgpu/drm/amdgpu_cs.h | 1 | ||||
-rw-r--r-- | src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c | 1 | ||||
-rw-r--r-- | src/gallium/winsys/amdgpu/drm/amdgpu_winsys.h | 1 |
4 files changed, 6 insertions, 4 deletions
diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_cs.c b/src/gallium/winsys/amdgpu/drm/amdgpu_cs.c index f344346e1ea..25be8a1695c 100644 --- a/src/gallium/winsys/amdgpu/drm/amdgpu_cs.c +++ b/src/gallium/winsys/amdgpu/drm/amdgpu_cs.c @@ -33,8 +33,6 @@ #include "amd/common/sid.h" -DEBUG_GET_ONCE_BOOL_OPTION(noop, "RADEON_NOOP", false) - /* FENCES */ static struct pipe_fence_handle * @@ -259,7 +257,7 @@ amdgpu_cs_get_next_fence(struct radeon_cmdbuf *rcs) struct amdgpu_cs *cs = amdgpu_cs(rcs); struct pipe_fence_handle *fence = NULL; - if (debug_get_option_noop()) + if (cs->noop) return NULL; if (cs->next_fence) { @@ -969,6 +967,7 @@ amdgpu_cs_create(struct radeon_winsys_ctx *rwctx, cs->flush_data = flush_ctx; cs->ring_type = ring_type; cs->stop_exec_on_failure = stop_exec_on_failure; + cs->noop = ctx->ws->noop_cs; struct amdgpu_cs_fence_info fence_info; fence_info.handle = cs->ctx->user_fence_bo; @@ -1797,7 +1796,7 @@ static int amdgpu_cs_flush(struct radeon_cmdbuf *rcs, /* If the CS is not empty or overflowed.... */ if (likely(radeon_emitted(&cs->main.base, 0) && cs->main.base.current.cdw <= cs->main.base.current.max_dw && - !debug_get_option_noop() && + !cs->noop && !(flags & RADEON_FLUSH_NOOP))) { struct amdgpu_cs_context *cur = cs->csc; diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_cs.h b/src/gallium/winsys/amdgpu/drm/amdgpu_cs.h index 99d954cd13f..d3dbe607445 100644 --- a/src/gallium/winsys/amdgpu/drm/amdgpu_cs.h +++ b/src/gallium/winsys/amdgpu/drm/amdgpu_cs.h @@ -149,6 +149,7 @@ struct amdgpu_cs { void (*flush_cs)(void *ctx, unsigned flags, struct pipe_fence_handle **fence); void *flush_data; bool stop_exec_on_failure; + bool noop; struct util_queue_fence flush_completed; struct pipe_fence_handle *next_fence; diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c b/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c index 75a6605f294..ebc1cbe6498 100644 --- a/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c +++ b/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c @@ -110,6 +110,7 @@ static bool do_winsys_init(struct amdgpu_winsys *ws, ws->check_vm = strstr(debug_get_option("R600_DEBUG", ""), "check_vm") != NULL || strstr(debug_get_option("AMD_DEBUG", ""), "check_vm") != NULL; + ws->noop_cs = debug_get_bool_option("RADEON_NOOP", false); #if DEBUG ws->debug_all_bos = debug_get_option_all_bos(); #endif diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.h b/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.h index 525e0399f3a..4c7407c1dab 100644 --- a/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.h +++ b/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.h @@ -82,6 +82,7 @@ struct amdgpu_winsys { struct ac_addrlib *addrlib; bool check_vm; + bool noop_cs; bool reserve_vmid; bool zero_all_vram_allocs; #if DEBUG |