mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-03-14 22:29:15 +01:00
[dxbc] Work around OpControlBarrier issue on radv 18.2-git
This commit is contained in:
parent
fe66e668e5
commit
9293acfeb5
@ -2319,17 +2319,20 @@ namespace dxvk {
|
|||||||
| spv::MemorySemanticsAcquireReleaseMask;
|
| 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) {
|
if (executionScope != spv::ScopeInvocation) {
|
||||||
m_module.opControlBarrier(
|
m_module.opControlBarrier(
|
||||||
m_module.constu32(executionScope),
|
m_module.constu32(executionScope),
|
||||||
m_module.constu32(memoryScope),
|
m_module.constu32(memoryScope),
|
||||||
m_module.constu32(memorySemantics));
|
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");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user