From ded9cb904f02cfe4206f88f8a41f49258f09f2b0 Mon Sep 17 00:00:00 2001 From: Rhys Perry Date: Fri, 18 Feb 2022 17:49:57 +0200 Subject: [PATCH] anv: Enable nir_opt_access This commit will enable pass for searching readonly / writeonly access when it's missing. We don't support shaderStorageImageReadWithoutFormat and the optimization pass causes those shaders to take the write-only path which does support formatless. Following games are affected with positive result: - Wolfenstein: Youngblood - Wolfenstein II: The New Colossus https://gitlab.freedesktop.org/mesa/mesa/-/issues/3138 - Rage 2 https://gitlab.freedesktop.org/mesa/mesa/-/issues/5791 - The Surge 2 https://gitlab.freedesktop.org/mesa/mesa/-/issues/5805 - Metro Exodus https://gitlab.freedesktop.org/mesa/mesa/-/issues/4703 - DOOM Eternal https://gitlab.freedesktop.org/mesa/mesa/-/issues/4273 Cc: mesa-stable Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3138,https://gitlab.freedesktop.org/mesa/mesa/-/issues/5791,https://gitlab.freedesktop.org/mesa/mesa/-/issues/4273 Signed-off-by: Mykhailo Skorokhodov Reviewed-by: Kenneth Graunke Reviewed-by: Jason Ekstrand Reviewed-by: Lionel Landwerlin Part-of: --- src/intel/vulkan/anv_pipeline.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/intel/vulkan/anv_pipeline.c b/src/intel/vulkan/anv_pipeline.c index 243ecde..7ebf483 100644 --- a/src/intel/vulkan/anv_pipeline.c +++ b/src/intel/vulkan/anv_pipeline.c @@ -235,6 +235,12 @@ anv_shader_compile_to_nir(struct anv_device *device, */ NIR_PASS_V(nir, nir_lower_variable_initializers, ~0); + const nir_opt_access_options opt_access_options = { + .is_vulkan = true, + .infer_non_readable = true, + }; + NIR_PASS_V(nir, nir_opt_access, &opt_access_options); + /* Split member structs. We do this before lower_io_to_temporaries so that * it doesn't lower system values to temporaries by accident. */ -- 2.7.4