aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/buffer_cache/buffer_cache.h
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2023-07-10 18:54:19 -0700
committerGitHub <noreply@github.com>2023-07-10 18:54:19 -0700
commitab18aeb500661aa1dbc100469f7e776e86e80454 (patch)
treeea1852111c1b3c3c340608ae518fc8711a4fcfe3 /src/video_core/buffer_cache/buffer_cache.h
parentd2d88891ce6146bd16a4c101b28c72fe18e0d90f (diff)
parentba4569eab72faf4fd145fd13c71ae3de0c14bb03 (diff)
Merge pull request #10996 from Kelebek1/readblock_optimisation
Use spans over guest memory where possible instead of copying data
Diffstat (limited to 'src/video_core/buffer_cache/buffer_cache.h')
-rw-r--r--src/video_core/buffer_cache/buffer_cache.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/video_core/buffer_cache/buffer_cache.h b/src/video_core/buffer_cache/buffer_cache.h
index b5ed3380f6..6ed4b78f2c 100644
--- a/src/video_core/buffer_cache/buffer_cache.h
+++ b/src/video_core/buffer_cache/buffer_cache.h
@@ -234,9 +234,10 @@ bool BufferCache<P>::DMACopy(GPUVAddr src_address, GPUVAddr dest_address, u64 am
if (has_new_downloads) {
memory_tracker.MarkRegionAsGpuModified(*cpu_dest_address, amount);
}
- tmp_buffer.resize_destructive(amount);
- cpu_memory.ReadBlockUnsafe(*cpu_src_address, tmp_buffer.data(), amount);
- cpu_memory.WriteBlockUnsafe(*cpu_dest_address, tmp_buffer.data(), amount);
+
+ Core::Memory::CpuGuestMemoryScoped<u8, Core::Memory::GuestMemoryFlags::UnsafeReadWrite> tmp(
+ cpu_memory, *cpu_src_address, amount, &tmp_buffer);
+ tmp.SetAddressAndSize(*cpu_dest_address, amount);
return true;
}