From 7009f00ae087a6336c7dd3e733f8616786a10e08 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Thu, 15 Feb 2024 14:49:08 +0100 Subject: [PATCH] radv: re-enable GS_FAST_LAUNCH=2 by default on GFX11 The performance issue is fixed. This adds RADV_DEBUG=nogsfastlaunch2 to disable it in case users still report issues with it. Signed-off-by: Samuel Pitoiset Part-of: --- docs/envvars.rst | 4 ++-- src/amd/vulkan/radv_debug.h | 10 +++++----- src/amd/vulkan/radv_device.c | 13 ++----------- src/amd/vulkan/radv_instance.c | 2 +- 4 files changed, 10 insertions(+), 19 deletions(-) diff --git a/docs/envvars.rst b/docs/envvars.rst index a80c0d3fe2d..8c584eee2b9 100644 --- a/docs/envvars.rst +++ b/docs/envvars.rst @@ -1269,6 +1269,8 @@ RADV driver environment variables disable FMASK compression on MSAA images (GFX6-GFX10.3) ``nogpl`` disable VK_EXT_graphics_pipeline_library + ``nogsfastlaunch2`` + disable GS_FAST_LAUNCH=2 for Mesh shaders (GFX11 only) ``nohiz`` disable HIZ for depthstencil images ``noibs`` @@ -1346,8 +1348,6 @@ RADV driver environment variables rt extensions with older hardware. ``gewave32`` enable wave32 for vertex/tess/geometry shaders (GFX10+) - ``gsfastlaunch2`` - use GS_FAST_LAUNCH=2 for Mesh shaders (GFX11+ dGPUs only) ``localbos`` enable local BOs ``nggc`` diff --git a/src/amd/vulkan/radv_debug.h b/src/amd/vulkan/radv_debug.h index 0817af766fb..ba8a3665924 100644 --- a/src/amd/vulkan/radv_debug.h +++ b/src/amd/vulkan/radv_debug.h @@ -73,6 +73,7 @@ enum { RADV_DEBUG_NO_RT = 1ull << 42, RADV_DEBUG_NO_MESH_SHADER = 1ull << 43, RADV_DEBUG_NO_NGG_GS = 1ull << 44, + RADV_DEBUG_NO_GS_FAST_LAUNCH_2 = 1ull << 45, }; enum { @@ -89,11 +90,10 @@ enum { RADV_PERFTEST_RT_WAVE_64 = 1u << 10, RADV_PERFTEST_VIDEO_DECODE = 1u << 11, RADV_PERFTEST_DMA_SHADERS = 1u << 12, - RADV_PERFTEST_GS_FAST_LAUNCH_2 = 1u << 13, - RADV_PERFTEST_TRANSFER_QUEUE = 1u << 14, - RADV_PERFTEST_SHADER_OBJECT = 1u << 15, - RADV_PERFTEST_NIR_CACHE = 1u << 16, - RADV_PERFTEST_RT_WAVE_32 = 1u << 17, + RADV_PERFTEST_TRANSFER_QUEUE = 1u << 13, + RADV_PERFTEST_SHADER_OBJECT = 1u << 14, + RADV_PERFTEST_NIR_CACHE = 1u << 15, + RADV_PERFTEST_RT_WAVE_32 = 1u << 16, }; bool radv_init_trace(struct radv_device *device); diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c index f53a0e079f7..e4b72471758 100644 --- a/src/amd/vulkan/radv_device.c +++ b/src/amd/vulkan/radv_device.c @@ -829,17 +829,8 @@ radv_CreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo *pCr device->pbb_allowed = device->physical_device->rad_info.gfx_level >= GFX9 && !(device->instance->debug_flags & RADV_DEBUG_NOBINNING); - /* GS_FAST_LAUNCH=2 mode is supposed to be used on GFX11 but it turns - * out it has severe impact on performance for unknown reasons (tested on - * NAVI31 dGPU). It's disabled by default. - * - * On RDNA3 APUs (Phoenix) it turns GS_FAST_LAUNCH=1 doesn't work at all, - * and using mode2 fixes everything without any performance impact. - */ - device->mesh_fast_launch_2 = ((device->instance->perftest_flags & RADV_PERFTEST_GS_FAST_LAUNCH_2) && - device->physical_device->rad_info.gfx_level >= GFX11) || - device->physical_device->rad_info.family == CHIP_GFX1103_R1 || - device->physical_device->rad_info.family == CHIP_GFX1103_R2; + device->mesh_fast_launch_2 = device->physical_device->rad_info.gfx_level >= GFX11 && + !(device->instance->debug_flags & RADV_DEBUG_NO_GS_FAST_LAUNCH_2); device->disable_trunc_coord = device->instance->drirc.disable_trunc_coord; diff --git a/src/amd/vulkan/radv_instance.c b/src/amd/vulkan/radv_instance.c index a6018098836..691dd720b9e 100644 --- a/src/amd/vulkan/radv_instance.c +++ b/src/amd/vulkan/radv_instance.c @@ -78,6 +78,7 @@ static const struct debug_control radv_debug_options[] = {{"nofastclears", RADV_ {"nort", RADV_DEBUG_NO_RT}, {"nomeshshader", RADV_DEBUG_NO_MESH_SHADER}, {"nongg_gs", RADV_DEBUG_NO_NGG_GS}, + {"nogsfastlaunch2", RADV_DEBUG_NO_GS_FAST_LAUNCH_2}, {NULL, 0}}; const char * @@ -100,7 +101,6 @@ static const struct debug_control radv_perftest_options[] = {{"localbos", RADV_P {"rtwave64", RADV_PERFTEST_RT_WAVE_64}, {"video_decode", RADV_PERFTEST_VIDEO_DECODE}, {"dmashaders", RADV_PERFTEST_DMA_SHADERS}, - {"gsfastlaunch2", RADV_PERFTEST_GS_FAST_LAUNCH_2}, {"transfer_queue", RADV_PERFTEST_TRANSFER_QUEUE}, {"shader_object", RADV_PERFTEST_SHADER_OBJECT}, {"nircache", RADV_PERFTEST_NIR_CACHE},