shadPS4/src/video_core/renderer_vulkan
TheTurtle 2d1a2982df
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
..
host_passes pp_pass: Use correct surface format. (#2860) 2025-04-27 20:56:17 -07:00
liverpool_to_vk.cpp shader_recompiler: Implement dual source blending (#3054) 2025-06-08 21:38:58 +03:00
liverpool_to_vk.h shader_recompiler: Implement dual source blending (#3054) 2025-06-08 21:38:58 +03:00
vk_common.cpp use ComPtr in gui_context_menus.h (#719) 2024-09-25 18:39:04 +03:00
vk_common.h mac: Choose whether system Vulkan is needed at runtime. (#1780) 2024-12-17 15:04:19 +02:00
vk_compute_pipeline.cpp shader_recompiler: Remove special case buffers and add support for aliasing (#2428) 2025-02-15 14:06:56 +02:00
vk_compute_pipeline.h fix: lower UBO max size to account buffer cache offset (#2388) 2025-02-09 22:03:20 +01:00
vk_graphics_pipeline.cpp renderer_vulkan: Restore Vulkan version to 1.3 (#2827) 2025-04-23 13:28:31 +03:00
vk_graphics_pipeline.h renderer_vulkan: Make some primitive state dynamic. (#2764) 2025-04-10 16:20:01 -07:00
vk_instance.cpp buffer_atomic_imax_x2 (#3130) 2025-06-29 16:16:47 -07:00
vk_instance.h buffer_atomic_imax_x2 (#3130) 2025-06-29 16:16:47 -07:00
vk_master_semaphore.cpp vulkan: Enable VULKAN_HPP_NO_EXCEPTIONS broadly. (#995) 2024-09-25 12:19:38 +03:00
vk_master_semaphore.h Move presentation to separate thread/improve sync (#303) 2024-07-28 15:54:09 +02:00
vk_pipeline_cache.cpp buffer_atomic_imax_x2 (#3130) 2025-06-29 16:16:47 -07:00
vk_pipeline_cache.h fix: lower UBO max size to account buffer cache offset (#2388) 2025-02-09 22:03:20 +01:00
vk_pipeline_common.cpp renderer_vulkan: Bind descriptors to specific stages in layout. (#2458) 2025-02-16 15:08:16 +02:00
vk_pipeline_common.h renderer_vulkan: Bind descriptors to specific stages in layout. (#2458) 2025-02-16 15:08:16 +02:00
vk_platform.cpp renderer_vulkan: Support loading Vulkan layers on macOS SDL build. (#2832) 2025-04-23 01:10:03 -07:00
vk_platform.h renderer_vulkan: Restore Vulkan version to 1.3 (#2827) 2025-04-23 13:28:31 +03:00
vk_presenter.cpp vk_presenter: Use correct format for output frame image and view. (#2871) 2025-05-01 20:10:42 -07:00
vk_presenter.h vk_presenter: Use correct format for output frame image and view. (#2871) 2025-05-01 20:10:42 -07:00
vk_rasterizer.cpp texture_cache: Async download of GPU modified linear images (#3204) 2025-07-07 16:23:20 +03:00
vk_rasterizer.h texture_cache: Async download of GPU modified linear images (#3204) 2025-07-07 16:23:20 +03:00
vk_resource_pool.cpp renderer_vulkan: Simplify debug marker settings. (#2159) 2025-01-16 12:14:34 +02:00
vk_resource_pool.h video_core: Add fallback path for pipelines with more than 32 bindings (#837) 2024-09-10 20:54:39 +03:00
vk_scheduler.cpp texture_cache: Async download of GPU modified linear images (#3204) 2025-07-07 16:23:20 +03:00
vk_scheduler.h buffer_cache: Bring back upload batching and temporary buffer (#3211) 2025-07-08 10:32:39 +03:00
vk_shader_hle.cpp shader_recompiler: Replace texel buffers with in-shader buffer format interpretation (#2363) 2025-02-06 20:40:49 -08:00
vk_shader_hle.h GPU processor refactoring (#1787) 2024-12-15 00:54:46 +02:00
vk_shader_util.cpp FidelityFX FSR implementation (#2624) 2025-03-12 20:33:30 +02:00
vk_shader_util.h FidelityFX FSR implementation (#2624) 2025-03-12 20:33:30 +02:00
vk_swapchain.cpp video_out: HDR support (#2381) 2025-02-09 15:54:54 +01:00
vk_swapchain.h video_out: HDR support (#2381) 2025-02-09 15:54:54 +01:00