aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/buffer_cache/buffer_cache.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/video_core/buffer_cache/buffer_cache.h')
-rw-r--r--src/video_core/buffer_cache/buffer_cache.h20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/video_core/buffer_cache/buffer_cache.h b/src/video_core/buffer_cache/buffer_cache.h
index 3494895f66..740d99558e 100644
--- a/src/video_core/buffer_cache/buffer_cache.h
+++ b/src/video_core/buffer_cache/buffer_cache.h
@@ -1634,15 +1634,17 @@ bool BufferCache<P>::SynchronizeBuffer(Buffer& buffer, DAddr device_addr, u32 si
if (total_size_bytes == 0) {
return true;
}
- u64 min_offset = (std::numeric_limits<u64>::max)();
- u64 max_offset = 0;
- for (const auto& copy : upload_copies) {
- min_offset = (std::min)(min_offset, copy.dst_offset);
- max_offset = (std::max)(max_offset, copy.dst_offset + copy.size);
- }
- const DAddr sync_addr = buffer.CpuAddr() + min_offset;
- const u64 sync_size = max_offset - min_offset;
- DownloadBufferMemory(buffer, sync_addr, sync_size);
+ if (Settings::values.enable_gpu_buffer_readback.GetValue()) {
+ u64 min_offset = (std::numeric_limits<u64>::max)();
+ u64 max_offset = 0;
+ for (const auto& copy : upload_copies) {
+ min_offset = (std::min)(min_offset, copy.dst_offset);
+ max_offset = (std::max)(max_offset, copy.dst_offset + copy.size);
+ }
+ const DAddr sync_addr = buffer.CpuAddr() + min_offset;
+ const u64 sync_size = max_offset - min_offset;
+ DownloadBufferMemory(buffer, sync_addr, sync_size);
+ }
const std::span<BufferCopy> copies_span(upload_copies.data(), upload_copies.size());
UploadMemory(buffer, total_size_bytes, largest_copy, copies_span);
any_buffer_uploaded = true;