Bug 272165
Summary: | 120Hz requestAnimationFrame is not supported on iPhone Pros, it is supported on iPad Pros | ||
---|---|---|---|
Product: | WebKit | Reporter: | Jeffrey Blanz <possum.bracing0v> |
Component: | Layout and Rendering | Assignee: | Antoine Quint <graouts> |
Status: | RESOLVED FIXED | ||
Severity: | Major | CC: | bfulgham, graouts, karlcow, possum.bracing0v, simon.fraser, webkit-bug-importer, zalan |
Priority: | P2 | Keywords: | InRadar |
Version: | Safari 17 | ||
Hardware: | iPhone / iPad | ||
OS: | iOS 17 | ||
URL: | https://www.testufo.com/ | ||
See Also: | https://bugs.webkit.org/show_bug.cgi?id=280183 |
Jeffrey Blanz
On iPhones with a promotion display, so all iPhone 13 Pro or newer Pro devices, disabling the “Prefer Page Rending Updates near 60fps” feature flag does not work.
On iPad Pros and MacBook Pros with promotion display the feature flag works.
You can test this on https://www.testufo.com/
You will see that after disabling the feature flag. 120hz animations are not present on iPhone Pros, but they are on iPad Pros and MacBook Pros.
Also related: In PWA apps, 120fps is disabled regardless of the feature flag on iPad Pros and iPhone Pros. 120fps is enabled for MacBook Pro PWAs, but not iPhone Pros or iPad Pros.
Attachments | ||
---|---|---|
Add attachment proposed patch, testcase, etc. |
Jeffrey Blanz
Added that this also happens on the Vision Pro, which should have 90fps support, but is capped at 60fps.
Jeffrey Blanz
Title renamed to more accurately reflect the bug.
visionOS removed because it is supported. I was using the simulator to test. The simulator is capped at 60fps while the actual device shows 90fps.
Antoine Quint
I am surprised that it is behaving differently between iPhone Pro and iPad Pro.
Radar WebKit Bug Importer
<rdar://problem/126067757>
Jeffrey Blanz
This is because native fps animations are not supported on iPhone Pros or Mac external displays above 120hz. Native fps animations are supported on iPads Pros, Macbook Pros, and Vision Pro.
Note: Chrome and Firefox support unlimited fps animations. The highest current monitor is 500hz and Chrome and Firefox support it.
Also Note: PWAs on Macbook Pros, iPhone Pros, and iPad Pros do not support native fps animations because the “prefer page rendering updates near 60fps” feature flag is on by default. PWAs only run off of system default feature flags.
Antoine Quint
We need to do the same thing for the CADisplayLink created in RemoteLayerTreeDrawingAreaProxyIOS that we did in WKKeyboardScrollingAnimator in 274234@main.
Antoine Quint
Pull request: https://github.com/WebKit/WebKit/pull/28729
Jeffrey Blanz
Not sure if it is possible to fix the iPhone bug as well as the Mac bug, but I got more information on the Mac bug:
When using Mac’s that have a built in screen (MacBook Pro, MacBook Air, iMac) and connecting them to an external display, the external display does not support the native refresh rate for safari.
If you close the lid of the MacBook, making the external display the main display, the monitor will correctly show the native refresh rate.
I actually can’t confirm that this happens on the iMac, but I can confirm this happens on the MacBook Pro and MacBook Air with the lid open. I am assuming the iMac might also have this issue because it also has its own screen, obviously.
I can also submit another bug form for the Mac bug if needed.
Also I have heard from a user in this form
Jeffrey Blanz
Accidentally hit save changes…
I have heard in this form (comment 53) https://bugs.webkit.org/show_bug.cgi?id=173434 that the M4 iPad Pros also do not support the 120hz requestanimationframe. The other iPad pros do, which I have a 2018 one and it works fine. I do not have a M4 iPad Pro to test this.
This may also need its own bug form. In case it doesn’t, and since this is probably a similar fix, I thought I would add.
EWS
Committed 278949@main (596b3b01497f): <https://commits.webkit.org/278949@main>
Reviewed commits have been landed. Closing PR #28729 and removing active labels.
Antoine Quint
I believe 278949@main will deal with the 2024 iPad Pro 120Hz requestAnimationFrame() issue.
Jeffrey Blanz
This has been fixed for iPhone Pros with iOS 18.0 dev beta 2.
Possible it was fixed in iOS 17.6 dev beta 1. I was already on 18, so I am not sure.
I also do not have a M4 iPad to test if the fix works for it also.
Antoine Quint
With a 2024 iPad Pro, I get 120fps updates on testufo.com when the flag is disabled, as expected.
Jeffrey Blanz
Getting 2 reports of it still being capped on a 15 Pro max.
Do you have the ability to test that?
Seems like the 13 Pros and 14 Pros are fixed. Probably would be smart to test all devices, but I have only gotten reports of 15 Pros max not working. I can confirm 13 Pro max and another person seems to confirm 14 Pro here: https://www.reddit.com/r/iOSBeta/s/S45Gt6hw9k
Antoine Quint
I had a colleague check with an iPhone 15 Pro and 120Hz was indeed reached, as expected. I have no reason to believe that iPhone 15 Pro Max would behave differently.
Jeffrey Blanz
I have verified this has been fixed on all affected devices.
I have also noticed the issue persists with PWAs on macOS, iOS, and iPadOS. It seems the “prefer page rendering updates near 60fps” feature flag does not affect PWAs. There are other feature flags that do affect PWAs, so it is surprising.
Not sure if it is something you could look into as well: https://bugs.webkit.org/show_bug.cgi?id=272226
This is easiest to test on Mac, open a PWA and find a link to TestUFO in that PWA, then open TestUFO in a new PWA window. There is a screenshot of this in the bug link above.
Jeffrey Blanz
This issue is still present on the iPhone 16 Pro and iPhone 16 Pro Max. I am currently using iOS 18.1 beta 4.
This issue is fixed on all other Apple devices including Macs, iPad Pros, and other iPhone Pros.
Jeffrey Blanz
Reopening
Antoine Quint
I don't think reopening is the best course of action here. This was filed before iPhone 16 was a thing. I would suggest filing a new bug.
Jeffrey Blanz
See new bug:
https://bugs.webkit.org/show_bug.cgi?id=280183