shader/other: Implement MEMBAR.CTS

This silences an assertion we were hitting and uses workgroup memory
barriers when the game requests it.
This commit is contained in:
ReinUsesLisp
2020-05-15 02:52:35 -03:00
parent 508242c267
commit 32e6727dae
4 changed files with 27 additions and 9 deletions

View File

@ -2344,7 +2344,12 @@ private:
return {};
}
Expression MemoryBarrierGL(Operation) {
Expression MemoryBarrierGroup(Operation) {
code.AddLine("groupMemoryBarrier();");
return {};
}
Expression MemoryBarrierGlobal(Operation) {
code.AddLine("memoryBarrier();");
return {};
}
@ -2591,7 +2596,8 @@ private:
&GLSLDecompiler::ShuffleIndexed,
&GLSLDecompiler::Barrier,
&GLSLDecompiler::MemoryBarrierGL,
&GLSLDecompiler::MemoryBarrierGroup,
&GLSLDecompiler::MemoryBarrierGlobal,
};
static_assert(operation_decompilers.size() == static_cast<std::size_t>(OperationCode::Amount));