diff --git a/src/video_core/buffer_cache/buffer_cache.h b/src/video_core/buffer_cache/buffer_cache.h index 0738eaeec3..af1eea57af 100644 --- a/src/video_core/buffer_cache/buffer_cache.h +++ b/src/video_core/buffer_cache/buffer_cache.h @@ -1619,6 +1619,7 @@ void BufferCache
::TouchBuffer(Buffer& buffer, BufferId buffer_id) noexcept {
template ::SynchronizeBuffer(Buffer& buffer, DAddr device_addr, u32 size) {
upload_copies.clear();
+ boost::container::small_vector ::SynchronizeBuffer(Buffer& buffer, DAddr device_addr, u32 si
.dst_offset = start - buffer_start,
.size = sz
});
+ uploaded_ranges.emplace_back(start, sz);
staging_offset += sz;
largest_copy = (std::max)(largest_copy, sz);
};
@@ -1644,9 +1646,11 @@ bool BufferCache ::SynchronizeBuffer(Buffer& buffer, DAddr device_addr, u32 si
start = (std::max)(start, gend);
});
push(start, end);
+ });
+ for (const auto& [addr, range_size] : uploaded_ranges) {
ClearDownload(addr, range_size);
gpu_modified_ranges.Subtract(addr, range_size);
- });
+ }
if (upload_copies.empty()) {
return true;
}