eden/src
JPikachu 8599c47fe0 service: sm/kernel/loader: Implement QueryPointerBufferSize, automatic pointer buffer sizing, and SM service improvements
This commit introduces multiple improvements to IPC handling and system management services, enhancing game compatibility and emulator stability.

--- 1. Fully Implemented QueryPointerBufferSize Service:
- Exposes the per-process IPC pointer buffer size through `QueryPointerBufferSize` instead of returning stubbed values.
- Added `m_pointer_buffer_size` field to `KProcess`, initialized with a safe default (0x8000).
- Introduced getter and setter methods (`GetPointerBufferSize()` / `SetPointerBufferSize()`).
- Registered new handler in `sm_controller` for handling QueryPointerBufferSize requests.
- Ensures accurate buffer size reporting for games relying on this service.

--- 2. Automatic Pointer Buffer Sizing Per-Game:
- Automatically determines heap size by parsing `main.npdm` from the game’s ExeFS:
  - Heap size > 1 GiB → pointer buffer size set to `0x10000`.
  - Heap size > 512 MiB → pointer buffer size set to `0xC000`.
  - Otherwise, defaults to `0x8000`.
- Gracefully handles missing or malformed `main.npdm` by falling back to default settings.
- Automatically configures pointer buffer size during `AppLoader_NCA::Load`.
- Added logging for heap size detection and buffer size configuration for easier debugging.

--- 3. SM Service Improvements:
- Added full implementation of `QueryPointerBufferSize` within the SM service framework.
- Cleaned up stubbed methods and ensured correct domain handling.
- Registered new service commands (e.g., `SetPointerBufferSize` and `QueryPointerBufferSize`) in `sm_controller`.
- Improved session handling with proper conversion to domain objects where necessary.

--- Benefits:
- Greatly improves compatibility with games that require larger IPC pointer buffers
- Eliminates the need for manual per-game pointer buffer overrides.
- More accurate emulation of Switch system services, improving stability for both commercial titles and homebrew.
- Provides cleaner logging for easier debugging and maintenance.
- Future-proofs IPC handling for upcoming titles with higher memory demands.

--- Additional Notes:
- Default pointer buffer size remains 0x8000 for smaller titles or if heap size cannot be determined.
- Falls back to safe defaults without affecting overall emulator performance.
- All new service calls properly registered and integrated without breaking existing functionality.
2025-04-30 06:35:22 +00:00
..
android Add USE AUTO STUB to Android 2025-04-30 03:00:46 +03:00
audio_core Update src/audio_core/common/feature_support.h 2025-04-04 03:40:49 +02:00
common implement: New API for Multiplayer Support 2025-04-30 06:34:25 +00:00
core service: sm/kernel/loader: Implement QueryPointerBufferSize, automatic pointer buffer sizing, and SM service improvements 2025-04-30 06:35:22 +00:00
dedicated_room Rename Yuzu logo to Eden 2025-04-13 01:15:36 +01:00
frontend_common Add dynamic state extension configs 2025-04-23 20:57:53 -04:00
hid_core Update fmt to allow for v11 2025-04-10 01:11:22 +02:00
input_common Update fmt to allow for v11 2025-04-10 01:11:22 +02:00
network Fix more typos 2024-01-15 23:26:53 +00:00
shader_recompiler proper placement of clip distance init 2025-04-24 11:00:28 -04:00
tests Implemented rewindless Fiber without Boost (using minicoro) 2025-04-04 03:40:47 +02:00
video_core vulkan_device: Fully disable dynamic state extensions/features when dyna_state = 0 2025-04-30 06:34:49 +00:00
web_service Update fmt to allow for v11 2025-04-10 01:11:22 +02:00
yuzu Dynamic State Fixes (#57) 2025-04-27 17:07:49 -04:00
yuzu_cmd Rename Yuzu logo to Eden 2025-04-13 01:15:36 +01:00
.clang-format chore: make yuzu REUSE compliant 2022-07-27 12:53:49 +02:00
CMakeLists.txt Port changes from Early Access 2025-04-04 03:40:46 +02:00