eden/src/common
Zephyron 34693001aa Add Windows support to Hybrid Memory Manager
This commit adds Windows-specific implementation of the fault-managed memory
system, providing similar functionality to the existing Linux/Android implementation.

Key changes:
- Added Windows-specific memory management using VirtualAlloc/VirtualFree
- Implemented Windows vectored exception handler for page fault handling
- Added proper memory protection and page fault handling on Windows
- Updated memory snapshot functionality to work on Windows
- Added proper cleanup of Windows-specific resources
- Fixed type conversion issues in memory management code
- Added proper error handling for Windows memory operations
- Fixed VRAM Memory Layout Mode to allow up to 12Gb

The implementation uses Windows-specific APIs:
- VirtualAlloc/VirtualFree for memory management
- AddVectoredExceptionHandler for page fault handling
- VirtualProtect for memory protection management

This change maintains feature parity with the Linux/Android implementation
while using Windows-native APIs for better performance and reliability.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-04-12 23:42:24 -03:00
..
android android: Input mapping 2024-02-17 12:32:33 -05:00
arm64 Rework time service to fix time passing offline. 2024-01-24 04:26:55 +00:00
fs Rename log file to eden_log 2025-04-01 18:36:48 +02:00
linux general: conditionally compile gamemode on linux only 2023-11-29 14:26:11 -05:00
logging Update fmt to allow for v11 2025-04-10 01:11:22 +02:00
windows timer_resolution: Set current process to High QoS 2023-03-05 02:36:31 -05:00
x64 Rework time service to fix time passing offline. 2024-01-24 04:26:55 +00:00
address_space.cpp general: Format licenses as per SPDX guidelines 2022-10-06 21:00:54 +02:00
address_space.h Move to Clang Format 15 2023-01-29 17:49:42 -07:00
address_space.inc Fix address space allocator slow path to avoid OOB 2023-05-07 15:11:16 +01:00
algorithm.h General: Fix compilation for GCC 2022-10-06 21:00:53 +02:00
alignment.h fssystem: rework for yuzu style 2023-08-15 17:47:40 -04:00
announce_multiplayer_room.h general: fix spelling mistakes 2023-03-12 11:33:01 -04:00
assert.cpp assert/logging: Stop the logging thread and flush the backends before crashing 2023-12-26 10:35:14 +01:00
assert.h Enable compiler optimizations and enforce x86-64-v2 on GCC/Clang (#9442) 2022-12-17 17:16:52 -08:00
atomic_helpers.h Move to Clang Format 15 2023-01-29 17:49:42 -07:00
atomic_ops.h atomic_ops: Fix MSVC 2024-01-27 21:42:16 +00:00
bit_cast.h common: make BitCast constexpr 2023-03-07 20:26:56 -05:00
bit_field.h externals: Update to fmt 10 and add format_as formatter for BitField 2023-05-28 15:05:55 -04:00
bit_set.h general: Convert source file copyright comments over to SPDX 2022-04-23 05:55:32 -04:00
bit_util.h Move to Clang Format 15 2023-01-29 17:49:42 -07:00
bounded_threadsafe_queue.h Reimplement HardwareOpus 2023-09-16 11:56:25 -04:00
cityhash.cpp chore: add missing SPDX tags 2022-04-28 18:24:11 +02:00
cityhash.h chore: add missing SPDX tags 2022-04-28 18:24:11 +02:00
CMakeLists.txt Implemented rewindless Fiber without Boost (using minicoro) 2025-04-04 03:40:47 +02:00
common_funcs.h Make system settings persistent across boots 2023-12-16 06:01:54 +00:00
common_precompiled_headers.h Update fmt to allow for v11 2025-04-10 01:11:22 +02:00
common_types.h Core: Initial implementation of device memory mapping 2024-01-18 21:12:30 -05:00
concepts.h Move to Clang Format 15 2023-01-29 17:49:42 -07:00
container_hash.h container_hash: use climits 2023-03-26 10:24:33 -04:00
demangle.cpp scope_exit: Make constexpr 2024-02-19 16:00:46 +01:00
demangle.h Move demangle impl to cpp 2023-01-14 05:12:41 +00:00
detached_tasks.cpp general: Silence -Wshadow{,-uncaptured-local} warnings 2023-07-18 19:31:35 -04:00
detached_tasks.h chore: make yuzu REUSE compliant 2022-07-27 12:53:49 +02:00
div_ceil.h Move to Clang Format 15 2023-01-29 17:49:42 -07:00
dynamic_library.cpp Update fmt to allow for v11 2025-04-10 01:11:22 +02:00
dynamic_library.h common: dynamic_library: Add ctor for existing handle. 2023-06-03 00:05:31 -07:00
elf.h jit: add support for relr-type relocations 2023-10-11 11:13:19 -04:00
error.cpp common: error: Fix for Android. 2023-06-03 00:05:27 -07:00
error.h chore: make yuzu REUSE compliant 2022-07-27 12:53:49 +02:00
expected.h Move to Clang Format 15 2023-01-29 17:49:42 -07:00
fiber.cpp Revert "Disabled MCO_USE_VMEM_ALLOCATOR because standard stack size seems to suffice" 2025-04-06 22:52:55 -03:00
fiber.h Implemented rewindless Fiber without Boost (using minicoro) 2025-04-04 03:40:47 +02:00
fixed_point.h general: fix spelling mistakes 2023-03-12 11:33:01 -04:00
free_region_manager.h common: Add free region manager 2023-11-25 00:46:15 -05:00
hash.h Refactor VideoCore to use AS sepparate from Channel. 2022-10-06 21:00:52 +02:00
heap_tracker.cpp heap_tracker: use linear-time mapping eviction 2023-12-27 10:42:27 -05:00
heap_tracker.h heap_tracker: use linear-time mapping eviction 2023-12-27 10:42:27 -05:00
hex_util.cpp chore: add missing SPDX tags 2022-04-28 18:24:11 +02:00
hex_util.h Update fmt to allow for v11 2025-04-10 01:11:22 +02:00
host_memory.cpp scope_exit: Make constexpr 2024-02-19 16:00:46 +01:00
host_memory.h core: track separate heap allocation for linux 2023-12-25 23:30:56 -05:00
input.h input_common: Remove duplicated DriverResult enum 2023-06-28 09:49:47 -06:00
intrusive_list.h common: add intrusive list type 2023-04-29 17:46:26 -04:00
intrusive_red_black_tree.h general: fixes for gcc 13 2023-04-02 19:02:04 -04:00
literals.h general: Convert source file copyright comments over to SPDX 2022-04-23 05:55:32 -04:00
lru_cache.h general: Convert source file copyright comments over to SPDX 2022-04-23 05:55:32 -04:00
lz4_compression.cpp fssystem: rework for yuzu style 2023-08-15 17:47:40 -04:00
lz4_compression.h fssystem: rework for yuzu style 2023-08-15 17:47:40 -04:00
make_unique_for_overwrite.h Move to Clang Format 15 2023-01-29 17:49:42 -07:00
math_util.h chore: add missing SPDX tags 2022-04-28 18:24:11 +02:00
memory_detect.cpp general: Convert source file copyright comments over to SPDX 2022-04-23 05:55:32 -04:00
memory_detect.h Rework time service to fix time passing offline. 2024-01-24 04:26:55 +00:00
microprofile.cpp chore: make yuzu REUSE compliant 2022-07-27 12:53:49 +02:00
microprofile.h code: dodge PAGE_SIZE #define 2022-08-19 16:08:40 -07:00
microprofileui.h chore: make yuzu REUSE compliant 2022-07-27 12:53:49 +02:00
minicoro.h Fixed minicoro.h formatting 2025-04-04 03:40:47 +02:00
multi_level_page_table.cpp general: Format licenses as per SPDX guidelines 2022-10-06 21:00:54 +02:00
multi_level_page_table.h General: address feedback 2022-10-06 21:00:54 +02:00
multi_level_page_table.inc general: Format licenses as per SPDX guidelines 2022-10-06 21:00:54 +02:00
nvidia_flags.cpp Update fmt to allow for v11 2025-04-10 01:11:22 +02:00
nvidia_flags.h general: Convert source file copyright comments over to SPDX 2022-04-23 05:55:32 -04:00
overflow.h Address review comments and fix compilation problems 2024-01-25 16:43:53 -05:00
page_table.cpp scope_exit: Make constexpr 2024-02-19 16:00:46 +01:00
page_table.h kernel: add KPageTableBase 2023-11-10 12:01:35 -05:00
param_package.cpp chore: make yuzu REUSE compliant 2022-07-27 12:53:49 +02:00
param_package.h chore: make yuzu REUSE compliant 2022-07-27 12:53:49 +02:00
parent_of_member.h Silence std::aligned_storage warnings as it's deprecated in C++23, 2022-09-01 16:50:41 +01:00
point.h general: Convert source file copyright comments over to SPDX 2022-04-23 05:55:32 -04:00
polyfill_ranges.h Move to Clang Format 15 2023-01-29 17:49:42 -07:00
polyfill_thread.h common/polyfill_thread: use std::forward where appropriate, qualify std::move calls 2023-10-13 18:51:11 +03:00
precompiled_headers.h CMake: Consolidate common PCH headers 2022-11-30 18:30:30 -05:00
quaternion.h chore: make yuzu REUSE compliant 2022-07-27 12:53:49 +02:00
range_map.h Fixes 'Continous' typo 2023-03-29 19:26:12 -07:00
range_mutex.h smmu: use new range mutex construction for protecting counters 2024-01-31 16:38:51 +01:00
range_sets.h Common: Rename SplitRangeSet to OverlapRangeSet 2024-02-05 23:01:17 +01:00
range_sets.inc Common: Rename SplitRangeSet to OverlapRangeSet 2024-02-05 23:01:17 +01:00
reader_writer_queue.h chore: make yuzu REUSE compliant 2022-07-27 12:53:49 +02:00
ring_buffer.h common/ring_buffer: Include <limits> header 2024-02-24 02:34:09 +02:00
scm_rev.cpp.in Update fmt to allow for v11 2025-04-10 01:11:22 +02:00
scm_rev.h Removed telemetry and anonymized SCM (git) strings 2025-04-04 03:40:47 +02:00
scope_exit.h scope_exit: Make constexpr 2024-02-19 16:00:46 +01:00
scratch_buffer.h Fix ScratchBuffer moves 2023-07-04 16:02:58 +01:00
settings.cpp Optimize SpiriV output 2025-04-12 22:54:32 -03:00
settings.h Add Windows support to Hybrid Memory Manager 2025-04-12 23:42:24 -03:00
settings_common.cpp Fix more typos 2024-01-15 23:26:53 +00:00
settings_common.h general: add default configurations for applet mode 2024-02-09 09:20:53 -05:00
settings_enums.h Optimize SpiriV output 2025-04-12 22:54:32 -03:00
settings_input.cpp core: hid: Split SL and SR buttons 2023-11-11 21:03:15 -06:00
settings_input.h android: Input mapping 2024-02-17 12:32:33 -05:00
settings_setting.h android: Refactor settings to expose more options 2023-12-12 17:25:36 -05:00
signal_chain.cpp android: Add cpu bakend gui toggle 2023-11-25 00:47:28 -05:00
signal_chain.h Address some review comments 2023-11-25 00:47:35 -05:00
slot_vector.h VideoCore: Move Slot Vector to Common 2024-02-04 20:01:47 +01:00
socket_types.h ssl: Reorder inclusions 2023-07-17 15:46:24 -04:00
spin_lock.cpp general: Convert source file copyright comments over to SPDX 2022-04-23 05:55:32 -04:00
spin_lock.h general: Convert source file copyright comments over to SPDX 2022-04-23 05:55:32 -04:00
stb.cpp cmake: prefer system stb headers 2023-10-25 21:47:32 +02:00
stb.h cmake: prefer system stb headers 2023-10-25 21:47:32 +02:00
steady_clock.cpp (wall, native)_clock: Rework NativeClock 2023-06-07 21:44:42 -04:00
steady_clock.h steady_clock: Introduce a real time clock 2023-03-07 21:17:46 -05:00
stream.cpp general: Convert source file copyright comments over to SPDX 2022-04-23 05:55:32 -04:00
stream.h general: Convert source file copyright comments over to SPDX 2022-04-23 05:55:32 -04:00
string_util.cpp audio: rewrite IAudioDevice 2024-02-20 22:15:38 -05:00
string_util.h audio: rewrite IAudioDevice 2024-02-20 22:15:38 -05:00
swap.h Warnings cleanup for GCC 13 and Clang 16 2023-08-25 19:22:31 -04:00
thread.cpp common: use SetThreadDescription API for thread names 2023-10-20 11:41:29 -04:00
thread.h general: remove atomic signal and wait 2023-06-22 09:25:23 -04:00
thread_queue_list.h chore: add missing SPDX tags 2022-04-28 18:24:11 +02:00
thread_worker.h general: fix compile for Apple Clang 2022-11-22 22:22:28 -05:00
threadsafe_queue.h general: fix compile for Apple Clang 2022-11-22 22:22:28 -05:00
time_zone.cpp Rework time service to fix time passing offline. 2024-01-24 04:26:55 +00:00
time_zone.h common: Move system time zone string detection 2023-06-05 15:15:11 -04:00
tiny_mt.h general: Convert source file copyright comments over to SPDX 2022-04-23 05:55:32 -04:00
tree.h Move to Clang Format 15 2023-01-29 17:49:42 -07:00
typed_address.h Update fmt to allow for v11 2025-04-10 01:11:22 +02:00
uint128.h common: remove unneeded x86-specific header 2022-08-16 15:19:57 -06:00
unique_function.h general: Convert source file copyright comments over to SPDX 2022-04-23 05:55:32 -04:00
uuid.cpp Update fmt to allow for v11 2025-04-10 01:11:22 +02:00
uuid.h Rework time service to fix time passing offline. 2024-01-24 04:26:55 +00:00
vector_math.h input_common: Add property to invert an axis button 2023-05-05 17:18:35 -06:00
virtual_buffer.cpp general: Convert source file copyright comments over to SPDX 2022-04-23 05:55:32 -04:00
virtual_buffer.h general: Convert source file copyright comments over to SPDX 2022-04-23 05:55:32 -04:00
wall_clock.cpp Rework time service to fix time passing offline. 2024-01-24 04:26:55 +00:00
wall_clock.h Rework time service to fix time passing offline. 2024-01-24 04:26:55 +00:00
zstd_compression.cpp zstd: Use ZSTD_getFrameContentSize instead of ZSTD_getDecompressedSize 2023-03-23 22:16:20 -04:00
zstd_compression.h general: Convert source file copyright comments over to SPDX 2022-04-23 05:55:32 -04:00