Commit Graph

253 Commits

Author SHA1 Message Date
CamilleLaVey 3f52bf4b4b [core, gpu, threads] Multithreading refactor (#4254)
This insufferable work tries to cover some holes on previous threading implementation from yuzu's team, starting with Windows and Linux reordering of priorities (NICE), reworks previous Android's threading and cpu affinity with adpf, adjust emulated clocks/gpu for better "accuracy" with their work, bumps android minSDK for all flavors, legacy will now work with AP 29 to cover A10 - A12, standard will reach A13 as base and finally the optimized build will come with API 35, mostly targeted on devices with A15 support and newer, NDK and AGP wasn't upgraded yet. The performance cost efficiency have been improved based on device power configuration; preventing overheating if certain devices tended to fall into NICE0 (not allocated threads priority, all task ran with higher priority, 11 tasks running within the limited 2 - 7 threads available on the most common configuration 1x3x4 or 1x4x3).

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4254
2026-08-08 04:39:47 +02:00
lizzie 58dee53305 [fmt] use {#:x} instead of 0x{:#x} (#4170)
continuation of #309 but applying to even more files than before :)
also makes them lowercase because `0xfafafa` is better as `0XFAFAFA`

Signed-off-by: lizzie <lizzie@eden-emu.dev>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4170
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
Reviewed-by: Maufeat <sahyno1996@gmail.com>
2026-07-25 21:47:07 +02:00
lizzie 3aa0d46259 [video_core, hle] remove redundant parent references in system structs (#3908)
reworked a bit to remove references of parent objects and instead pass as arguments to methods to prevent useless reloads

Signed-off-by: lizzie <lizzie@eden-emu.dev>
Co-authored-by: maufeat <sahyno1996@gmail.com>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3908
Reviewed-by: Maufeat <sahyno1996@gmail.com>
Reviewed-by: crueter <crueter@eden-emu.dev>
2026-06-23 06:31:25 +02:00
lizzie 9d55875377 [*] fix missing '#pragma once' on header files (#4014)
`find src -type f -name '*.h' -not -exec grep -q "#pragma once" {} \; -print`

- ignore qt with header guards already
- smaa too

Signed-off-by: lizzie <lizzie@eden-emu.dev>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4014
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
Reviewed-by: crueter <crueter@eden-emu.dev>
2026-05-26 06:37:59 +02:00
PavelBARABANOV 813a35abca [vi] Restore high Z-index for shared buffer layer to fix keyboard overlay display (#3787)
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3787
Reviewed-by: Maufeat <sahyno1996@gmail.com>
Reviewed-by: Lizzie <lizzie@eden-emu.dev>
Co-authored-by: PavelBARABANOV <pavelbarabanov94@gmail.com>
Co-committed-by: PavelBARABANOV <pavelbarabanov94@gmail.com>
2026-03-26 22:23:21 +01:00
crueter 2b979024cb [frontend] Slow and Turbo modes (#3525)
Closes #3344

Adds slow and turbo modes with configurable speeds that can then be
toggled by the user. Behavior is:
- Standard/slow limit, toggle turbo = turbo
- Turbo limit, toggle turbo = standard
- Standard/turbo limit, toggle slow = slow
- Slow limit, toggle slow = standard

Enabling the turbo/slow mode enables the frame limiter unconditionally.

This has some conflicts with VSync. For example when I set my refresh
rate to 60hz and enable vsync, turbo mode does nothing. Not sure how to
go about fixing this, @MaranBr probably knows better the proper
solution.

Signed-off-by: crueter <crueter@eden-emu.dev>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3525
Reviewed-by: DraVee <dravee@eden-emu.dev>
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
2026-02-12 01:31:55 +01:00
lizzie a8093c2a3c [*] change all std::unordered_map and std::unordered_set into ankerl::unordered_dense::map/set variants (#3442)
mainly doing this to reduce memory footprint; we all know how nice ankerl::unordered_dense is

in theory 4x faster - in practice these maps arent that "hot" anyways so not likely to have much perf gained

i just want to reduce mem fragmentation to ease my porting process, plus it helps other platforms as well (ahem weak Mediatek devices) :)

Signed-off-by: lizzie <lizzie@eden-emu.dev>

Co-authored-by: Caio Oliveira <caiooliveirafarias0@gmail.com>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3442
Reviewed-by: DraVee <dravee@eden-emu.dev>
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
Co-authored-by: lizzie <lizzie@eden-emu.dev>
Co-committed-by: lizzie <lizzie@eden-emu.dev>
2026-02-10 03:34:07 +01:00
Maufeat 1eed7efd09 [core, display, overlay] Add LayerIsOverlay to separate overlay on composer, stub RequestListSummaryOverlayNotification, sync emu settings when setting language (#3123)
This should fix the issue with, for example, ToTK running at 60 FPS when overlay applet is running.
This also should always run the overlay as actual overlay and not in the back.
Stubs RequestListSummaryOverlayNotifications in friends
Syncs Language of the Emulator, when setting language, this is used in Starter Applet

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3123
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
Reviewed-by: Caio Oliveira <caiooliveirafarias0@gmail.com>
Co-authored-by: Maufeat <sahyno1996@gmail.com>
Co-committed-by: Maufeat <sahyno1996@gmail.com>
2025-12-17 06:26:02 +01:00
Maufeat f58097e814 [hle,display,overlay,starter,hid] add overlay functions, starter applet (initially), HID handheld for system applets and fw21 stubs (#3080)
Adds fully functional overlay display.
- Enable Overlay Applet via "View" -> "Enable Overlay Display Applet"
- Open the overlay by pressing the home button for over 1s
- Can adjust volume
- Can toggle airplane mode (if on WiFi, maybe if overlay is enabled pretend to be on WiFi?)
- Future TODO(?): Adjust Brightness implementation for host system
- Inputs are properly registered. e.g. if overlay open, application does not register inputs.

You can control volume and airplane mode outside of the emulator window

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3080
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
Reviewed-by: crueter <crueter@eden-emu.dev>
Co-authored-by: Maufeat <sahyno1996@gmail.com>
Co-committed-by: Maufeat <sahyno1996@gmail.com>
2025-11-27 19:46:41 +01:00
lizzie 191e4c75a1 [meta] fix license headers (#2547)
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2547
Reviewed-by: MaranBr <maranbr@eden-emu.dev>
Co-authored-by: lizzie <lizzie@eden-emu.dev>
Co-committed-by: lizzie <lizzie@eden-emu.dev>
2025-09-21 21:58:59 +02:00
lizzie 9d2681ecc9 [cmake] enable clang-cl and WoA builds (#348)
Compilation and CMake fixes for both Windows on ARM and clang-cl, meaning Windows can now be built on both MSVC and clang on both amd64 and aarch64.

Compiling on clang is *dramatically* faster so this should be useful for CI.

Co-authored-by: crueter <crueter@eden-emu.dev>
Co-authored-by: crueter <crueter@crueter.xyz>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/348
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
Reviewed-by: crueter <crueter@eden-emu.dev>
Co-authored-by: lizzie <lizzie@eden-emu.dev>
Co-committed-by: lizzie <lizzie@eden-emu.dev>
2025-09-09 20:47:49 +02:00
Zephyron cf1bcb02c5 service/vi: Improve OpenDisplay validation
Updates the OpenDisplay function in IApplicationDisplayService to properly
validate display names. Instead of only accepting "Default", now validates
against all known valid display names: "Default", "External", "Edid",
"Internal", and "Null".

- Changes log level from WARNING to DEBUG since this is no longer stubbed
- Adds proper validation for all valid display names
- Returns ResultOperationFailed for invalid display names
- Improves logging by including the requested display name
2025-04-19 17:19:38 -03:00
Liam 10966412ac vi: workaround conductor includes 2024-02-23 10:34:49 -05:00
Liam 0e032e03e6 vi: ignore shared buffer destruction failure on termination 2024-02-20 00:02:56 -05:00
Liam 3b78f33757 vi: remove superfluous locking in shared buffer manager 2024-02-19 23:59:35 -05:00
Liam 6fabb06764 nvnflinger/vi: don't recreate buffer queue on open/close 2024-02-19 23:59:35 -05:00
Liam d082a80d79 nvnflinger: check for layers before compose 2024-02-18 11:25:52 -05:00
german77 07143cd038 service: vi: Implement ListDisplayMode 2024-02-17 18:08:41 -05:00
Liam f5d736af4b vi: manage resources independently of nvnflinger and refactor 2024-02-17 18:08:38 -05:00
Liam e34074861c vi: move shared buffer management from nvnflinger 2024-02-17 18:01:41 -05:00
Liam b1f1beae41 nvnflinger: convert to process 2024-02-17 18:01:41 -05:00
Liam 0f18bf4a06 vi: rewrite IApplicationDisplayService 2024-02-14 12:03:32 -05:00
Liam 04b3fdca99 vi: rewrite ISystemDisplayService 2024-02-14 12:03:32 -05:00
Liam f675c54cbe vi: rewrite IManagerDisplayService 2024-02-14 12:03:32 -05:00
Liam 33daf4463b vi: rewrite IHOSBinderDriver 2024-02-14 12:03:32 -05:00
Liam 5ad57cb878 vi: rewrite IApplicationRootService, IManagerRootService, ISystemRootService 2024-02-14 12:03:32 -05:00
Liam 8de4523094 vi: split into implementation files 2024-02-14 12:03:32 -05:00
Liam a989a7ad9c vi: extract types 2024-02-14 12:03:31 -05:00
Liam 1c32e4157c nvnflinger/gpu: implement blending 2024-02-09 09:20:53 -05:00
Liam 5ec76db392 nvnflinger/gpu: implement layer stack composition 2024-01-31 11:27:21 -05:00
Liam 7df27bbef6 core: support offline web applet 2024-01-29 20:17:33 -05:00
Liam 49f10b2e54 am: migrate global state to per-applet state structure 2024-01-29 20:17:33 -05:00
Narr the Reg aad9258100 service: properly convert buffers to strings 2024-01-23 10:24:05 -06:00
Liam c6dc206cd6 vi: check layer state before opening or closing 2024-01-17 22:03:40 -05:00
Liam 5f9a3c23db nvnflinger: ensure display abandonment considers all layers and future layers 2024-01-17 18:45:39 -05:00
Liam 1d7fb4cffb vi: connect vsync event handle lifetime to application display service interface 2024-01-07 21:47:41 -05:00
Liam beab2c3fc7 vi: fix name of nvnflinger 2024-01-07 21:31:03 -05:00
Liam ccef7d7326 vi: fix confusion between closing and destroying layers 2023-12-12 12:14:23 -05:00
Liam 2e8b7e4a40 nvnflinger: use graphic buffer lifetime for map handle 2023-10-29 22:12:16 -04:00
Narr the Reg 9567f9aaed service: nvnflinger: Implement shared buffer
Co-authored-by: Liam <byteslice@airmail.cc>
2023-10-01 11:38:30 -06:00
lat9nq 81d209ee34 general: Use console mode helper across project 2023-08-22 21:58:23 -04:00
lat9nq 447ec24378 general: Convert use_docked_mode to an enumeration
Allows some special interactions with it in the Qt frontend.
2023-08-22 16:07:52 -04:00
Liam 580f7f2ff1 general: fix incorrect conversions 2023-08-08 11:09:37 -04:00
Liam 5f2c56cd15 core: remove ResultVal type 2023-08-08 11:09:37 -04:00
Liam c59b0c9715 nvnflinger: fix Parcel serialization 2023-05-11 17:09:19 -04:00
Liam c191cf75bb nvnflinger: fix name 2023-03-01 10:39:49 -05:00
Liam d7e9461b71 service: move hle_ipc from kernel 2023-03-01 10:39:49 -05:00
liamwhite 7b8304614c Merge pull request #9832 from liamwhite/hle-mp
service: HLE multiprocess
2023-03-01 10:38:20 -05:00
Narr the Reg 932cf55052 core: Update service function tables to 16.0.0+ 2023-02-24 18:17:36 -06:00
Liam 1c3a93e7c4 service: refactor server architecture
Converts services to have their own processes
2023-02-21 12:19:25 -05:00