aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/renderer_vulkan/vk_rasterizer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/video_core/renderer_vulkan/vk_rasterizer.cpp')
-rw-r--r--src/video_core/renderer_vulkan/vk_rasterizer.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp
index f43bea1220..264ffb28b5 100644
--- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp
+++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp
@@ -798,6 +798,18 @@ void RasterizerVulkan::OnCacheInvalidation(DAddr addr, u64 size) {
pipeline_cache.InvalidateRegion(addr, size);
}
+bool RasterizerVulkan::TryCacheInvalidation(DAddr addr, u64 size) {
+ if (addr == 0 || size == 0) return true;
+ {
+ std::scoped_lock lock{buffer_cache.mutex, texture_cache.mutex};
+ if (buffer_cache.IsRegionGpuModified(addr, size)) return false;
+ texture_cache.WriteMemory(addr, size);
+ buffer_cache.WriteMemory(addr, size);
+ }
+ pipeline_cache.InvalidateRegion(addr, size);
+ return true;
+}
+
void RasterizerVulkan::InvalidateGPUCache() {
gpu.InvalidateGPUCache();
}