eden/src/video_core
lizzie c9c136bea7
[texture_cache, buffer_cache] Added TLS handling + changed command queue for GPU threading. (#3579)
(Merge of #3495 + #3108)

This PR works around to simplify math operations on hot pointers inside the access and requests to the cache of buffers and texture cache, removing previous logic of indirection and replaced by a PoD approach.

This will ensure less CPU times spended on the same request and flow directly into another chain of the render, in the same way, command queue currently uses an internal mutex that constraints the flow of data within the GPU threads, we're moving over a single command, I verified to keep using mutexes instead of internal mutex + mutex per operation, which are resolved by themselves.

In simplier words, this aims to improve performance on those games and devices where the waits for next orders on GPU commands were heavier than a single verification.

Co-Authored-by: @CamilleLaVey
Co-Authored-by: @Lizzie
Co-authored-by: CamilleLaVey <camillelavey99@gmail.com>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3579
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
Co-authored-by: lizzie <lizzie@eden-emu.dev>
Co-committed-by: lizzie <lizzie@eden-emu.dev>
2026-02-20 00:52:07 +01:00
..
buffer_cache [texture_cache, buffer_cache] Added TLS handling + changed command queue for GPU threading. (#3579) 2026-02-20 00:52:07 +01:00
control [*] change all std::unordered_map and std::unordered_set into ankerl::unordered_dense::map/set variants (#3442) 2026-02-10 03:34:07 +01:00
engines [*] change all std::unordered_map and std::unordered_set into ankerl::unordered_dense::map/set variants (#3442) 2026-02-10 03:34:07 +01:00
gpu_logging [*] change all std::unordered_map and std::unordered_set into ankerl::unordered_dense::map/set variants (#3442) 2026-02-10 03:34:07 +01:00
host1x [*] change all std::unordered_map and std::unordered_set into ankerl::unordered_dense::map/set variants (#3442) 2026-02-10 03:34:07 +01:00
host_shaders [host_shaders] Store the value of results instead of discarding it (#3464) 2026-02-07 22:44:32 +01:00
query_cache [*] change all std::unordered_map and std::unordered_set into ankerl::unordered_dense::map/set variants (#3442) 2026-02-10 03:34:07 +01:00
renderer_null
renderer_opengl [texture_cache, buffer_cache] Added TLS handling + changed command queue for GPU threading. (#3579) 2026-02-20 00:52:07 +01:00
renderer_vulkan [texture_cache, buffer_cache] Added TLS handling + changed command queue for GPU threading. (#3579) 2026-02-20 00:52:07 +01:00
texture_cache [texture_cache, buffer_cache] Added TLS handling + changed command queue for GPU threading. (#3579) 2026-02-20 00:52:07 +01:00
textures [fixup] Revert "[video_core] remove decoders.cpp template<A,B> spam (16 copies of the same function) (#3263)" (#3333) 2026-01-18 05:42:05 +01:00
vulkan_common [vk] load VK_KHR_GET_SURFACE_CAPABILITIES_2 on drivers (not a hard requirement) for maintainance 1 (#3514) 2026-02-11 18:54:24 +01:00
cache_types.h
capture.h
cdma_pusher.cpp [common] use libc++ provided jthread instead of in-house one (which deadlocks on FBSD 14) (#351) 2025-10-01 06:59:35 +02:00
cdma_pusher.h
CMakeLists.txt [cmake] Move back to individual handling of Vulkan deps (#3450) 2026-02-02 06:54:58 +01:00
compatible_formats.cpp
compatible_formats.h
delayed_destruction_ring.h [VK] Rework SPIRV Shader Optimization (#238) 2025-07-03 01:13:33 +00:00
dirty_flags.cpp
dirty_flags.h [scheduler, dma, maxwell] Reduce CPU stalls in the GPU command processing pipeline through multiple targeted optimizations (#3296) 2026-01-18 03:45:18 +01:00
dma_pusher.cpp [scheduler, dma, maxwell] Reduce CPU stalls in the GPU command processing pipeline through multiple targeted optimizations (#3296) 2026-01-18 03:45:18 +01:00
dma_pusher.h [video_core] Improve DMA logic and add an option to sync memory operations (#276) 2025-08-20 00:21:25 +02:00
fence_manager.h [video_core] Fix SignalFence and restore OpenGL rendering (#3224) 2025-12-31 01:17:24 +01:00
framebuffer_config.cpp
framebuffer_config.h
fsr.cpp [common] replace Common::BitCast with libc++ provided one (#2774) 2025-10-22 02:56:28 +02:00
fsr.h [common] replace Common::BitCast with libc++ provided one (#2774) 2025-10-22 02:56:28 +02:00
gpu.cpp [*] change all std::unordered_map and std::unordered_set into ankerl::unordered_dense::map/set variants (#3442) 2026-02-10 03:34:07 +01:00
gpu.h [vk, opengl] defer checks to topmost call (avoid unnecessary call) (#40) 2025-07-13 03:40:48 +02:00
gpu_thread.cpp [video_core] Rework GPU Accuracy levels and remove Early Release Fences toggle (#3129) 2025-12-09 18:11:05 +01:00
gpu_thread.h [texture_cache, buffer_cache] Added TLS handling + changed command queue for GPU threading. (#3579) 2026-02-20 00:52:07 +01:00
guest_memory.h
invalidation_accumulator.h
macro.cpp [common, core] remove uneeded memory indirection overhead at startup (#3306) 2026-01-16 23:39:16 +01:00
macro.h [*] change all std::unordered_map and std::unordered_set into ankerl::unordered_dense::map/set variants (#3442) 2026-02-10 03:34:07 +01:00
memory_manager.cpp [compat] Debian stable gcc12/clang14 compilation fixes (#2763) 2025-10-18 01:54:43 +02:00
memory_manager.h [meta] fix license headers (#2547) 2025-09-21 21:58:59 +02:00
present.h
pte_kind.h
query_cache.h [*] change all std::unordered_map and std::unordered_set into ankerl::unordered_dense::map/set variants (#3442) 2026-02-10 03:34:07 +01:00
rasterizer_download_area.h
rasterizer_interface.h [Rasterizer]: Implement "Skip CPU Inner Invalidation" hack 2025-07-09 04:23:22 +02:00
renderer_base.cpp
renderer_base.h
shader_cache.cpp [compat] Debian stable gcc12/clang14 compilation fixes (#2763) 2025-10-18 01:54:43 +02:00
shader_cache.h [*] change all std::unordered_map and std::unordered_set into ankerl::unordered_dense::map/set variants (#3442) 2026-02-10 03:34:07 +01:00
shader_environment.cpp [android, feat] add "Fix Bloom Effects" toggle (#3359) 2026-01-26 06:59:59 +01:00
shader_environment.h [*] change all std::unordered_map and std::unordered_set into ankerl::unordered_dense::map/set variants (#3442) 2026-02-10 03:34:07 +01:00
shader_notify.cpp
shader_notify.h
smaa_area_tex.h
smaa_search_tex.h
surface.cpp [vk] Exclude size equal alpha different copies from incompatible copy (#138) 2025-07-27 19:56:22 +02:00
surface.h [vk, opengl] macro-ify PixelSurface and SurfaceFormat lists (#3060) 2025-12-30 21:30:34 +01:00
transform_feedback.cpp [common] remove ranges polyfill (#2546) 2025-09-24 19:29:48 +02:00
transform_feedback.h
video_core.cpp [common] merge RenderBackend and ShaderBackend options (#3313) 2026-01-18 12:33:00 +01:00
video_core.h