summaryrefslogtreecommitdiff
path: root/src/video_core/buffer_cache
diff options
context:
space:
mode:
authorGravatar bunnei2023-07-10 18:54:19 -0700
committerGravatar GitHub2023-07-10 18:54:19 -0700
commitce7c418e0cc05d92c18ad69c7cb37fecfa71b037 (patch)
treeea1852111c1b3c3c340608ae518fc8711a4fcfe3 /src/video_core/buffer_cache
parentMerge pull request #11050 from SuperSamus/sdl-button-labels (diff)
parentFix ScratchBuffer moves (diff)
downloadyuzu-ce7c418e0cc05d92c18ad69c7cb37fecfa71b037.tar.gz
yuzu-ce7c418e0cc05d92c18ad69c7cb37fecfa71b037.tar.xz
yuzu-ce7c418e0cc05d92c18ad69c7cb37fecfa71b037.zip
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')
-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 b5ed3380f..6ed4b78f2 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
234 if (has_new_downloads) { 234 if (has_new_downloads) {
235 memory_tracker.MarkRegionAsGpuModified(*cpu_dest_address, amount); 235 memory_tracker.MarkRegionAsGpuModified(*cpu_dest_address, amount);
236 } 236 }
237 tmp_buffer.resize_destructive(amount); 237
238 cpu_memory.ReadBlockUnsafe(*cpu_src_address, tmp_buffer.data(), amount); 238 Core::Memory::CpuGuestMemoryScoped<u8, Core::Memory::GuestMemoryFlags::UnsafeReadWrite> tmp(
239 cpu_memory.WriteBlockUnsafe(*cpu_dest_address, tmp_buffer.data(), amount); 239 cpu_memory, *cpu_src_address, amount, &tmp_buffer);
240 tmp.SetAddressAndSize(*cpu_dest_address, amount);
240 return true; 241 return true;
241} 242}
242 243