The first reason that comes to mind is battery life. That's probably the most broadly applicable use case.
But also, if I was still doing e.g. frontend web development, I would want to confirm that my css animations looked nice at 60 hz.
Edit: My first use case is likely wrong, thank you to replies for reminding me Apple uses adaptive refresh down to 1 hz.
GP of this thread links to a post arguing that Apple is going out of their way to avoid just that during the boot sequence.
Presumably ProMotion is a specific mode that the display/display controller/... first needs to be set to. If you start out in anything other than that and then switch to it later in the boot process, you'd get that blank screen for a second, and Apple avoids that by writing the startup mode to non-volatile memory.
Otherwise they could also just always start out in ProMotion mode – but then you'd get flicker every time you (re)boot into any other mode, like 60 Hz for people who prefer that.
Many applications have a way of synchronizing their drawing loop to the monitor refresh rate, for example; ProMotion must be doing something clever to support them, or they'd just force the refresh rate to 120 Hz.
macOS also supports variable refresh rate external monitors these days (via both DisplayPort and HDMI); I'm not sure if that would be labeled "ProMotion" in the display settings, but in any case there are things that can go wrong there, and having a way to opt out of that at the HDMI/DisplayPort signal level (and not just fixing the frame rate at the GPU level while driving the external link under VRR) seems like a good idea.
I'm guessing it probably has to do with compliance with the original VESA standard, or whatever the completely basic support of multiple resolutions and refresh rates in all monitors is called.
The bootstrap of booting a system always ends up relying on the most basic supported things to start with (such as 640x480@60Hz using the VESA standard) and then upping it from there.
There’s very likely still a scan out rate determined by the maximum refresh rate, just that the source can delay the next frame if it’s not ready yet.
In other words, e.g. 120 Hz and 144 Hz of VRR aren’t the same even when displaying a 60 Hz signal at the moment – the faster signal would have more pauses and a higher signal rate.
So, yes, fixed 120 Hz and 120 Hz with VRR and without any skipped frames might well be the same mode to a GPU, but it also might be a different one, requiring a mode switch. I don't know how Apple has implemented it.
But in any case, for the bug at hand it's irrelevant: Apple's ProMotion uses a refresh rate of 120 Hz, so switching between that and 60 Hz is definitely a mode switch.
An animation that looks slick at 120 fps might look too fast/slow/complex/whatever on a common 60 hz screen. So if I was still doing this sort of development, I'd prefer to be working on a 60 hz monitor.
I've been advocating (and using) high refresh displays for over two decades and I find your reasoning preposterous. Downgrading to crappy 60 Hz monitor for nothing.
I made a small experiment about raf https://codepen.io/mmis1000/pen/qBxqgLr and it always looks uniform regardless I am on a 60, 120, 160 fps screen. (It would blink crazily if you put it in the middle of two screen with different refresh rate, because it can't be in two refresh rate at same time)
Erit: okay, it looks non uniform only in safari. Clap, clap, clap, Apple…
Did some quick Googling to make sure I wasn't just out of the loop on this, as far as I can tell they are not the same: https://github.com/whatwg/html/issues/5025
> As such, on their 120hz devices, requestAnimationFrame is throttled to 60hz, whereas CSS animations run at 120hz.
Please let me know if I am misunderstanding, it has been a few years since I've done this type of work.
These might seem unrelated, but:
* There's a `defaults set` setting that allows you to speed up the transition animation length from 1 second to 0.5 second, which is huge because that transition is extremely poorly implemented (it leaves the windows on the workspace that you're leaving activated until the transition is complete, so you start typing and it's on the other screen you can't even see any more) and VERY SLOW
* That setting only works if the refresh rate is 60Hz, and it completely fails to do anything if ProMotion is on, because for some reason the animation length isn't programmed to handle the different refresh rates.
So having ProMotion off relieves frustration.
Would be nice if I could force my MBP to run at 100Hz for PAL Amiga/C64 emulation - or even better if emulators could/would change the refresh rate at least when running full-screen.
(Actually, since Sonoma, I can manually set it to 50Hz, but there's no fixed refresh rate options above 60Hz, just 'Pro Motion'. Previously, the refresh rate setting seemed missing entirely on my M1 MBP)
On Sonoma I can select 24, 25, 30, 50, 60, 100, 120 Hz, in addition to "Variable (40-120 Hz) refresh rates for my LG C2 display. When selecting 50 or 100 Hz, scrolling in (PAL) C64 emulation in VICE becomes much smoother, but not perfect. However, when I enable variable refresh rate and switch to fullscreen mode, VICE can perfectly synchronize the refresh rate and scrolling/animations become butter smooth.
Admittedly rather niche use case.
...and I bet that's exactly the attitude Apple had when implementing things, which lead to this mess.
My perception: current Mac is an oversized iPad without touchscreen