From 14dfc05f8316dc679e8fa325de0986c9a2251212 Mon Sep 17 00:00:00 2001 From: Georg Lehmann Date: Sun, 14 Sep 2025 15:49:41 +0200 Subject: [PATCH] radv: use rt wave size in fragment shaders with ray queries MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Usually wave64 performs better for fragment shaders, because LDS sharing for interpolation is better. But the rt traversal loop divergence is likely high enough to make wave32 better on GFX10. Reviewed-by: Timur Kristóf Part-of: --- src/amd/vulkan/radv_shader.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c index 77fb816878b..52ae64cf6ca 100644 --- a/src/amd/vulkan/radv_shader.c +++ b/src/amd/vulkan/radv_shader.c @@ -392,7 +392,10 @@ radv_shader_choose_subgroup_size(struct radv_device *device, nir_shader *nir, /* Legacy GS doesn't support wave32. */ wave_size = 64; } else if (nir->info.stage == MESA_SHADER_FRAGMENT) { - wave_size = pdev->ps_wave_size; + if (nir->info.ray_queries) + wave_size = pdev->rt_wave_size; + else + wave_size = pdev->ps_wave_size; } else if (mesa_shader_stage_is_rt(nir->info.stage)) { wave_size = pdev->rt_wave_size; } else {