Add 'Frame Rest' power saving option #15834
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Experimental sleep feature aiming to lower CPU usage and temperature when using certain CPU hungry vsync modes. Specifically aimed for third party scanline sync, but since it seems to also work well enough with gl vsync, I decided to allow it to happen also while in menu and when internal vsync is enabled. Default is disabled of course.
The maximum sleep amount limit is half frame time, since going over that does not seem worth it. Many cores handle that easily with current hardware. There is no point using it with vulkan and other drivers with settings that won't drain the CPU.
I've been using and honing it for a month or so with decent results. In practice it lowers CPU temperature at best around 10c on average on my machine. No idea how well
retro_sleep()
behaves with other platforms than Windows.Option added to both "Frame Throttle" and "Power Management" menus. Also cleaned some tabs.