eden/src/video_core/renderer_vulkan
Zephyron 0c5659a198 video_core: Enhance Vulkan shader compilation with async threading system
Implement a robust asynchronous shader compilation system inspired by commit
1fd5fefcb17fe7fe65faed1c991fb41db782ab0f. This enhancement provides:

- True multi-threaded shader compilation with atomic status tracking
- Persistent disk caching for faster shader loading
- Command queue system for background processing
- Integration with Citron's scheduler for better resource management
- Parallel shader loading to reduce startup times
- Improved error handling and recovery mechanisms

These changes significantly reduce shader compilation stuttering and improve
overall performance when using asynchronous shaders. The implementation
maintains compatibility with Citron's existing architecture while adding
more robust threading capabilities.

Co-authored-by: boss.sfc <boss.sfc@citron-emu.org>
Co-committed-by: boss.sfc <boss.sfc@citron-emu.org>
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-04-12 23:39:24 -03:00
..
present scope_exit: Make constexpr 2024-02-19 16:00:46 +01:00
blit_image.cpp video_core: Add new shader format conversion pipelines 2025-04-11 17:05:30 -03:00
blit_image.h video_core: Add new shader format conversion pipelines 2025-04-11 17:05:30 -03:00
fixed_pipeline_state.cpp Fix typos in video_core 2024-01-07 22:44:55 +00:00
fixed_pipeline_state.h Fix typos in video_core 2024-01-07 22:44:55 +00:00
maxwell_to_vk.cpp Implement X8_D24 format 2023-10-06 00:58:30 +01:00
maxwell_to_vk.h Update 3D regs 2022-10-07 14:13:45 +01:00
pipeline_helper.h Core: Eliminate core/memory dependancies. 2024-01-18 21:12:30 -05:00
pipeline_statistics.cpp Update fmt to allow for v11 2025-04-10 01:11:22 +02:00
pipeline_statistics.h general: Convert source file copyright comments over to SPDX 2022-04-23 05:55:32 -04:00
renderer_vulkan.cpp video_core: Enhance Vulkan shader compilation with async threading system 2025-04-12 23:39:24 -03:00
renderer_vulkan.h feat(vulkan): implement enhanced texture and shader management 2025-04-12 23:39:19 -03:00
vk_blit_screen.cpp gpu: dependency-inject scaling/antialiasing filter state for capture layers 2024-02-09 09:20:53 -05:00
vk_blit_screen.h gpu: dependency-inject scaling/antialiasing filter state for capture layers 2024-02-09 09:20:53 -05:00
vk_buffer_cache.cpp VideoCore: Move Slot Vector to Common 2024-02-04 20:01:47 +01:00
vk_buffer_cache.h Buffer Cache: Refactor to use Range sets instead 2024-02-05 11:06:52 +01:00
vk_buffer_cache_base.cpp Buffer Cache: Fully rework the buffer cache. 2023-04-29 00:46:31 +02:00
vk_command_pool.cpp general: fix spelling mistakes 2023-03-12 11:33:01 -04:00
vk_command_pool.h general: Convert source file copyright comments over to SPDX 2022-04-23 05:55:32 -04:00
vk_compute_pass.cpp renderer_vulkan: Implement MSAA copies 2023-09-25 09:20:32 -04:00
vk_compute_pass.h renderer_vulkan: Implement MSAA copies 2023-09-25 09:20:32 -04:00
vk_compute_pipeline.cpp WIP: Enhance shader compilation performance and control 2025-04-12 23:37:11 -03:00
vk_compute_pipeline.h renderer_vulkan: separate guest and host compute descriptor queues 2023-05-10 13:46:48 -04:00
vk_descriptor_pool.cpp vk_descriptor_pool: Disallow descriptor set free 2023-07-27 18:08:56 +03:00
vk_descriptor_pool.h Rework time service to fix time passing offline. 2024-01-24 04:26:55 +00:00
vk_fence_manager.cpp Clang format and ddress feedback 2023-04-24 12:38:47 +02:00
vk_fence_manager.h Query Cache: address issues 2023-09-23 23:05:30 +02:00
vk_graphics_pipeline.cpp WIP: Enhance shader compilation performance and control 2025-04-12 23:37:11 -03:00
vk_graphics_pipeline.h renderer_vulkan: separate guest and host compute descriptor queues 2023-05-10 13:46:48 -04:00
vk_master_semaphore.cpp renderer_vulkan: Introduce separate cmd buffer for uploads 2023-11-12 20:27:39 +01:00
vk_master_semaphore.h renderer_vulkan: Introduce separate cmd buffer for uploads 2023-11-12 20:27:39 +01:00
vk_pipeline_cache.cpp WIP: Enhance shader compilation performance and control 2025-04-12 23:37:11 -03:00
vk_pipeline_cache.h Optimize SpiriV output 2025-04-12 22:54:32 -03:00
vk_present_manager.cpp renderer_vulkan: recreate swapchain when frame size changes 2024-01-16 16:09:39 -05:00
vk_present_manager.h renderer_vulkan: bound async presentation queue growth 2023-12-14 15:54:56 -05:00
vk_query_cache.cpp general: workarounds for SMMU syncing issues (#12749) 2024-02-27 15:42:15 +01:00
vk_query_cache.h SMMU: Initial adaptation to video_core. 2024-01-18 21:12:30 -05:00
vk_rasterizer.cpp Implement LogicOP Workaround for Vulkan on AMD GPUs 2025-04-08 19:17:28 +02:00
vk_rasterizer.h video_core: simplify accelerated surface fetch and crop handling between APIs 2024-01-31 11:27:20 -05:00
vk_render_pass_cache.cpp Get out of render pass before query barriers, fix image names with samples > 1, remove image alias bit 2023-10-11 17:15:35 +01:00
vk_render_pass_cache.h general: fix compile for Apple Clang 2022-11-22 22:22:28 -05:00
vk_resource_pool.cpp general: fix spelling mistakes 2023-03-12 11:33:01 -04:00
vk_resource_pool.h general: Convert source file copyright comments over to SPDX 2022-04-23 05:55:32 -04:00
vk_scheduler.cpp Vulkan: Add a final barrier to the upload command buffer 2023-11-12 20:58:30 +01:00
vk_scheduler.h Fix one more typo 2024-01-15 23:34:11 +00:00
vk_shader_util.cpp video_core: Enhance Vulkan shader compilation with async threading system 2025-04-12 23:39:24 -03:00
vk_shader_util.h video_core: Enhance Vulkan shader compilation with async threading system 2025-04-12 23:39:24 -03:00
vk_staging_buffer_pool.cpp Update fmt to allow for v11 2025-04-10 01:11:22 +02:00
vk_staging_buffer_pool.h renderer_vulkan: Introduce separate cmd buffer for uploads 2023-11-12 20:27:39 +01:00
vk_state_tracker.cpp renderer_vulkan: fix viewport swizzle dirty state tracking 2023-10-27 14:23:47 -04:00
vk_state_tracker.h Vulkan: rework stencil tracking. 2023-01-03 16:29:16 -05:00
vk_swapchain.cpp Simplify VkResult lookup 2024-01-22 03:10:43 +00:00
vk_swapchain.h renderer_vulkan: do not recreate swapchain for srgb 2023-12-03 16:43:54 -05:00
vk_texture_cache.cpp feat(vulkan): implement enhanced texture and shader management 2025-04-12 23:39:19 -03:00
vk_texture_cache.h feat(vulkan): implement enhanced texture and shader management 2025-04-12 23:39:19 -03:00
vk_texture_cache_base.cpp general: Convert source file copyright comments over to SPDX 2022-04-23 05:55:32 -04:00
vk_texture_manager.cpp feat(vulkan): implement enhanced texture and shader management 2025-04-12 23:39:19 -03:00
vk_texture_manager.h feat(vulkan): implement enhanced texture and shader management 2025-04-12 23:39:19 -03:00
vk_turbo_mode.cpp vk_descriptor_pool: Disallow descriptor set free 2023-07-27 18:08:56 +03:00
vk_turbo_mode.h android: vk_turbo_mode: Remove unnecessary device recreation. 2023-06-03 00:06:08 -07:00
vk_update_descriptor.cpp renderer_vulkan: Fix crashing when updating descriptors 2023-05-01 23:13:24 +03:00
vk_update_descriptor.h renderer_vulkan: allow up to 7 swapchain images 2023-12-16 18:59:44 -05:00