aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/gpu_thread.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/video_core/gpu_thread.cpp')
-rw-r--r--src/video_core/gpu_thread.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/video_core/gpu_thread.cpp b/src/video_core/gpu_thread.cpp
index 8d8d857a02..63a2516399 100644
--- a/src/video_core/gpu_thread.cpp
+++ b/src/video_core/gpu_thread.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project
@@ -92,7 +92,16 @@ void ThreadManager::InvalidateRegion(DAddr addr, u64 size) {
}
void ThreadManager::FlushAndInvalidateRegion(DAddr addr, u64 size) {
- // Skip flush on asynch mode, as FlushAndInvalidateRegion is not used for anything too important
+ if (Settings::IsGPULevelHigh()) {
+ if (!is_async) {
+ PushCommand(FlushRegionCommand(addr, size));
+ } else {
+ auto& gpu = system.GPU();
+ const u64 fence = gpu.RequestFlush(addr, size);
+ TickGPU();
+ gpu.WaitForSyncOperation(fence);
+ }
+ }
rasterizer->OnCacheInvalidation(addr, size);
}