summaryrefslogtreecommitdiff
path: root/src/video_core/renderer_vulkan
diff options
context:
space:
mode:
authorGravatar Fernando Sahmkow2020-04-05 12:58:23 -0400
committerGravatar Fernando Sahmkow2020-04-06 09:21:46 -0400
commit9c0f40a1f5bea37b87a31e9f957c4d2a14a8e421 (patch)
tree0aca3e4623f87ee57694b028bea75fdf2ae3c32c /src/video_core/renderer_vulkan
parentMerge pull request #3513 from ReinUsesLisp/native-astc (diff)
downloadyuzu-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.cpp28
-rw-r--r--src/video_core/renderer_vulkan/vk_rasterizer.h6
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
496void RasterizerVulkan::FlushAll() {} 496void RasterizerVulkan::FlushAll() {}
497 497
498void RasterizerVulkan::FlushRegion(CacheAddr addr, u64 size) { 498void 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
504void RasterizerVulkan::InvalidateRegion(CacheAddr addr, u64 size) { 508void 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
511void RasterizerVulkan::FlushAndInvalidateRegion(CacheAddr addr, u64 size) { 519void 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,