|
|
@ -167,7 +167,7 @@ public:
|
|
|
|
/// Return true when a CPU region is modified from the GPU
|
|
|
|
/// Return true when a CPU region is modified from the GPU
|
|
|
|
[[nodiscard]] bool IsRegionGpuModified(VAddr addr, size_t size);
|
|
|
|
[[nodiscard]] bool IsRegionGpuModified(VAddr addr, size_t size);
|
|
|
|
|
|
|
|
|
|
|
|
/// Return true when a CPU region is modified from the GPU
|
|
|
|
/// Return true when a CPU region is modified from the CPU
|
|
|
|
[[nodiscard]] bool IsRegionCpuModified(VAddr addr, size_t size);
|
|
|
|
[[nodiscard]] bool IsRegionCpuModified(VAddr addr, size_t size);
|
|
|
|
|
|
|
|
|
|
|
|
std::mutex mutex;
|
|
|
|
std::mutex mutex;
|
|
|
@ -593,8 +593,8 @@ void BufferCache<P>::CommitAsyncFlushesHigh() {
|
|
|
|
const VAddr cpu_addr = interval.lower();
|
|
|
|
const VAddr cpu_addr = interval.lower();
|
|
|
|
ForEachBufferInRange(cpu_addr, size, [&](BufferId buffer_id, Buffer& buffer) {
|
|
|
|
ForEachBufferInRange(cpu_addr, size, [&](BufferId buffer_id, Buffer& buffer) {
|
|
|
|
boost::container::small_vector<BufferCopy, 1> copies;
|
|
|
|
boost::container::small_vector<BufferCopy, 1> copies;
|
|
|
|
buffer.ForEachDownloadRange(
|
|
|
|
buffer.ForEachDownloadRangeAndClear(
|
|
|
|
cpu_addr, size, true, [&](u64 range_offset, u64 range_size) {
|
|
|
|
cpu_addr, size, [&](u64 range_offset, u64 range_size) {
|
|
|
|
const VAddr buffer_addr = buffer.CpuAddr();
|
|
|
|
const VAddr buffer_addr = buffer.CpuAddr();
|
|
|
|
const auto add_download = [&](VAddr start, VAddr end) {
|
|
|
|
const auto add_download = [&](VAddr start, VAddr end) {
|
|
|
|
const u64 new_offset = start - buffer_addr;
|
|
|
|
const u64 new_offset = start - buffer_addr;
|
|
|
@ -1331,7 +1331,7 @@ void BufferCache<P>::DownloadBufferMemory(Buffer& buffer, VAddr cpu_addr, u64 si
|
|
|
|
boost::container::small_vector<BufferCopy, 1> copies;
|
|
|
|
boost::container::small_vector<BufferCopy, 1> copies;
|
|
|
|
u64 total_size_bytes = 0;
|
|
|
|
u64 total_size_bytes = 0;
|
|
|
|
u64 largest_copy = 0;
|
|
|
|
u64 largest_copy = 0;
|
|
|
|
buffer.ForEachDownloadRange(cpu_addr, size, true, [&](u64 range_offset, u64 range_size) {
|
|
|
|
buffer.ForEachDownloadRangeAndClear(cpu_addr, size, [&](u64 range_offset, u64 range_size) {
|
|
|
|
const VAddr buffer_addr = buffer.CpuAddr();
|
|
|
|
const VAddr buffer_addr = buffer.CpuAddr();
|
|
|
|
const auto add_download = [&](VAddr start, VAddr end) {
|
|
|
|
const auto add_download = [&](VAddr start, VAddr end) {
|
|
|
|
const u64 new_offset = start - buffer_addr;
|
|
|
|
const u64 new_offset = start - buffer_addr;
|
|
|
|