eden/src/video_core
lizzie 83a28dc251
[common, core] remove uneeded memory indirection overhead at startup (#3306)
for core stuff:
just remove unique ptrs that dont need any pointer stability at all (afterall its an allocation within an allocation so yeah)

for fibers:
Main reasoning behind this is because virtualBuffer<> is stupidly fucking expensive and it also clutters my fstat view
ALSO mmap is a syscall, syscalls are bad for performance or whatever
ALSO std::vector<> is better suited for handling this kind of "fixed size thing where its like big but not THAT big" (512 KiB isn't going to kill your memory usage for each fiber...)

for core.cpp stuff
- inlines stuff into std::optional<> as opposed to std::unique_ptr<> (because yknow, we are making the Impl from an unique_ptr, allocating within an allocation is unnecessary)
- reorganizes the structures a bit so padding doesnt screw us up (it's not perfect but eh saves a measly 44 bytes)
- removes unused/dead code
- uses std::vector<> instead of std::deque<>

no perf impact expected, maybe some initialisation boost but very minimal impact nonethless
lto gets rid of most calls anyways - the heavy issue is with shared_ptr and the cache coherency from the atomics... but i clumped them together because well, they kinda do not suffer from cache coherency - hopefully not a mistake

this balloons the size of Impl to about 1.67 MB - which is fine because we throw it in the stack anyways

REST OF INTERFACES: most of them ballooned in size as well, but overhead is ok since its an allocation within an alloc, no stack is used (when it comes to storing these i mean)

Signed-off-by: lizzie lizzie@eden-emu.dev
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3306
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
Reviewed-by: MaranBr <maranbr@eden-emu.dev>
Co-authored-by: lizzie <lizzie@eden-emu.dev>
Co-committed-by: lizzie <lizzie@eden-emu.dev>
2026-01-16 23:39:16 +01:00
..
buffer_cache [vk, qcom] Memory, Samplers, BindingBuffers and UniformBufferAlignment set by hardware capabilities for QCOM. (#3280) 2026-01-11 05:31:23 +01:00
control [chore] Fixed a couple memory leaks using up ~15 MB each iteration (#398) 2025-12-26 02:55:52 +01:00
engines [common, core] remove uneeded memory indirection overhead at startup (#3306) 2026-01-16 23:39:16 +01:00
host1x [host1x/vic] fix bad vectorization codegen in (windows) (#3285) 2026-01-10 09:58:28 +01:00
host_shaders [cmake, tools] update CPMUtil and add support for CPMUtil bundled Qt, module updates, cleanups (#3289) 2026-01-14 19:29:13 +01:00
query_cache [vk] Fix query cache leak on missed sync (#131) 2025-07-26 18:12:54 +02:00
renderer_null nvnflinger/gpu: implement applet capture 2024-02-09 09:20:53 -05:00
renderer_opengl [common, core] remove uneeded memory indirection overhead at startup (#3306) 2026-01-16 23:39:16 +01:00
renderer_vulkan [common, core] remove uneeded memory indirection overhead at startup (#3306) 2026-01-16 23:39:16 +01:00
texture_cache [common, core] remove uneeded memory indirection overhead at startup (#3306) 2026-01-16 23:39:16 +01:00
textures [video_core] remove decoders.cpp template<A,B> spam (16 copies of the same function) (#3263) 2026-01-10 12:27:57 +01:00
vulkan_common [vk, qcom] Memory, Samplers, BindingBuffers and UniformBufferAlignment set by hardware capabilities for QCOM. (#3280) 2026-01-11 05:31:23 +01:00
cache_types.h RasterizerMemory: Add filtering for flushing/invalidation operations. 2023-01-01 16:43:58 -05:00
capture.h nvnflinger/gpu: implement applet capture 2024-02-09 09:20:53 -05:00
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 Port changes from Early Access 2025-04-04 03:40:46 +02:00
CMakeLists.txt [common, core] remove uneeded memory indirection overhead at startup (#3306) 2026-01-16 23:39:16 +01:00
compatible_formats.cpp renderer_vulkan: Fix some missing view formats 2023-07-01 16:03:35 +03:00
compatible_formats.h general: Convert source file copyright comments over to SPDX 2022-04-23 05:55:32 -04:00
delayed_destruction_ring.h [VK] Rework SPIRV Shader Optimization (#238) 2025-07-03 01:13:33 +00:00
dirty_flags.cpp Fix stencil func registers, make clip control equivalent to how it was before, but surely wrong. 2022-10-10 20:59:57 +01:00
dirty_flags.h general: Convert source file copyright comments over to SPDX 2022-04-23 05:55:32 -04:00
dma_pusher.cpp [common, core] remove uneeded memory indirection overhead at startup (#3306) 2026-01-16 23:39:16 +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 video_core: simplify accelerated surface fetch and crop handling between APIs 2024-01-31 11:27:20 -05:00
framebuffer_config.h nvnflinger/gpu: implement blending 2024-02-09 09:20:53 -05:00
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 [settings, frontend] Reorganize graphics/CPU settings, saner defaults (#3233) 2025-12-30 18:03:09 +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 nvnflinger/gpu: implement layer stack composition 2024-01-31 11:27:21 -05:00
guest_memory.h Core: Clang format and other small issues. 2024-01-18 21:12:30 -05:00
invalidation_accumulator.h BufferBase: Don't ignore GPU pages. 2023-01-05 14:00:10 -05:00
macro.cpp [common, core] remove uneeded memory indirection overhead at startup (#3306) 2026-01-16 23:39:16 +01:00
macro.h [common, core] remove uneeded memory indirection overhead at startup (#3306) 2026-01-16 23:39:16 +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 gpu: dependency-inject scaling/antialiasing filter state for capture layers 2024-02-09 09:20:53 -05:00
pte_kind.h video_core: Implement memory manager page kind 2022-10-17 15:33:29 +08:00
query_cache.h VideoCore: Move Slot Vector to Common 2024-02-04 20:01:47 +01:00
rasterizer_download_area.h Rework time service to fix time passing offline. 2024-01-24 04:26:55 +00:00
rasterizer_interface.h [Rasterizer]: Implement "Skip CPU Inner Invalidation" hack 2025-07-09 04:23:22 +02:00
renderer_base.cpp general: Silence -Wshadow{,-uncaptured-local} warnings 2023-07-18 19:31:35 -04:00
renderer_base.h nvnflinger/gpu: implement applet capture 2024-02-09 09:20:53 -05:00
shader_cache.cpp [compat] Debian stable gcc12/clang14 compilation fixes (#2763) 2025-10-18 01:54:43 +02:00
shader_cache.h [compat] Debian stable gcc12/clang14 compilation fixes (#2763) 2025-10-18 01:54:43 +02:00
shader_environment.cpp [am] Improve some error messages (#2996) 2025-11-10 23:32:50 +01:00
shader_environment.h [meta] fix license headers (#2547) 2025-09-21 21:58:59 +02:00
shader_notify.cpp general: Convert source file copyright comments over to SPDX 2022-04-23 05:55:32 -04:00
shader_notify.h general: Convert source file copyright comments over to SPDX 2022-04-23 05:55:32 -04:00
smaa_area_tex.h video_core: Integrate SMAA 2022-12-08 17:17:45 -05:00
smaa_search_tex.h video_core: Integrate SMAA 2022-12-08 17:17:45 -05:00
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 Remove memory allocations in some hot paths 2023-06-22 08:05:10 +01:00
video_core.cpp Removed telemetry and anonymized SCM (git) strings 2025-04-04 03:40:47 +02:00
video_core.h chore: make yuzu REUSE compliant 2022-07-27 12:53:49 +02:00