From f4ad6e6d4aeb69529efa464a9c4935aabcc02a4e Mon Sep 17 00:00:00 2001 From: Eve <1235299-netrunnereve@users.noreply.gitlab.freedesktop.org> Date: Sun, 15 Jun 2025 12:39:22 -0400 Subject: [PATCH] radv: add RADV_PERFTEST option to turn off gtt spilling Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/8107 Part-of: --- docs/envvars.rst | 2 ++ src/amd/vulkan/radv_debug.h | 1 + src/amd/vulkan/radv_instance.c | 1 + src/amd/vulkan/winsys/amdgpu/radv_amdgpu_bo.c | 3 ++- 4 files changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/envvars.rst b/docs/envvars.rst index 850b2d600f5..1a553359b56 100644 --- a/docs/envvars.rst +++ b/docs/envvars.rst @@ -1411,6 +1411,8 @@ RADV driver environment variables disable FMASK compression on MSAA images (GFX6-GFX10.3) ``nogpl`` disable VK_EXT_graphics_pipeline_library + ``nogttspill`` + disable GTT spilling when allocating memory ``nohiz`` disable HIZ for depthstencil images ``noibs`` diff --git a/src/amd/vulkan/radv_debug.h b/src/amd/vulkan/radv_debug.h index 31388a5d21d..7f9af7789c1 100644 --- a/src/amd/vulkan/radv_debug.h +++ b/src/amd/vulkan/radv_debug.h @@ -95,6 +95,7 @@ enum { RADV_PERFTEST_NIR_CACHE = 1u << 14, RADV_PERFTEST_RT_WAVE_32 = 1u << 15, RADV_PERFTEST_VIDEO_ENCODE = 1u << 16, + RADV_PERFTEST_NO_GTT_SPILL = 1u << 17, }; enum { diff --git a/src/amd/vulkan/radv_instance.c b/src/amd/vulkan/radv_instance.c index a6bbeadb286..9d8deaaf669 100644 --- a/src/amd/vulkan/radv_instance.c +++ b/src/amd/vulkan/radv_instance.c @@ -117,6 +117,7 @@ static const struct debug_control radv_perftest_options[] = {{"localbos", RADV_P {"nircache", RADV_PERFTEST_NIR_CACHE}, {"rtwave32", RADV_PERFTEST_RT_WAVE_32}, {"video_encode", RADV_PERFTEST_VIDEO_ENCODE}, + {"nogttspill", RADV_PERFTEST_NO_GTT_SPILL}, {NULL, 0}}; static const struct debug_control radv_trap_excp_options[] = { diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_bo.c b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_bo.c index a7b007da3e7..4fc71d2226a 100644 --- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_bo.c +++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_bo.c @@ -470,7 +470,8 @@ radv_amdgpu_winsys_bo_create(struct radeon_winsys *_ws, uint64_t size, unsigned * e.g. Horizon Zero Dawn allocates more memory than we have * VRAM. */ - request.preferred_heap |= AMDGPU_GEM_DOMAIN_GTT; + if (!(ws->perftest & RADV_PERFTEST_NO_GTT_SPILL)) + request.preferred_heap |= AMDGPU_GEM_DOMAIN_GTT; } if (initial_domain & RADEON_DOMAIN_GTT)