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