Mesa (master): radv: move local bos usage to a perftest flag.

Dave Airlie airlied at kemper.freedesktop.org
Thu Dec 28 09:32:04 UTC 2017


Module: Mesa
Branch: master
Commit: ff75d3a9aa7e94e2e09b6121d5a0e78c730a1d82
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=ff75d3a9aa7e94e2e09b6121d5a0e78c730a1d82

Author: Dave Airlie <airlied at redhat.com>
Date:   Thu Dec 28 09:49:32 2017 +1000

radv: move local bos usage to a perftest flag.

These seem mildly unstable on vega, crashing CTS in various fun ways,
and looks like leaking memory.

Disable for now, but leave the option to enable them.

Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied at redhat.com>

---

 src/amd/vulkan/radv_debug.h                       | 1 +
 src/amd/vulkan/radv_device.c                      | 1 +
 src/amd/vulkan/winsys/amdgpu/radv_amdgpu_bo.c     | 2 +-
 src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c | 1 +
 src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.h | 1 +
 5 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/amd/vulkan/radv_debug.h b/src/amd/vulkan/radv_debug.h
index 8e09c36528..af07564833 100644
--- a/src/amd/vulkan/radv_debug.h
+++ b/src/amd/vulkan/radv_debug.h
@@ -47,6 +47,7 @@ enum {
 enum {
 	RADV_PERFTEST_NO_BATCHCHAIN  =   0x1,
 	RADV_PERFTEST_SISCHED        =   0x2,
+	RADV_PERFTEST_LOCAL_BOS      =   0x4,
 };
 
 bool
diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c
index 788252c2c5..2a249b95e2 100644
--- a/src/amd/vulkan/radv_device.c
+++ b/src/amd/vulkan/radv_device.c
@@ -343,6 +343,7 @@ radv_get_debug_option_name(int id)
 static const struct debug_control radv_perftest_options[] = {
 	{"nobatchchain", RADV_PERFTEST_NO_BATCHCHAIN},
 	{"sisched", RADV_PERFTEST_SISCHED},
+	{"localbos", RADV_PERFTEST_LOCAL_BOS},
 	{NULL, 0}
 };
 
diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_bo.c b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_bo.c
index ffcc1a2ad3..4b11823b0a 100644
--- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_bo.c
+++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_bo.c
@@ -335,7 +335,7 @@ radv_amdgpu_winsys_bo_create(struct radeon_winsys *_ws,
 		request.flags |= AMDGPU_GEM_CREATE_CPU_GTT_USWC;
 	if (!(flags & RADEON_FLAG_IMPLICIT_SYNC) && ws->info.drm_minor >= 22)
 		request.flags |= AMDGPU_GEM_CREATE_EXPLICIT_SYNC;
-	if (flags & RADEON_FLAG_NO_INTERPROCESS_SHARING && ws->info.drm_minor >= 20) {
+	if (flags & RADEON_FLAG_NO_INTERPROCESS_SHARING && ws->info.drm_minor >= 20 && ws->use_local_bos) {
 		bo->base.is_local = true;
 		request.flags |= AMDGPU_GEM_CREATE_VM_ALWAYS_VALID;
 	}
diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c
index 0c6374e71c..42e83f1482 100644
--- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c
+++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c
@@ -177,6 +177,7 @@ radv_amdgpu_winsys_create(int fd, uint64_t debug_flags, uint64_t perftest_flags)
 	if (debug_flags & RADV_DEBUG_NO_IBS)
 		ws->use_ib_bos = false;
 
+	ws->use_local_bos = perftest_flags & RADV_PERFTEST_LOCAL_BOS;
 	ws->zero_all_vram_allocs = debug_flags & RADV_DEBUG_ZERO_VRAM;
 	ws->batchchain = !(perftest_flags & RADV_PERFTEST_NO_BATCHCHAIN);
 	LIST_INITHEAD(&ws->global_bo_list);
diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.h b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.h
index 66c93475e5..d6af6052a6 100644
--- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.h
+++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.h
@@ -46,6 +46,7 @@ struct radv_amdgpu_winsys {
 	bool batchchain;
 	bool use_ib_bos;
 	bool zero_all_vram_allocs;
+	bool use_local_bos;
 	unsigned num_buffers;
 
 	pthread_mutex_t global_bo_list_lock;




More information about the mesa-commit mailing list