diff options
| author | 2020-02-16 09:51:37 -0400 | |
|---|---|---|
| committer | 2020-04-22 11:36:06 -0400 | |
| commit | da8f17715dbdc7eec92f5f0c11c968a51b86cab4 (patch) | |
| tree | a1604f3cf9abe9128d26834f9c68161ecab6e204 /src/video_core/renderer_vulkan | |
| parent | Texture Cache: Implement OnCPUWrite and SyncGuestHost (diff) | |
| download | yuzu-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.cpp | 14 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_rasterizer.h | 2 |
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 | ||
| 527 | void 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 | |||
| 536 | void RasterizerVulkan::SyncGuestHost() { | ||
| 537 | texture_cache.SyncGuestHost(); | ||
| 538 | // buffer_cache.SyncGuestHost(); | ||
| 539 | } | ||
| 540 | |||
| 527 | void RasterizerVulkan::FlushAndInvalidateRegion(VAddr addr, u64 size) { | 541 | void 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; |