| Summary: | REGRESSION (iOS 15 / r275792): rAF sometimes seems to lose connection to v-sync signal and runs at < 60 fps | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Simon Taylor <simontaylor1> |
| Component: | Canvas | Assignee: | Simon Fraser (smfr) <simon.fraser> |
| Status: | RESOLVED FIXED | ||
| Severity: | Major | CC: | ap, dino, graouts, kkinnunen, mmaxfield, sabouhallawa, simon.fraser, webkit-bug-importer |
| Priority: | P2 | Keywords: | InRadar |
| Version: | Safari 15 | ||
| Hardware: | iPhone / iPad | ||
| OS: | iOS 15 | ||
| See Also: |
https://bugs.webkit.org/show_bug.cgi?id=234913 https://bugs.webkit.org/show_bug.cgi?id=235114 https://bugs.webkit.org/show_bug.cgi?id=224395 |
||
|
Description
Simon Taylor
2022-01-06 07:31:39 PST
Thank you for the report! Could you please confirm if this issue is new in iOS 15.x, or if it affected earlier versions too? (In reply to Alexey Proskuryakov from comment #1) > Thank you for the report! Could you please confirm if this issue is new in > iOS 15.x, or if it affected earlier versions too? I think it's a 15.x regression - I can't reproduce on a 14.8.1 iPhone 12 mini. 100% reproducible on iPhone 12 Pro and iPod touch 7th gen, both on 15.2. I don't have any devices on other 15.x releases I'm afraid. In terms of relation to Bug 235114 - they are distinct, but both hinting at issues on tabs becoming foregrounded. If you go back and forth to the demo on that page, you can repro this bug too. Note in "normal" case the rAF loop is < 60 FPS on the Bug 235114 demo page though - that's on purpose to trigger high clocks and keep the CPU busy. So that demo is typically 50 FPS unless this bug is also in play, when it'll drop to 25 FPS. > (In reply to Alexey Proskuryakov from comment #1)
> > Thank you for the report! Could you please confirm if this issue is new in
> > iOS 15.x, or if it affected earlier versions too?
>
> I think it's a 15.x regression - I can't reproduce on a 14.8.1 iPhone 12
> mini.
>
> 100% reproducible on iPhone 12 Pro and iPod touch 7th gen, both on 15.2. I
> don't have any devices on other 15.x releases I'm afraid.
It does also reproduce on the 15.0 Simulator if that helps narrow things down at all.
Still reproduces easily in iOS 15.4 beta 3, iPhone 12 Pro. Still with us on 15.4 beta 4 (verified on iPod touch 7th gen). RemoteLayerTreeDisplayRefreshMonitor::requestRefreshCallback() returns false because there is no m_drawingArea. As a result RenderingUpdateScheduler::scheduleRenderingUpdate() falls back to using a timer. This regressed with r275792, the fix for bug 224395. Pull request: https://github.com/WebKit/WebKit/pull/2113 Committed 252188@main (0842b6a96626): <https://commits.webkit.org/252188@main> Reviewed commits have been landed. Closing PR #2113 and removing active labels. Great, thanks for the fix. Another potential related issue that was much harder to reproduce - occasionally when initially viewing a tab (I commonly access pages via QR scans in the camera, and often from the same domain) I've seen it look like it's being actively throttled with a lower rAF rate - almost as if Webkit considers the tab to be a background one. Looking at the commit message (with a very limited understanding) - is it possible the same underlying bug might have caused this behaviour? It's possible, but if you can figure out steps to reproduce this reliably I can test it. I wasn't able to find reproduction steps last time I tried - it might be that Safari needs to have been idle for a while with some particular state of open tabs to trigger it, or it might just be something timing related that makes it not very reproducible anyway. Once this fix ships in an iOS release I'll keep my eye out for it. |