mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2024-12-12 19:54:33 +08:00
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@globallogic.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15082>
(cherry picked from commit ded9cb904f
)
This commit is contained in:
parent
ea8391a890
commit
0e61e32758
@ -4801,7 +4801,7 @@
|
||||
"description": "anv: Enable nir_opt_access",
|
||||
"nominated": true,
|
||||
"nomination_type": 0,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": null
|
||||
},
|
||||
|
@ -233,6 +233,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.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user