mirror of
https://github.com/Droid-Deck/DroidDeck.git
synced 2026-11-11 02:51:10 +00:00
A frame limit only paced what reached the screen: a game without vsync kept drawing hundreds of frames a second that were thrown away (AIO at a 60 fps limit drew 155 to 2,446 fps), so the limit saved no power. With Performance mode on and a frame limit set, the session now sets gamescope's per-game limit over gamescope_control (gamescopectl debug_set_fps_limit). gamescope's limiter then has its WSI layer hold Vulkan games, DXVK and VKD3D included, to the limit. gamescope's own --framerate-limit option is reset on its first frame in 3.16.29, and Steam resets the per-game limit while it starts, so the session watches gamescope's limiter state file and sets the limit again whenever it is off (a once-a-second check with shell builtins, no process started). With Performance mode off, a limit paces the screen only, as before. The session also gives gamescope a fixed limiter state file path, so gamescope stops leaving a new one behind on every start, and removes the old ones. Device-proven on the AYANEO Pocket FIT (Turnip, AIO D3D11, 45 s runs on battery, three runs each): at a 60 fps limit the game held exactly 60.0 fps and the device drew 7.08 W instead of 9.45 W, with 1.3 instead of 2.6 busy cores and 5 instead of 11 % GPU load. No limit: unchanged.