From a8b309f1cf61d5cc44118e712f8fbf6768f01aa9 Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Fri, 30 May 2025 23:55:19 -0400 Subject: [PATCH] nvk: Run nir_opt_non_uniform_access for UBOs on Turing+ Part-of: --- src/nouveau/vulkan/nvk_shader.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/nouveau/vulkan/nvk_shader.c b/src/nouveau/vulkan/nvk_shader.c index a074243c0ac..7315eb93e25 100644 --- a/src/nouveau/vulkan/nvk_shader.c +++ b/src/nouveau/vulkan/nvk_shader.c @@ -399,6 +399,15 @@ nvk_lower_nir(struct nvk_device *dev, nir_shader *nir, NIR_PASS(_, nir, nvk_nir_lower_descriptors, pdev, shader_flags, rs, set_layout_count, set_layouts, cbuf_map); + if (nvk_use_bindless_cbuf(&pdev->info)) { + /* On Turing+ where we have bindless cbufs, we use ACCESS_NON_UNIFORM to + * determine whether or not it's safe to assume a uniform handle so we + * want to optimize it away whenever possible. + */ + if (nir_has_non_uniform_access(nir, nir_lower_non_uniform_ubo_access)) + NIR_PASS(_, nir, nir_opt_non_uniform_access); + } + if (pdev->info.cls_eng3d < TURING_A) { /* NOTE: This does nothing for images on Kepler since those are lowered * to suldga/sustga before we get here. That's fine, though, because