diff --git a/src/video_core/buffer_cache/buffer_cache.h b/src/video_core/buffer_cache/buffer_cache.h index 0d8d37ec0c..e755ab216b 100644 --- a/src/video_core/buffer_cache/buffer_cache.h +++ b/src/video_core/buffer_cache/buffer_cache.h @@ -1621,8 +1621,11 @@ bool BufferCache
::SynchronizeBuffer(Buffer& buffer, DAddr device_addr, u32 si upload_copies.clear(); u64 total_size_bytes = 0; u64 largest_copy = 0; - const DAddr buffer_start = buffer.cpu_addr_cached; + DAddr buffer_start = buffer.cpu_addr_cached; memory_tracker.ForEachUploadRange(device_addr, size, [&](u64 device_addr_out, u64 range_size) { + if (IsRegionGpuModified(device_addr_out, range_size)) { + return; + } upload_copies.push_back(BufferCopy{ .src_offset = total_size_bytes, .dst_offset = device_addr_out - buffer_start, @@ -1634,7 +1637,7 @@ bool BufferCache
::SynchronizeBuffer(Buffer& buffer, DAddr device_addr, u32 si
if (total_size_bytes == 0) {
return true;
}
- const std::span