eden-miror/src/video_core/renderer_opengl
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
..
present [opengl] remove leftover invalid uniform 2ui being sent every frame x every fb (doesnt exist on opengl_present.frag) (#3358) 2026-01-21 00:12:18 +01:00
blit_image.cpp [meta] fix license headers (#2547) 2025-09-21 21:58:59 +02:00
blit_image.h video_core: Implement maxwell3d draw texture method 2023-01-05 12:41:28 +08:00
gl_blit_screen.cpp [vk, ogl] Add VK_QCOM ZTC, Bspline, Mitchell filter weights, add MMPX filter (#2577) 2025-10-07 06:35:57 +02:00
gl_blit_screen.h gpu: dependency-inject scaling/antialiasing filter state for capture layers 2024-02-09 09:20:53 -05:00
gl_buffer_cache.cpp [meta] fix license headers (#2547) 2025-09-21 21:58:59 +02:00
gl_buffer_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
gl_buffer_cache_base.cpp Buffer Cache: Fully rework the buffer cache. 2023-04-29 00:46:31 +02:00
gl_compute_pipeline.cpp [texture_cache, buffer_cache] Added TLS handling + changed command queue for GPU threading. (#3579) 2026-02-20 00:52:07 +01:00
gl_compute_pipeline.h shaders: Track local memory usage 2023-06-25 18:59:33 -04:00
gl_device.cpp [common] merge RenderBackend and ShaderBackend options (#3313) 2026-01-18 12:33:00 +01:00
gl_device.h [common] merge RenderBackend and ShaderBackend options (#3313) 2026-01-18 12:33:00 +01:00
gl_fence_manager.cpp OpenGL: Prefer glClientWaitSync for OGLSync objects 2023-03-08 20:29:25 -05:00
gl_fence_manager.h Fence Manager: implement async fence management in a sepparate thread. 2023-04-23 04:48:50 +02:00
gl_graphics_pipeline.cpp [texture_cache, buffer_cache] Added TLS handling + changed command queue for GPU threading. (#3579) 2026-02-20 00:52:07 +01:00
gl_graphics_pipeline.h [vk, opengl] Prevent GPU draw call if CBUF binding fails (cbuf0 error handling) (#2) 2025-07-13 19:27:39 +02:00
gl_query_cache.cpp Core: Clang format and other small issues. 2024-01-18 21:12:30 -05:00
gl_query_cache.h Core: Clang format and other small issues. 2024-01-18 21:12:30 -05:00
gl_rasterizer.cpp [video_core] Rework GPU Accuracy levels and remove Early Release Fences toggle (#3129) 2025-12-09 18:11:05 +01:00
gl_rasterizer.h renderer_opengl: isolate core presentation code 2024-01-31 11:27:20 -05:00
gl_resource_manager.cpp [meta] remove MicroProfile (#185) 2025-08-06 07:48:11 +02:00
gl_resource_manager.h gl_rasterizer: Implement DrawTransformFeedback macro 2023-12-19 19:54:57 -05:00
gl_shader_cache.cpp [ogl, vk] shader invalidation -> 13,16 (#3397) 2026-01-27 21:38:53 +01:00
gl_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
gl_shader_context.h video_core: preallocate fewer IR blocks 2023-06-14 21:37:57 -04:00
gl_shader_manager.cpp OpenGL: Limit lmem warmup to NVIDIA 2023-06-25 19:06:51 -04:00
gl_shader_manager.h OpenGL: Add Local Memory warmup shader 2023-06-25 18:43:23 -04:00
gl_shader_util.cpp renderer_opengl: delete shader source after linking 2022-07-30 13:21:26 -04:00
gl_shader_util.h chore: make yuzu REUSE compliant 2022-07-27 12:53:49 +02:00
gl_staging_buffer_pool.cpp [cmake] enable clang-cl and WoA builds (#348) 2025-09-09 20:47:49 +02:00
gl_staging_buffer_pool.h gl_texture_cache: Enable async downloads 2023-08-13 23:17:59 -05:00
gl_state_tracker.cpp ir/texture_pass: Use host_info instead of querying Settings::values (#9176) 2022-11-11 03:32:53 +01:00
gl_state_tracker.h [meta] fix license headers (#2547) 2025-09-21 21:58:59 +02:00
gl_texture_cache.cpp [clang, opengl] fix opengl build on PGO build and clang-cl on windows (#3332) 2026-01-18 02:35:57 +01:00
gl_texture_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
gl_texture_cache_base.cpp general: Convert source file copyright comments over to SPDX 2022-04-23 05:55:32 -04:00
maxwell_to_gl.h [vk, opengl] macro-ify PixelSurface and SurfaceFormat lists (#3060) 2025-12-30 21:30:34 +01:00
renderer_opengl.cpp [meta] remove MicroProfile (#185) 2025-08-06 07:48:11 +02:00
renderer_opengl.h [common] replace Common::BitCast with libc++ provided one (#2774) 2025-10-22 02:56:28 +02:00
util_shaders.cpp gl 2023-08-06 14:54:57 -04:00
util_shaders.h OpenGL: Make use of persistent buffer maps in buffer cache downloads 2023-05-28 00:38:46 -04:00