shadPS4/src/video_core
TheTurtle 2d1a2982df
Some checks are pending
Build and Release / reuse (push) Waiting to run
Build and Release / clang-format (push) Waiting to run
Build and Release / get-info (push) Waiting to run
Build and Release / windows-sdl (push) Blocked by required conditions
Build and Release / windows-qt (push) Blocked by required conditions
Build and Release / macos-sdl (push) Blocked by required conditions
Build and Release / macos-qt (push) Blocked by required conditions
Build and Release / linux-sdl (push) Blocked by required conditions
Build and Release / linux-qt (push) Blocked by required conditions
Build and Release / linux-sdl-gcc (push) Blocked by required conditions
Build and Release / linux-qt-gcc (push) Blocked by required conditions
Build and Release / pre-release (push) Blocked by required conditions
buffer_cache: Bring back upload batching and temporary buffer (#3211)
* buffer_cache: Bring back upload batching and temporary buffer

Because that PR fused the write and read protections under a single function call, it was a requirement to move the actual memory copy part inside the lambda to perform it before the read protection kicks in. However on certain large data transfers it had potential for data corruption. If, for example, an upload had two copies, a 400MB and a 300MB one, the first one would fit in the staging buffer, very likely with an induced stall. However the second one wouldn't have space to fit alongside the other data, but it's also small enough for the buffer to fit it, so the staging buffer would cause a flush and wait to copy it, overwriting the previous transfer.

To address this the upload function has been reworked to allow for batching like previously but with the new locking behavior. Also the condition to use temporary buffers has been expanded to also include cases when staging buffer will stall, which should increase performance a little in some cases.

* buffer_cache: Move buffer barriers and copy outside of lock range
2025-07-08 10:32:39 +03:00
..
amdgpu texture_cache: Async download of GPU modified linear images (#3204) 2025-07-07 16:23:20 +03:00
buffer_cache buffer_cache: Bring back upload batching and temporary buffer (#3211) 2025-07-08 10:32:39 +03:00
host_shaders texture_cache: Implement color to multisampled depth blit pass (#3103) 2025-06-16 14:39:46 +03:00
renderer_vulkan buffer_cache: Bring back upload batching and temporary buffer (#3211) 2025-07-08 10:32:39 +03:00
texture_cache texture_cache: Async download of GPU modified linear images (#3204) 2025-07-07 16:23:20 +03:00
multi_level_page_table.h buffer_cache: Improve buffer cache locking contention (#1973) 2025-01-02 15:39:02 +02:00
page_manager.cpp buffer_cache: Fix various thread races on data upload and invalidation (#3186) 2025-07-03 22:36:01 +02:00
page_manager.h Readbacks proof of concept rebased (#3178) 2025-07-01 23:41:00 +03:00
renderdoc.cpp video_core: Implement DMA. (#2819) 2025-05-22 21:00:15 +03:00
renderdoc.h Use fs::path::native whenever possible, avoid unnecessary fs->string conversions in GUI code (#1064) 2024-09-26 11:41:59 +03:00