diff --git a/src/video_core/buffer_cache/buffer_cache.h b/src/video_core/buffer_cache/buffer_cache.h index be9b80c39b..0237a2b34f 100644 --- a/src/video_core/buffer_cache/buffer_cache.h +++ b/src/video_core/buffer_cache/buffer_cache.h @@ -292,7 +292,11 @@ std::optional BufferCache

::GetFlushArea(DA template void BufferCache

::DownloadMemory(DAddr device_addr, u64 size) { ForEachBufferInRange(device_addr, size, [&](BufferId, Buffer& buffer) { - DownloadBufferMemory(buffer, device_addr, size); + const DAddr start = (std::max)(device_addr, buffer.CpuAddr()); + const DAddr end = (std::min)(device_addr + size, buffer.CpuAddr() + buffer.SizeBytes()); + if (start < end) { + DownloadBufferMemory(buffer, start, end - start); + } }); }