Mesa (master): radv: Put commandbuffers in VRAM if all VRAM is CPU visible.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Jan 4 13:25:30 UTC 2021


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

Author: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Date:   Tue Dec  8 00:09:29 2020 +0100

radv: Put commandbuffers in VRAM if all VRAM is CPU visible.

Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7979>

---

 src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c     | 8 ++++----
 src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c | 1 +
 src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.h | 1 +
 3 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c
index 082c46482e6..69943533e39 100644
--- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c
+++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c
@@ -323,7 +323,7 @@ radv_amdgpu_cs_create(struct radeon_winsys *ws,
 
 	if (cs->ws->use_ib_bos) {
 		cs->ib_buffer = ws->buffer_create(ws, ib_size, 0,
-						  RADEON_DOMAIN_GTT,
+						  cs->ws->cs_bo_domain,
 						  RADEON_FLAG_CPU_ACCESS |
 						  RADEON_FLAG_NO_INTERPROCESS_SHARING |
 						  RADEON_FLAG_READ_ONLY |
@@ -450,7 +450,7 @@ static void radv_amdgpu_cs_grow(struct radeon_cmdbuf *_cs, size_t min_size)
 	cs->old_ib_buffers[cs->num_old_ib_buffers++] = cs->ib_buffer;
 
 	cs->ib_buffer = cs->ws->base.buffer_create(&cs->ws->base, ib_size, 0,
-						   RADEON_DOMAIN_GTT,
+						   cs->ws->cs_bo_domain,
 						   RADEON_FLAG_CPU_ACCESS |
 						   RADEON_FLAG_NO_INTERPROCESS_SHARING |
 						   RADEON_FLAG_READ_ONLY |
@@ -1138,7 +1138,7 @@ radv_amdgpu_winsys_cs_submit_sysmem(struct radeon_winsys_ctx *_ctx,
 				}
 
 				bos[j] = ws->buffer_create(ws, 4 * size, 4096,
-							   RADEON_DOMAIN_GTT,
+							   aws->cs_bo_domain,
 							   RADEON_FLAG_CPU_ACCESS |
 							   RADEON_FLAG_NO_INTERPROCESS_SHARING |
 							   RADEON_FLAG_READ_ONLY,
@@ -1181,7 +1181,7 @@ radv_amdgpu_winsys_cs_submit_sysmem(struct radeon_winsys_ctx *_ctx,
 			assert(cnt);
 
 			bos[0] = ws->buffer_create(ws, 4 * size, 4096,
-						   RADEON_DOMAIN_GTT,
+						   aws->cs_bo_domain,
 						   RADEON_FLAG_CPU_ACCESS |
 						   RADEON_FLAG_NO_INTERPROCESS_SHARING |
 						   RADEON_FLAG_READ_ONLY,
diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c
index 9510d547f36..cbceefb7894 100644
--- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c
+++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c
@@ -203,6 +203,7 @@ radv_amdgpu_winsys_create(int fd, uint64_t debug_flags, uint64_t perftest_flags)
 	ws->use_local_bos = perftest_flags & RADV_PERFTEST_LOCAL_BOS;
 	ws->zero_all_vram_allocs = debug_flags & RADV_DEBUG_ZERO_VRAM;
 	ws->use_llvm = debug_flags & RADV_DEBUG_LLVM;
+	ws->cs_bo_domain = radv_cmdbuffer_domain(&ws->info, perftest_flags);
 	list_inithead(&ws->global_bo_list);
 	u_rwlock_init(&ws->global_bo_list_lock);
 	list_inithead(&ws->log_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 c316602af15..55f932b879c 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 debug_all_bos;
 	bool debug_log_bos;
 	bool use_ib_bos;
+	enum radeon_bo_domain cs_bo_domain;
 	bool zero_all_vram_allocs;
 	bool use_local_bos;
 	bool use_llvm;



More information about the mesa-commit mailing list