| Summary: |
"Commit time" data is wrong with UI-side compositing |
| Product: |
WebKit
|
Reporter: |
Simon Fraser (smfr) <simon.fraser> |
| Component: |
Web Inspector | Assignee: |
Nobody <webkit-unassigned> |
| Status: |
RESOLVED
DUPLICATE
|
|
|
| Severity: |
Normal
|
CC: |
inspector-bugzilla-changes, pangle, simon.fraser, thorton, webkit-bug-importer
|
| Priority: |
P2
|
Keywords: |
InRadar |
| Version: |
WebKit Nightly Build | |
|
| Hardware: |
Unspecified | |
|
| OS: |
Unspecified | |
|
| See Also: |
https://bugs.webkit.org/show_bug.cgi?id=249750
https://bugs.webkit.org/show_bug.cgi?id=249796
|
When web inspecting iOS, or macOS with UI-side compositing enabled, the green "commit time" events in the timeline are always short. I think they only track the time in the fake CA commit triggers in RemoteLayerTreeDrawingArea::displayDidRefresh(), because they are registered like this: void RemoteLayerTreeDrawingArea::addCommitHandlers() { if (m_webPage.firstFlushAfterCommit()) return; [CATransaction addCommitHandler:[retainedPage = Ref { m_webPage }] { if (Page* corePage = retainedPage->corePage()) { if (Frame* coreFrame = retainedPage->mainFrame()) corePage->inspectorController().willComposite(*coreFrame); } } forPhase:kCATransactionPhasePreLayout]; [CATransaction addCommitHandler:[retainedPage = Ref { m_webPage }] { if (Page* corePage = retainedPage->corePage()) { if (Frame* coreFrame = retainedPage->mainFrame()) corePage->inspectorController().didComposite(*coreFrame); } retainedPage->setFirstFlushAfterCommit(false); } forPhase:kCATransactionPhasePostCommit]; m_webPage.setFirstFlushAfterCommit(true); } This is wrong because there are no CA Commits (other than this garbage-collection one) in the web process.