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) {