aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/compiler/nir/nir_deref.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/compiler/nir/nir_deref.c b/src/compiler/nir/nir_deref.c
index 513e8242d7c..2f5fda643ca 100644
--- a/src/compiler/nir/nir_deref.c
+++ b/src/compiler/nir/nir_deref.c
@@ -293,7 +293,12 @@ nir_fixup_deref_modes(nir_shader *shader)
static bool
modes_may_alias(nir_variable_mode a, nir_variable_mode b)
{
- /* Two pointers can only alias if they have the same mode.
+ /* Generic pointers can alias with SSBOs */
+ if ((a == nir_var_mem_ssbo || a == nir_var_mem_global) &&
+ (b == nir_var_mem_ssbo || b == nir_var_mem_global))
+ return true;
+
+ /* In the general case, pointers can only alias if they have the same mode.
*
* NOTE: In future, with things like OpenCL generic pointers, this may not
* be true and will have to be re-evaluated. However, with graphics only,