If it fits your maximum frame rate, all good, move on.
If not, most of the time there’s an easy fix for that:
Go to about:config for customizing your settings. Now enter layout.frame_rate and check its value. Probably it sits at “-1” or any other value. To cover your display’s potential, just enter the maximum frame rate you’d like to have (e.g. 240 for a 240 Hz display), save it, restart your browser (just to make sure) and check again on UFO Test: Refresh Rate .
If everything works as it should, you should now see the browser rendering at your custom frame rate.
I hope I could help someone.
PS: Feel free to join our community-led Matrix room:
In Firefox you can configure the refresh rate by going to about:config and setting the layout.frame_rate preference.
The preference “layout.frame_rate” has 3 meanings depending on the value:
-1 = Auto (default), use hardware vsync or software vsync @ 60 Hz if hw vsync fails.
0 = ASAP mode - used during talos testing.
X = Software vsync at a rate of X times per second.
So manually setting this forces “software vsync” at the specified value while -1 will try HW vsync and fallback to SW vsync at a fixed refresh rate of 60Hz. So -1 looks to be the right value, and if the fallback case is hit, that means there is something broken / misconfigured in the Linux graphics stack / compositor preventing Firefox from using HW vsync at the monitor’s reported refresh rate.
With a 160Hz VRR display and an Intel iGPU, I had to run powerprofilesctl set performance or the UFO test would complain about “stutter” since balanced kills GPU perf. However, micro benchmarks like vkgears/vkcube/etc. have no issue with frame pacing at 160Hz when using balanced. I guess FF’s graphics pipeline isn’t very optimized–or at the very least is doing more work than it should be doing. But some of this overhead is likely do to using custom ICC profiles (as that adds extra work due to colorspace conversion). ICCv4 profiles are needed for FF to properly display wide color gamut images–otherwise it just forces sRGB for everything even if you have a WCG display (see Wide Gamut - Test Page).
Removing power-profiles-daemon and manually tweaking the /sys/* knobs honestly works better on my laptop and desktop systems (keeps GPU perf at max when appropriately configuring the platform_profile, energy_perf_bias (EPB), energy_performance_preference (EPP) settings and maybe limiting max clock speed with no_turbo=1 when needed).
As a sample size of 1, my system works fine with -1 for layout.frame_rate.
If you have issues, try turning the PPD profile to performance. If that doesn’t work, then your only option is to manually set layout.frame_rate to your monitor’s refresh rate and use software vsync.