Interesting. I wonder why anyone would turn ProMotion off considering that 120Hz massively improves responsiveness. I've only encountered one app that doesn't work with variable refresh rate and that's Genshin on Windows. Even that's probably not an issue with newer monitors that can handle VRR down to 60Hz without my monitor's frame-doubling flicker as it keeps switching been 60Hz and 120Hz
macOS is very good at adaptively reducing refresh rate when nothing is happening on screen, with the panel reportedly supporting the full range of 1-120hz so barring badly engineered apps that are permanently pinned at max refresh, the battery impact of keeping ProMotion on is minimal for most use cases.
Which raises the question even more why the refresh rate matters during early bootup - surely you could just start with an apple logo and a 1 Hz refresh rate, and then up the rate later during boot when it's time to do some animation...
Well, I can only tell you what happens when you manually change the resolution from 60 Hz to "ProMotion" in macOS.
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.
...so this is where I'm confused, and where I think GP is confused. Why is there a separate 60 Hz mode that requires blanking the display? Why not just keep dynamic refresh enabled on the panel, and then lock it to updating 60 times per second (which it can do, since it's dynamic) for people who prefer that for whatever reason? What is the difference?
No idea, but if I'd had to speculate: Probably ProMotion activates a quite different internal rendering mode, and fixed 60 Hz mode offers a way to opt out of 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.
> Why is there a separate 60 Hz mode that requires blanking the display?
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.
If I understand correctly, ProMotion is the feature that allows dynamically changing the refresh rate without screen blanking. So the reason refresh rate matters in early bootup is that if ProMotion is not enabled, you get brief screen blanking. Setting the screen to 1 Hz in early bootup and then changing it to the user setting later would require screen blanking.
Pretty sure VRR is a mode as far as the display (controller) is concerned.
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.
As far as I understand it, nothing "clocks down"; rather, frames are delayed as required to achieve the frame rate desired (or reachable, in the case of gaming) by the source, down to 1 Hz.
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.
Well the CSS transition wouldn't run at 60 fps, it would run at 120 fps, no?
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.
Aren't CSS animations capped at 60, same as requestAnimationFrame?
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 am pretty sure they are synchronized to refresh rate (at least on windows).
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…
CSS transitions and animations seem to be declared using expressions that are continuous over time so it would make sense that they are just quantized down to whatever refresh rate the system supports.
I'm not even sure CSS animations can go above 60fps, and am unsure why you'd think it would be faster / slower on a different refresh rate screen: CSS transitions are defined by time, not frames.
I turned it off. The primary reason is that I use ctrl+arrow keys to move between workspaces frequently.
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.
Emulation is one case where specific refresh rates are desirable.
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)
Interesting, that could be a limitation to the internal screen of the 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.
I turn it off because I can’t tell the difference and if it doesn’t improve anything for me, I might as well not have the system wasting battery and other resources on it.
VRR displays run at 1Hz to save battery when the display is static. Reasoning like yours is why every OS's settings page gets neutered with every update.
Have you done an eye exam recently? With 20/20 vision and no practice you should be able to see input lag up to 1000Hz by dragging any UI element around like the presenter does in this video: https://youtu.be/vOvQCPLkPt4
I definitely see it in the video. But no my computer (like all Macs) does not have a touch screen. So without the aid of directly comparing my finger and the object being manipulated on the screen, I cannot perceive the difference.
What if you just move your cursor in a circle? You can see each frame where the cursor is in a different position. With persistence of vision you should see twice as many cursors on a 120Hz panel compared to 60Hz. I also feel a noticably larger delay in cursor movements when I when I use a 60Hz monitor or phone.
I'm sorry but I cannot see twice as many cursors when I move the cursor in a circle. I see approximately eight of them when I move the cursor as fast as my finger allows me to, regardless of 120Hz or 60Hz.
As someone who regularly switches between a Windows PC and a Mac on the same display, I know what you mean. It doesn't feel as snappy/responsive, I believe probably linked to how rendering is done in macOS (basically something like a PDF composition).
There have been a lot of talk about gaming on Macs, but the truth is that to have any chance, Apple needs to fix this laggy feeling. The same game on the same computer just feels way better in Windows than it does in macOS, it is definitely a software problem...