radv: move local bos usage to a perftest flag.
authorDave Airlie <airlied@redhat.com>
Wed, 27 Dec 2017 23:49:32 +0000 (09:49 +1000)
committerDave Airlie <airlied@redhat.com>
Thu, 28 Dec 2017 09:30:16 +0000 (19:30 +1000)
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@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
src/amd/vulkan/radv_debug.h
src/amd/vulkan/radv_device.c
src/amd/vulkan/winsys/amdgpu/radv_amdgpu_bo.c
src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c
src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.h

index 8e09c3652828274be6679869329aaac17ef29ead..af07564833ecd3c051d72aab144206dbd88752c6 100644 (file)
@@ -47,6 +47,7 @@ enum {
 enum {
        RADV_PERFTEST_NO_BATCHCHAIN  =   0x1,
        RADV_PERFTEST_SISCHED        =   0x2,
+       RADV_PERFTEST_LOCAL_BOS      =   0x4,
 };
 
 bool
index 788252c2c56a3d44d90eae270f220685996df655..2a249b95e28da7e84499acc2e507a5f06d27b88a 100644 (file)
@@ -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}
 };
 
index ffcc1a2ad35bb0bf6a65094bb7a49ce7a660f62d..4b11823b0a8851102c570f8e20f57f694be0e4fe 100644 (file)
@@ -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;
        }
index 0c6374e71c96ea859687565053f91673bf4754ba..42e83f14829f697a63dedda6b25915202d696386 100644 (file)
@@ -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);
index 66c93475e5ef463f5405f11b27a389ff02ead7fc..d6af6052a65defc695c3ba002e6205c359a423dd 100644 (file)
@@ -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;