From c4e28785370bfd7f1f36ffbbc0d27885b0beca60 Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Wed, 12 Nov 2025 16:04:16 +0200 Subject: [PATCH] anv: disable software detiling on Xe2+ for image atomics 64bits This is what happens when you leave MR unreviewed for months. Signed-off-by: Lionel Landwerlin Fixes: d39e443ef8 ("anv: add infrastructure for common vk_pipeline") Reviewed-by: Alyssa Rosenzweig Part-of: --- src/intel/vulkan/anv_shader_compile.c | 31 ++++++++++++++++----------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/src/intel/vulkan/anv_shader_compile.c b/src/intel/vulkan/anv_shader_compile.c index 54bc84fba94..0f8c516f3f0 100644 --- a/src/intel/vulkan/anv_shader_compile.c +++ b/src/intel/vulkan/anv_shader_compile.c @@ -1339,12 +1339,17 @@ anv_shader_lower_nir(struct anv_device *device, nir_shader_gather_info(nir, nir_shader_get_entrypoint(nir)); - /* Ensure robustness, do this before brw_nir_lower_storage_image so that - * added image size intrinsics for bounds checkings are properly lowered - * for cube images. - */ - NIR_PASS(_, nir, nir_lower_robust_access, - accept_64bit_atomic_cb, NULL); + /* Apply lowering for 64bit atomics pre-Xe2 */ + const bool lower_64bit_atomics = compiler->devinfo->ver < 20; + + if (lower_64bit_atomics) { + /* Ensure robustness, do this before brw_nir_lower_storage_image so that + * added image size intrinsics for bounds checkings are properly lowered + * for cube images. + */ + NIR_PASS(_, nir, nir_lower_robust_access, + accept_64bit_atomic_cb, NULL); + } NIR_PASS(_, nir, brw_nir_lower_storage_image, compiler, &(struct brw_nir_lower_storage_image_opts) { @@ -1358,13 +1363,15 @@ anv_shader_lower_nir(struct anv_device *device, pdevice->instance->emulate_read_without_format, }); - /* Switch from image to global */ - NIR_PASS(_, nir, nir_lower_image_atomics_to_global, - accept_64bit_atomic_cb, NULL); + if (lower_64bit_atomics) { + /* Switch from image to global */ + NIR_PASS(_, nir, nir_lower_image_atomics_to_global, + accept_64bit_atomic_cb, NULL); - /* Detile for global */ - NIR_PASS(_, nir, brw_nir_lower_texel_address, compiler->devinfo, - pdevice->isl_dev.shader_tiling); + /* Detile for global */ + NIR_PASS(_, nir, brw_nir_lower_texel_address, compiler->devinfo, + pdevice->isl_dev.shader_tiling); + } NIR_PASS(_, nir, nir_lower_explicit_io, nir_var_mem_global, nir_address_format_64bit_global);