diff options
| author | 2020-05-15 02:52:35 -0300 | |
|---|---|---|
| committer | 2020-05-27 00:19:45 -0300 | |
| commit | 32e6727daecab60d368d14619c1e04d0d7e60008 (patch) | |
| tree | 427eade0b7069869011365137de2c87bc15df7e0 /src/video_core/renderer_vulkan | |
| parent | Merge pull request #3981 from ReinUsesLisp/bar (diff) | |
| download | yuzu-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.cpp | 7 |
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 | ||