summaryrefslogtreecommitdiff
path: root/src/video_core/buffer_cache
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2020-04-28 02:14:11 -0300
committerGravatar ReinUsesLisp2020-04-28 02:18:12 -0300
commitfe931ac9761a813c8e7d195cf99bf68ff324839c (patch)
tree7a1b2a9c2a85ee0e93a19953f03b50530d085c5f /src/video_core/buffer_cache
parentMerge pull request #3766 from ReinUsesLisp/renderpass-cache-key (diff)
downloadyuzu-fe931ac9761a813c8e7d195cf99bf68ff324839c.tar.gz
yuzu-fe931ac9761a813c8e7d195cf99bf68ff324839c.tar.xz
yuzu-fe931ac9761a813c8e7d195cf99bf68ff324839c.zip
{maxwell_3d,buffer_cache}: Implement memory barriers using 3D registers
Drop MemoryBarrier from the buffer cache and use Maxwell3D's register WaitForIdle. To implement this on OpenGL we just call glMemoryBarrier with the necessary bits. Vulkan lacks this synchronization primitive, so we set an event and immediately wait for it. This is not a pretty solution, but it's what Vulkan can do without submitting the current command buffer to the queue (which ends up being more expensive on the CPU).
Diffstat (limited to 'src/video_core/buffer_cache')
-rw-r--r--src/video_core/buffer_cache/buffer_cache.h6
1 files changed, 0 insertions, 6 deletions
diff --git a/src/video_core/buffer_cache/buffer_cache.h b/src/video_core/buffer_cache/buffer_cache.h
index 510f11089..c86e914be 100644
--- a/src/video_core/buffer_cache/buffer_cache.h
+++ b/src/video_core/buffer_cache/buffer_cache.h
@@ -89,10 +89,6 @@ public:
89 map->MarkAsWritten(true); 89 map->MarkAsWritten(true);
90 MarkRegionAsWritten(map->GetStart(), map->GetEnd() - 1); 90 MarkRegionAsWritten(map->GetStart(), map->GetEnd() - 1);
91 } 91 }
92 } else {
93 if (map->IsWritten()) {
94 WriteBarrier();
95 }
96 } 92 }
97 93
98 return {ToHandle(block), static_cast<u64>(block->GetOffset(cpu_addr))}; 94 return {ToHandle(block), static_cast<u64>(block->GetOffset(cpu_addr))};
@@ -254,8 +250,6 @@ protected:
254 250
255 virtual BufferType ToHandle(const OwnerBuffer& storage) = 0; 251 virtual BufferType ToHandle(const OwnerBuffer& storage) = 0;
256 252
257 virtual void WriteBarrier() = 0;
258
259 virtual OwnerBuffer CreateBlock(VAddr cpu_addr, std::size_t size) = 0; 253 virtual OwnerBuffer CreateBlock(VAddr cpu_addr, std::size_t size) = 0;
260 254
261 virtual void UploadBlockData(const OwnerBuffer& buffer, std::size_t offset, std::size_t size, 255 virtual void UploadBlockData(const OwnerBuffer& buffer, std::size_t offset, std::size_t size,