mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2026-06-06 01:13:45 -04:00
Fix Xenoblade
This commit is contained in:
parent
48219f348c
commit
b49b103226
1 changed files with 5 additions and 1 deletions
|
|
@ -1619,6 +1619,7 @@ void BufferCache<P>::TouchBuffer(Buffer& buffer, BufferId buffer_id) noexcept {
|
|||
template <class P>
|
||||
bool BufferCache<P>::SynchronizeBuffer(Buffer& buffer, DAddr device_addr, u32 size) {
|
||||
upload_copies.clear();
|
||||
boost::container::small_vector<std::pair<u64, u64>, 8> uploaded_ranges;
|
||||
u64 staging_offset = 0;
|
||||
u64 largest_copy = 0;
|
||||
DAddr buffer_start = buffer.CpuAddr();
|
||||
|
|
@ -1632,6 +1633,7 @@ bool BufferCache<P>::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<P>::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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue