Mesa (staging/19.1): spirv: Fix order of barriers in SpvOpControlBarrier
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Jul 26 07:46:42 UTC 2019
Module: Mesa
Branch: staging/19.1
Commit: 742f348d32557d9d1d3e5c598ff255a38ff89499
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=742f348d32557d9d1d3e5c598ff255a38ff89499
Author: Daniel Schürmann <daniel at schuermann.dev>
Date: Thu Jul 18 20:48:14 2019 +0200
spirv: Fix order of barriers in SpvOpControlBarrier
Semantically, the memory barrier has to come first to wait
for the completion of pending memory requests.
Afterwards, the workgroups can be synchronized.
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
(cherry picked from commit e352b4d650d37730e5087792b9a74ef31d1974ab)
---
src/compiler/spirv/spirv_to_nir.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/compiler/spirv/spirv_to_nir.c b/src/compiler/spirv/spirv_to_nir.c
index 1a5d4c7988d..71957da235b 100644
--- a/src/compiler/spirv/spirv_to_nir.c
+++ b/src/compiler/spirv/spirv_to_nir.c
@@ -3391,13 +3391,13 @@ vtn_handle_barrier(struct vtn_builder *b, SpvOp opcode,
}
case SpvOpControlBarrier: {
- SpvScope execution_scope = vtn_constant_uint(b, w[1]);
- if (execution_scope == SpvScopeWorkgroup)
- vtn_emit_barrier(b, nir_intrinsic_barrier);
-
SpvScope memory_scope = vtn_constant_uint(b, w[2]);
SpvMemorySemanticsMask memory_semantics = vtn_constant_uint(b, w[3]);
vtn_emit_memory_barrier(b, memory_scope, memory_semantics);
+
+ SpvScope execution_scope = vtn_constant_uint(b, w[1]);
+ if (execution_scope == SpvScopeWorkgroup)
+ vtn_emit_barrier(b, nir_intrinsic_barrier);
break;
}
More information about the mesa-commit
mailing list