diff options
| author | 2020-02-18 13:24:38 -0400 | |
|---|---|---|
| committer | 2020-04-22 11:36:14 -0400 | |
| commit | 4adfc9bb0870296b372dc96296436538d6aa6c32 (patch) | |
| tree | df7dac8d36ec4a4a9c89ed6512eeb4372af4289c /src/video_core/renderer_vulkan | |
| parent | GPU: Fix rebase errors. (diff) | |
| download | yuzu-4adfc9bb0870296b372dc96296436538d6aa6c32.tar.gz yuzu-4adfc9bb0870296b372dc96296436538d6aa6c32.tar.xz yuzu-4adfc9bb0870296b372dc96296436538d6aa6c32.zip | |
Rasterizer: Document SignalFence & ReleaseFences and setup skeletons on Vulkan.
Diffstat (limited to 'src/video_core/renderer_vulkan')
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_rasterizer.cpp | 25 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_rasterizer.h | 2 |
2 files changed, 27 insertions, 0 deletions
diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index 9437a4aa1..1d75a4766 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp | |||
| @@ -535,6 +535,7 @@ void RasterizerVulkan::OnCPUWrite(VAddr addr, u64 size) { | |||
| 535 | texture_cache.OnCPUWrite(addr, size); | 535 | texture_cache.OnCPUWrite(addr, size); |
| 536 | pipeline_cache.InvalidateRegion(addr, size); | 536 | pipeline_cache.InvalidateRegion(addr, size); |
| 537 | buffer_cache.OnCPUWrite(addr, size); | 537 | buffer_cache.OnCPUWrite(addr, size); |
| 538 | query_cache.InvalidateRegion(addr, size); | ||
| 538 | } | 539 | } |
| 539 | 540 | ||
| 540 | void RasterizerVulkan::SyncGuestHost() { | 541 | void RasterizerVulkan::SyncGuestHost() { |
| @@ -542,6 +543,30 @@ void RasterizerVulkan::SyncGuestHost() { | |||
| 542 | buffer_cache.SyncGuestHost(); | 543 | buffer_cache.SyncGuestHost(); |
| 543 | } | 544 | } |
| 544 | 545 | ||
| 546 | void RasterizerVulkan::SignalFence(GPUVAddr addr, u32 value) { | ||
| 547 | auto& gpu{system.GPU()}; | ||
| 548 | auto& memory_manager{gpu.MemoryManager()}; | ||
| 549 | memory_manager.Write<u32>(addr, value); | ||
| 550 | /* | ||
| 551 | if (!gpu.IsAsync()) { | ||
| 552 | auto& memory_manager{gpu.MemoryManager()}; | ||
| 553 | memory_manager.Write<u32>(addr, value); | ||
| 554 | return; | ||
| 555 | } | ||
| 556 | fence_manager.SignalFence(addr, value); | ||
| 557 | */ | ||
| 558 | } | ||
| 559 | |||
| 560 | void RasterizerVulkan::ReleaseFences() { | ||
| 561 | /* | ||
| 562 | auto& gpu{system.GPU()}; | ||
| 563 | if (!gpu.IsAsync()) { | ||
| 564 | return; | ||
| 565 | } | ||
| 566 | fence_manager.WaitPendingFences(); | ||
| 567 | */ | ||
| 568 | } | ||
| 569 | |||
| 545 | void RasterizerVulkan::FlushAndInvalidateRegion(VAddr addr, u64 size) { | 570 | void RasterizerVulkan::FlushAndInvalidateRegion(VAddr addr, u64 size) { |
| 546 | FlushRegion(addr, size); | 571 | FlushRegion(addr, size); |
| 547 | InvalidateRegion(addr, size); | 572 | InvalidateRegion(addr, size); |
diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.h b/src/video_core/renderer_vulkan/vk_rasterizer.h index 7002a4fa3..08a9af401 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.h +++ b/src/video_core/renderer_vulkan/vk_rasterizer.h | |||
| @@ -122,6 +122,8 @@ public: | |||
| 122 | void InvalidateRegion(VAddr addr, u64 size) override; | 122 | void InvalidateRegion(VAddr addr, u64 size) override; |
| 123 | void OnCPUWrite(VAddr addr, u64 size) override; | 123 | void OnCPUWrite(VAddr addr, u64 size) override; |
| 124 | void SyncGuestHost() override; | 124 | void SyncGuestHost() override; |
| 125 | void SignalFence(GPUVAddr addr, u32 value) override; | ||
| 126 | void ReleaseFences() override; | ||
| 125 | void FlushAndInvalidateRegion(VAddr addr, u64 size) override; | 127 | void FlushAndInvalidateRegion(VAddr addr, u64 size) override; |
| 126 | void FlushCommands() override; | 128 | void FlushCommands() override; |
| 127 | void TickFrame() override; | 129 | void TickFrame() override; |