Module: Mesa Branch: master Commit: e352b4d650d37730e5087792b9a74ef31d1974ab URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e352b4d650d37730e5087792b9a74ef31d1974ab
Author: Daniel Schürmann <[email protected]> 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 <[email protected]> --- 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 ea4aebb767c..76ccbfad514 100644 --- a/src/compiler/spirv/spirv_to_nir.c +++ b/src/compiler/spirv/spirv_to_nir.c @@ -3360,13 +3360,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; } _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
