Mesa (main): nir/opt_load_store_vectorize: improve ssbo/global alias analysis
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Dec 17 19:40:56 UTC 2021
Module: Mesa
Branch: main
Commit: c56cf157c518193ef85d54f9185df5c703d14896
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c56cf157c518193ef85d54f9185df5c703d14896
Author: Rhys Perry <pendingchaos02 at gmail.com>
Date: Tue Mar 9 16:11:12 2021 +0000
nir/opt_load_store_vectorize: improve ssbo/global alias analysis
If either the global access or the ssbo access is restrict, they shouldn't
alias.
No fossil-db changes.
Signed-off-by: Rhys Perry <pendingchaos02 at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14227>
---
src/compiler/nir/nir_opt_load_store_vectorize.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/src/compiler/nir/nir_opt_load_store_vectorize.c b/src/compiler/nir/nir_opt_load_store_vectorize.c
index b8eb0353cdd..cd5dbfbe40a 100644
--- a/src/compiler/nir/nir_opt_load_store_vectorize.c
+++ b/src/compiler/nir/nir_opt_load_store_vectorize.c
@@ -926,6 +926,19 @@ bindings_different_restrict(nir_shader *shader, struct entry *a, struct entry *b
a_var = a->key->var;
b_var = b->key->var;
different_bindings = a_var != b_var;
+ } else if (!!a->key->resource != !!b->key->resource) {
+ /* comparing global and ssbo access */
+ different_bindings = true;
+
+ if (a->key->resource) {
+ nir_binding a_res = nir_chase_binding(nir_src_for_ssa(a->key->resource));
+ a_var = nir_get_binding_variable(shader, a_res);
+ }
+
+ if (b->key->resource) {
+ nir_binding b_res = nir_chase_binding(nir_src_for_ssa(b->key->resource));
+ b_var = nir_get_binding_variable(shader, b_res);
+ }
} else {
return false;
}
More information about the mesa-commit
mailing list