diff --git a/app/src/main/cpp/skyline/gpu/buffer.cpp b/app/src/main/cpp/skyline/gpu/buffer.cpp index b108b86f..8159456f 100644 --- a/app/src/main/cpp/skyline/gpu/buffer.cpp +++ b/app/src/main/cpp/skyline/gpu/buffer.cpp @@ -620,9 +620,13 @@ namespace skyline::gpu { } span Buffer::GetReadOnlyBackingSpan(bool isFirstUsage, const std::function &flushHostCallback) { - std::scoped_lock lock{stateMutex}; - if (dirtyState == DirtyState::GpuDirty) - SynchronizeGuestImmediate(isFirstUsage, flushHostCallback); + if (!isDirect) { + std::unique_lock lock{stateMutex}; + if (dirtyState == DirtyState::GpuDirty) + SynchronizeGuestImmediate(isFirstUsage, flushHostCallback); + } else { + RefreshGpuWritesActiveDirect(true, flushHostCallback); + } return mirror; }