From 3740d70fc5638630caeb0b53ea67b57173032579 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Wed, 15 Apr 2026 11:21:09 +0200 Subject: [PATCH] radv: lower SHADER_RECORD_INDEX to non-uniform This fixes an issue with RADV and NVIDIA-RTX/Donut-Samples with heap support in vkd3d-proton. Backport-to: 26.1 Signed-off-by: Samuel Pitoiset (cherry picked from commit 477c44ba93986e9aa4feae20f7e3777586a50ed1) Part-of: --- .pick_status.json | 2 +- src/amd/vulkan/radv_shader.c | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index b67c9479781..54631413cb6 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -2254,7 +2254,7 @@ "description": "radv: lower SHADER_RECORD_INDEX to non-uniform", "nominated": true, "nomination_type": 4, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c index 691ef4a2d86..da5914efebc 100644 --- a/src/amd/vulkan/radv_shader.c +++ b/src/amd/vulkan/radv_shader.c @@ -799,8 +799,12 @@ radv_shader_spirv_to_nir(struct radv_device *device, struct radv_shader_stage *s NIR_PASS(progress, nir, nir_lower_flrp, lower_flrp, false /* always precise */); if (stage->key.descriptor_heap) { + const vk_nir_lower_descriptor_heaps_options heap_options = { + .lower_shader_record_index_to_non_uniform = true, + }; + progress = false; - NIR_PASS(progress, nir, vk_nir_lower_descriptor_heaps, stage->layout.mapping, NULL, &embedded_samplers); + NIR_PASS(progress, nir, vk_nir_lower_descriptor_heaps, stage->layout.mapping, &heap_options, &embedded_samplers); if (progress) { NIR_PASS(_, nir, nir_remove_dead_variables, nir_var_uniform | nir_var_image, NULL); NIR_PASS(_, nir, nir_opt_dce);