summaryrefslogtreecommitdiff
path: root/src/video_core/renderer_vulkan
diff options
context:
space:
mode:
authorGravatar Fernando Sahmkow2020-02-16 09:51:37 -0400
committerGravatar Fernando Sahmkow2020-04-22 11:36:06 -0400
commitda8f17715dbdc7eec92f5f0c11c968a51b86cab4 (patch)
treea1604f3cf9abe9128d26834f9c68161ecab6e204 /src/video_core/renderer_vulkan
parentTexture Cache: Implement OnCPUWrite and SyncGuestHost (diff)
downloadyuzu-da8f17715dbdc7eec92f5f0c11c968a51b86cab4.tar.gz
yuzu-da8f17715dbdc7eec92f5f0c11c968a51b86cab4.tar.xz
yuzu-da8f17715dbdc7eec92f5f0c11c968a51b86cab4.zip
GPU: Refactor synchronization on Async GPU
Diffstat (limited to 'src/video_core/renderer_vulkan')
-rw-r--r--src/video_core/renderer_vulkan/vk_rasterizer.cpp14
-rw-r--r--src/video_core/renderer_vulkan/vk_rasterizer.h2
2 files changed, 16 insertions, 0 deletions
diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp
index 71007bbe8..ad59f558d 100644
--- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp
+++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp
@@ -524,6 +524,20 @@ void RasterizerVulkan::InvalidateRegion(VAddr addr, u64 size) {
524 query_cache.InvalidateRegion(addr, size); 524 query_cache.InvalidateRegion(addr, size);
525} 525}
526 526
527void RasterizerVulkan::OnCPUWrite(VAddr addr, u64 size) {
528 if (!addr || !size) {
529 return;
530 }
531 texture_cache.OnCPUWrite(addr, size);
532 pipeline_cache.InvalidateRegion(addr, size);
533 buffer_cache.InvalidateRegion(addr, size);
534}
535
536void RasterizerVulkan::SyncGuestHost() {
537 texture_cache.SyncGuestHost();
538 // buffer_cache.SyncGuestHost();
539}
540
527void RasterizerVulkan::FlushAndInvalidateRegion(VAddr addr, u64 size) { 541void RasterizerVulkan::FlushAndInvalidateRegion(VAddr addr, u64 size) {
528 FlushRegion(addr, size); 542 FlushRegion(addr, size);
529 InvalidateRegion(addr, size); 543 InvalidateRegion(addr, size);
diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.h b/src/video_core/renderer_vulkan/vk_rasterizer.h
index d9108f862..285f731bc 100644
--- a/src/video_core/renderer_vulkan/vk_rasterizer.h
+++ b/src/video_core/renderer_vulkan/vk_rasterizer.h
@@ -119,6 +119,8 @@ public:
119 void FlushAll() override; 119 void FlushAll() override;
120 void FlushRegion(VAddr addr, u64 size) override; 120 void FlushRegion(VAddr addr, u64 size) override;
121 void InvalidateRegion(VAddr addr, u64 size) override; 121 void InvalidateRegion(VAddr addr, u64 size) override;
122 void OnCPUWrite(VAddr addr, u64 size) override;
123 void SyncGuestHost() override;
122 void FlushAndInvalidateRegion(VAddr addr, u64 size) override; 124 void FlushAndInvalidateRegion(VAddr addr, u64 size) override;
123 void FlushCommands() override; 125 void FlushCommands() override;
124 void TickFrame() override; 126 void TickFrame() override;