summaryrefslogtreecommitdiff
path: root/src/gallium/winsys/amdgpu/drm
diff options
context:
space:
mode:
authorMarek Olšák <marek.olsak@amd.com>2020-11-23 22:57:25 -0500
committerMarek Olšák <marek.olsak@amd.com>2020-12-01 15:33:03 -0500
commit2c61411f253b7211607ebf817d548dd8cacb6ff6 (patch)
tree8fc37051847e13605e8377f50a47c78748015ef4 /src/gallium/winsys/amdgpu/drm
parent7cabd8e333d1ba5d8af915d9384d5cc37c3fdf5b (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.c7
-rw-r--r--src/gallium/winsys/amdgpu/drm/amdgpu_cs.h1
-rw-r--r--src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c1
-rw-r--r--src/gallium/winsys/amdgpu/drm/amdgpu_winsys.h1
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