aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/dma_pusher.cpp
diff options
context:
space:
mode:
authorTakoroka <137927095+Takoroka@users.noreply.github.com>2026-10-30 13:48:24 -0400
committerTakoroka <137927095+Takoroka@users.noreply.github.com>2026-10-30 13:48:24 -0400
commit01effa81ab0e151f8cfd674bf4da952d24645943 (patch)
treedf3037540d582c4119acef689d4531976cac7f32 /src/video_core/dma_pusher.cpp
parentdfe734dce6aed88038d2fd8f54b06c6b0304cf36 (diff)
parentea33ad1865970ee731e5f74dbcc26ca472798afe (diff)
Merge branch 'nx2' into nx2-experimental
# Conflicts: # src/video_core/nx2.h # src/video_core/renderer_vulkan/vk_texture_cache.cpp # src/video_core/texture_cache/texture_cache.h
Diffstat (limited to 'src/video_core/dma_pusher.cpp')
-rw-r--r--src/video_core/dma_pusher.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/video_core/dma_pusher.cpp b/src/video_core/dma_pusher.cpp
index 62f7e6bfdb..88d571ae5f 100644
--- a/src/video_core/dma_pusher.cpp
+++ b/src/video_core/dma_pusher.cpp
@@ -151,7 +151,10 @@ bool DmaPusher::Step() {
}
}
// A resumed entry is read again: the words after the acquire may be new by now.
- const bool use_safe = Settings::IsDMALevelDefault() ? Settings::IsGPULevelHigh() : Settings::IsDMALevelSafe();
+ // A safe read flushes the caches, which belong to the split's back thread while it runs
+ // (the split only starts with unsafe reads; the settings can change mid-game).
+ const bool use_safe = !VideoCommon::GpuSplit::Get().Active() &&
+ (Settings::IsDMALevelDefault() ? Settings::IsGPULevelHigh() : Settings::IsDMALevelSafe());
if (use_safe) {
Tegra::Memory::GpuGuestMemory<Tegra::CommandHeader, Tegra::Memory::GuestMemoryFlags::SafeRead>headers(memory_manager, dma_state.dma_get, header.size, &command_headers);
const std::span<const CommandHeader> commands{headers.data(), headers.size()};