Mesa (main): anv: Enable nir_opt_access
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Feb 23 13:29:54 UTC 2022
Module: Mesa
Branch: main
Commit: ded9cb904f02cfe4206f88f8a41f49258f09f2b0
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ded9cb904f02cfe4206f88f8a41f49258f09f2b0
Author: Rhys Perry <pendingchaos02 at gmail.com>
Date: Fri Feb 18 17:49:57 2022 +0200
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 <mykhailo.skorokhodov at globallogic.com>
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
Reviewed-by: Jason Ekstrand <jason.ekstrand at collabora.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15082>
---
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 243ecde2fbe..7ebf483aaea 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.
*/
More information about the mesa-commit
mailing list