From 5fac17f0ac8ab750db0dde25e635da98f6c46908 Mon Sep 17 00:00:00 2001 From: kaulfield Date: Thu, 29 Jan 2026 22:57:21 +0100 Subject: [PATCH] [gpu_core] Fixed non-async mode in gpu_thread, seems more stable. Doesn't affect default async mode --- src/video_core/gpu_thread.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/video_core/gpu_thread.cpp b/src/video_core/gpu_thread.cpp index 8d8d857a02..8c6637542d 100644 --- a/src/video_core/gpu_thread.cpp +++ b/src/video_core/gpu_thread.cpp @@ -88,12 +88,21 @@ void ThreadManager::TickGPU() { } void ThreadManager::InvalidateRegion(DAddr addr, u64 size) { - rasterizer->OnCacheInvalidation(addr, size); + if (!is_async) { + PushCommand(InvalidateRegionCommand(addr, size)); + } else { + rasterizer->OnCacheInvalidation(addr, size); + } } void ThreadManager::FlushAndInvalidateRegion(DAddr addr, u64 size) { - // Skip flush on asynch mode, as FlushAndInvalidateRegion is not used for anything too important - rasterizer->OnCacheInvalidation(addr, size); + if (!is_async) { + PushCommand(FlushAndInvalidateRegionCommand(addr, size)); + PushCommand(InvalidateRegionCommand(addr, size)); + } else { + // Skip flush on asynch mode, as FlushAndInvalidateRegion is not used for anything too important + rasterizer->OnCacheInvalidation(addr, size); + } } u64 ThreadManager::PushCommand(CommandData&& command_data, bool block) {