From b4b41ee62c0f18c929b7b9926e5f0597c2c45783 Mon Sep 17 00:00:00 2001 From: MaranBr Date: Sat, 27 Jun 2026 08:38:04 +0200 Subject: [buffer_cache] Add option to control GPU buffer readback (#4126) Added an option to control the GPU buffer readback, as it causes issues if the hardware cannot keep up with the additional workload. Some games require this to render certain effects properly. Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4126 --- src/video_core/buffer_cache/buffer_cache.h | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'src/video_core/buffer_cache/buffer_cache.h') 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

::SynchronizeBuffer(Buffer& buffer, DAddr device_addr, u32 si if (total_size_bytes == 0) { return true; } - u64 min_offset = (std::numeric_limits::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::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 copies_span(upload_copies.data(), upload_copies.size()); UploadMemory(buffer, total_size_bytes, largest_copy, copies_span); any_buffer_uploaded = true; -- cgit v1.2.3