Variable Refresh Rate API
The Variable Refresh Rate API allows you to change the current display refresh rate. The API provides IVariableRefreshRate.SupportedRefreshRates
, an array of display refresh rates that the device supports. To change the current refresh rate, call IVariableRefreshRate.SetRefreshRateByIndex
with a valid index for the array of supported refresh rates.
Note: The supported refresh rates depend on the model of the phone, Android Display Settings, and application-specific settings in Samsung Game Launcher.
The Variable Refresh Rate API is supported on all devices where UnityEngine.AdaptivePerformance.Samsung.Android.VariableRefreshRate.Instance
is not null
.
If the current refresh rate or the list of supported refresh rate changes because of an external event, the IVariableRefreshRate.RefreshRateChanged
event is triggered. This can happen when a user is making changes to the Display Settings.
The Unity core API Screent.currentResolution.refreshRate
is automatically updated when the refresh rate changes. This update might not happen immediately, so it is not recommended to cache the value of Screent.currentResolution.refreshRate
in your application.
Device compatibility
For information on which devices that support Variable Refresh Rate supports, see Requirements and compatibility.
Project Settings
To enable proper timing for Adaptive Performance, you need to enable the Frame Timing Stats option (menu: Edit > Project Settings > Player > Other Settings).
If you want to use Application.targetFrameRate
to limit the target frame rate, set the VSync Count option under Edit > Project Settings > Quality > Other to Don't Sync.
Unity has several quality levels in the quality settings. It's best practice to switch the VSync Count to Don't Sync for each quality level. This avoids issues with Adaptive Performance features like Adaptive Framerate and limiting the target framerate with Application.targetFrameRate
.
Optimized Frame Pacing
Adaptive Performance and Variable Refresh Rate are not compatible with frame pacing and it's best practice to disable Optimized Frame Pacing under Edit > Project Settings > Player > Resolution and Presentation.