radv: Put commandbuffers in VRAM if all VRAM is CPU visible.
authorBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Mon, 7 Dec 2020 23:09:29 +0000 (00:09 +0100)
committerMarge Bot <eric+marge@anholt.net>
Mon, 4 Jan 2021 13:10:15 +0000 (13:10 +0000)
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7979>

src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c
src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c
src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.h

index 082c464..6994353 100644 (file)
@@ -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,
index 9510d54..cbceefb 100644 (file)
@@ -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);
index c316602..55f932b 100644 (file)
@@ -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;