summaryrefslogtreecommitdiff
path: root/src/video_core/renderer_vulkan
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2020-05-15 02:52:35 -0300
committerGravatar ReinUsesLisp2020-05-27 00:19:45 -0300
commit32e6727daecab60d368d14619c1e04d0d7e60008 (patch)
tree427eade0b7069869011365137de2c87bc15df7e0 /src/video_core/renderer_vulkan
parentMerge pull request #3981 from ReinUsesLisp/bar (diff)
downloadyuzu-32e6727daecab60d368d14619c1e04d0d7e60008.tar.gz
yuzu-32e6727daecab60d368d14619c1e04d0d7e60008.tar.xz
yuzu-32e6727daecab60d368d14619c1e04d0d7e60008.zip
shader/other: Implement MEMBAR.CTS
This silences an assertion we were hitting and uses workgroup memory barriers when the game requests it.
Diffstat (limited to 'src/video_core/renderer_vulkan')
-rw-r--r--src/video_core/renderer_vulkan/vk_shader_decompiler.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/video_core/renderer_vulkan/vk_shader_decompiler.cpp b/src/video_core/renderer_vulkan/vk_shader_decompiler.cpp
index 890f34a2c..6f6dedd82 100644
--- a/src/video_core/renderer_vulkan/vk_shader_decompiler.cpp
+++ b/src/video_core/renderer_vulkan/vk_shader_decompiler.cpp
@@ -2215,8 +2215,8 @@ private:
2215 return {}; 2215 return {};
2216 } 2216 }
2217 2217
2218 Expression MemoryBarrierGL(Operation) { 2218 template <spv::Scope scope>
2219 const auto scope = spv::Scope::Device; 2219 Expression MemoryBarrier(Operation) {
2220 const auto semantics = 2220 const auto semantics =
2221 spv::MemorySemanticsMask::AcquireRelease | spv::MemorySemanticsMask::UniformMemory | 2221 spv::MemorySemanticsMask::AcquireRelease | spv::MemorySemanticsMask::UniformMemory |
2222 spv::MemorySemanticsMask::WorkgroupMemory | 2222 spv::MemorySemanticsMask::WorkgroupMemory |
@@ -2681,7 +2681,8 @@ private:
2681 &SPIRVDecompiler::ShuffleIndexed, 2681 &SPIRVDecompiler::ShuffleIndexed,
2682 2682
2683 &SPIRVDecompiler::Barrier, 2683 &SPIRVDecompiler::Barrier,
2684 &SPIRVDecompiler::MemoryBarrierGL, 2684 &SPIRVDecompiler::MemoryBarrier<spv::Scope::Workgroup>,
2685 &SPIRVDecompiler::MemoryBarrier<spv::Scope::Device>,
2685 }; 2686 };
2686 static_assert(operation_decompilers.size() == static_cast<std::size_t>(OperationCode::Amount)); 2687 static_assert(operation_decompilers.size() == static_cast<std::size_t>(OperationCode::Amount));
2687 2688