Bug 191632

Summary: Align Mac WK2 layer flush throttling with iOS
Product: WebKit Reporter: Antti Koivisto <koivisto>
Component: Layout and RenderingAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: bfulgham, commit-queue, ggaren, ryanhaddad, simon.fraser, tsavell, webkit-bug-importer, zalan
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
Bug Depends on: 191642    
Bug Blocks:    
Attachments:
Description Flags
patch none

Antti Koivisto
Reported 2018-11-14 06:18:28 PST
Currently Mac WK2 uses WebCore side throttling implementation in RenderLayerCompositor. This code has throttling timer per-frame while the actual decision making and layer flushes itself are per page. These timers generate way more flushes than expected in presence of multiple frames. There are also bugs in how flushing state is updated when frames are created dynamically. On iOS WK2 throttling is implemented on WebKit side and controlled by a per-page timer. Recent fixes also make this implementation visually fast. We should align the Mac implementation and eventually unify them.
Attachments
patch (10.31 KB, patch)
2018-11-14 07:22 PST, Antti Koivisto
no flags
Antti Koivisto
Comment 1 2018-11-14 07:22:25 PST
WebKit Commit Bot
Comment 2 2018-11-14 08:53:32 PST
Comment on attachment 354807 [details] patch Clearing flags on attachment: 354807 Committed r238178: <https://trac.webkit.org/changeset/238178>
WebKit Commit Bot
Comment 3 2018-11-14 08:53:34 PST
All reviewed patches have been landed. Closing bug.
Radar WebKit Bug Importer
Comment 4 2018-11-14 08:54:21 PST
Truitt Savell
Comment 5 2018-11-14 11:02:06 PST
The changes in https://trac.webkit.org/changeset/238178/webkit has caused these two tests to begin timing out on MacOS Release WK2: fast/forms/access-key-mutated.html fast/forms/access-key-case-insensitive.html Repro Command: run-webkit-tests --root testbuild-238178 fast/forms/access-key-mutated.html fast/forms/access-key-case-insensitive.html --iterations 5 -f These tests pass instantly on 238177.
Antti Koivisto
Comment 6 2018-11-14 11:11:58 PST
Filed https://bugs.webkit.org/show_bug.cgi?id=191642 for those, will skip meanwhile
Antti Koivisto
Comment 7 2018-11-14 11:19:29 PST
Simon Fraser (smfr)
Comment 8 2018-11-14 11:37:21 PST
Comment on attachment 354807 [details] patch View in context: https://bugs.webkit.org/attachment.cgi?id=354807&action=review > Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:221 > + m_hasPendingFlush = true; > + > + if (m_layerTreeStateIsFrozen) { > + m_isLayerFlushThrottlingTemporarilyDisabledForInteraction = false; > return; > + } > + > + if (m_isLayerFlushThrottlingTemporarilyDisabledForInteraction) { > + m_isLayerFlushThrottlingTemporarilyDisabledForInteraction = false; > + scheduleLayerFlushRunLoopObserver(); > + m_layerFlushThrottlingTimer.stop(); > + return; > + } > + > + if (m_layerFlushThrottlingTimer.isActive()) { > + ASSERT(m_isThrottlingLayerFlushes); > + return; > + } > + > + if (m_isThrottlingLayerFlushes) { > + startLayerFlushThrottlingTimer(); > + return; > + } So now this code exists in both TiledCoreAnimationDrawingArea and RemoteLayerTreeDrawingArea. Can we share code?
Antti Koivisto
Comment 9 2018-11-14 11:54:34 PST
> So now this code exists in both TiledCoreAnimationDrawingArea and > RemoteLayerTreeDrawingArea. Can we share code? Like the ChangeLog mentions, sharing is the next step.
Note You need to log in before you can comment on or make changes to this bug.