From b51361eaa99ba4a2ee5b728b97a3c754cb0d2f92 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Fri, 17 Aug 2018 10:17:27 +0200 Subject: [PATCH] Revert "[dxbc] Work around OpControlBarrier issue on radv 18.2-git" This reverts commit 9293acfeb561fced8e05e2d08e3bd70fb5de8fff. This issue is caused by an LLVM bug, which now has a workaround in RADV: https://cgit.freedesktop.org/mesa/mesa/commit/?id=71d5b2fbf83061a1319141d26942771e8c75ff2b --- src/dxbc/dxbc_compiler.cpp | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/dxbc/dxbc_compiler.cpp b/src/dxbc/dxbc_compiler.cpp index f2e53729..557c409c 100644 --- a/src/dxbc/dxbc_compiler.cpp +++ b/src/dxbc/dxbc_compiler.cpp @@ -2328,20 +2328,17 @@ namespace dxvk { | spv::MemorySemanticsAcquireReleaseMask; } - // According to the SPIR-V spec, OpControlBarrier should - // also act as a memory barrier if the memory semantics - // are not 'none', but this is currently broken on RADV. - if (memoryScope != spv::ScopeInvocation) { - m_module.opMemoryBarrier( - m_module.constu32(memoryScope), - m_module.constu32(memorySemantics)); - } - if (executionScope != spv::ScopeInvocation) { m_module.opControlBarrier( m_module.constu32(executionScope), m_module.constu32(memoryScope), m_module.constu32(memorySemantics)); + } else if (memoryScope != spv::ScopeInvocation) { + m_module.opMemoryBarrier( + m_module.constu32(memoryScope), + m_module.constu32(memorySemantics)); + } else { + Logger::warn("DxbcCompiler: sync instruction has no effect"); } }