diff options
| author | 2020-04-05 12:58:23 -0400 | |
|---|---|---|
| committer | 2020-04-06 09:21:46 -0400 | |
| commit | 9c0f40a1f5bea37b87a31e9f957c4d2a14a8e421 (patch) | |
| tree | 0aca3e4623f87ee57694b028bea75fdf2ae3c32c /src/video_core/renderer_vulkan | |
| parent | Merge pull request #3513 from ReinUsesLisp/native-astc (diff) | |
| download | yuzu-9c0f40a1f5bea37b87a31e9f957c4d2a14a8e421.tar.gz yuzu-9c0f40a1f5bea37b87a31e9f957c4d2a14a8e421.tar.xz yuzu-9c0f40a1f5bea37b87a31e9f957c4d2a14a8e421.zip | |
GPU: Setup Flush/Invalidate to use VAddr instead of CacheAddr
Diffstat (limited to 'src/video_core/renderer_vulkan')
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_rasterizer.cpp | 28 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_rasterizer.h | 6 |
2 files changed, 21 insertions, 13 deletions
diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index 58c69b786..0ca72eb45 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp | |||
| @@ -495,20 +495,28 @@ void RasterizerVulkan::Query(GPUVAddr gpu_addr, VideoCore::QueryType type, | |||
| 495 | 495 | ||
| 496 | void RasterizerVulkan::FlushAll() {} | 496 | void RasterizerVulkan::FlushAll() {} |
| 497 | 497 | ||
| 498 | void RasterizerVulkan::FlushRegion(CacheAddr addr, u64 size) { | 498 | void RasterizerVulkan::FlushRegion(VAddr addr, u64 size) { |
| 499 | texture_cache.FlushRegion(addr, size); | 499 | if (!addr || !size) { |
| 500 | buffer_cache.FlushRegion(addr, size); | 500 | return; |
| 501 | query_cache.FlushRegion(addr, size); | 501 | } |
| 502 | CacheAddr cache_addr = ToCacheAddr(system.Memory().GetPointer(addr)); | ||
| 503 | texture_cache.FlushRegion(cache_addr, size); | ||
| 504 | buffer_cache.FlushRegion(cache_addr, size); | ||
| 505 | query_cache.FlushRegion(cache_addr, size); | ||
| 502 | } | 506 | } |
| 503 | 507 | ||
| 504 | void RasterizerVulkan::InvalidateRegion(CacheAddr addr, u64 size) { | 508 | void RasterizerVulkan::InvalidateRegion(VAddr addr, u64 size) { |
| 505 | texture_cache.InvalidateRegion(addr, size); | 509 | if (!addr || !size) { |
| 506 | pipeline_cache.InvalidateRegion(addr, size); | 510 | return; |
| 507 | buffer_cache.InvalidateRegion(addr, size); | 511 | } |
| 508 | query_cache.InvalidateRegion(addr, size); | 512 | CacheAddr cache_addr = ToCacheAddr(system.Memory().GetPointer(addr)); |
| 513 | texture_cache.InvalidateRegion(cache_addr, size); | ||
| 514 | pipeline_cache.InvalidateRegion(cache_addr, size); | ||
| 515 | buffer_cache.InvalidateRegion(cache_addr, size); | ||
| 516 | query_cache.InvalidateRegion(cache_addr, size); | ||
| 509 | } | 517 | } |
| 510 | 518 | ||
| 511 | void RasterizerVulkan::FlushAndInvalidateRegion(CacheAddr addr, u64 size) { | 519 | void RasterizerVulkan::FlushAndInvalidateRegion(VAddr addr, u64 size) { |
| 512 | FlushRegion(addr, size); | 520 | FlushRegion(addr, size); |
| 513 | InvalidateRegion(addr, size); | 521 | InvalidateRegion(addr, size); |
| 514 | } | 522 | } |
diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.h b/src/video_core/renderer_vulkan/vk_rasterizer.h index 3185868e9..f642dde76 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.h +++ b/src/video_core/renderer_vulkan/vk_rasterizer.h | |||
| @@ -118,9 +118,9 @@ public: | |||
| 118 | void ResetCounter(VideoCore::QueryType type) override; | 118 | void ResetCounter(VideoCore::QueryType type) override; |
| 119 | void Query(GPUVAddr gpu_addr, VideoCore::QueryType type, std::optional<u64> timestamp) override; | 119 | void Query(GPUVAddr gpu_addr, VideoCore::QueryType type, std::optional<u64> timestamp) override; |
| 120 | void FlushAll() override; | 120 | void FlushAll() override; |
| 121 | void FlushRegion(CacheAddr addr, u64 size) override; | 121 | void FlushRegion(VAddr addr, u64 size) override; |
| 122 | void InvalidateRegion(CacheAddr addr, u64 size) override; | 122 | void InvalidateRegion(VAddr addr, u64 size) override; |
| 123 | void FlushAndInvalidateRegion(CacheAddr addr, u64 size) override; | 123 | void FlushAndInvalidateRegion(VAddr addr, u64 size) override; |
| 124 | void FlushCommands() override; | 124 | void FlushCommands() override; |
| 125 | void TickFrame() override; | 125 | void TickFrame() override; |
| 126 | bool AccelerateSurfaceCopy(const Tegra::Engines::Fermi2D::Regs::Surface& src, | 126 | bool AccelerateSurfaceCopy(const Tegra::Engines::Fermi2D::Regs::Surface& src, |