diff options
Diffstat (limited to 'src/compiler')
-rw-r--r-- | src/compiler/spirv/spirv_to_nir.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/compiler/spirv/spirv_to_nir.c b/src/compiler/spirv/spirv_to_nir.c index 3cac23433f2..6cf43cd2ca7 100644 --- a/src/compiler/spirv/spirv_to_nir.c +++ b/src/compiler/spirv/spirv_to_nir.c @@ -3664,11 +3664,15 @@ vtn_handle_barrier(struct vtn_builder *b, SpvOp opcode, /* GLSLang, prior to commit 8297936dd6eb3, emitted OpControlBarrier with * memory semantics of None for GLSL barrier(). + * And before that, prior to c3f1cdfa, emitted the OpControlBarrier with + * Device instead of Workgroup for execution scope. */ if (b->wa_glslang_cs_barrier && b->nb.shader->info.stage == MESA_SHADER_COMPUTE && - execution_scope == SpvScopeWorkgroup && + (execution_scope == SpvScopeWorkgroup || + execution_scope == SpvScopeDevice) && memory_semantics == SpvMemorySemanticsMaskNone) { + execution_scope = SpvScopeWorkgroup; memory_scope = SpvScopeWorkgroup; memory_semantics = SpvMemorySemanticsAcquireReleaseMask | SpvMemorySemanticsWorkgroupMemoryMask; |