[Webkit-unassigned] [Bug 113786] Throttle compositing layer flushes during page loading

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Fri Apr 5 11:52:13 PDT 2013


https://bugs.webkit.org/show_bug.cgi?id=113786





--- Comment #11 from Simon Fraser (smfr) <simon.fraser at apple.com>  2013-04-05 11:50:24 PST ---
(From update of attachment 196647)
View in context: https://bugs.webkit.org/attachment.cgi?id=196647&action=review

> Source/WebCore/ChangeLog:24
> +            Track if the document load is progressing. This is done with a heartbeat timer that checks every 100ms if we have received more than 1k of data.

Is that bytes for just the main resource, or any resources?

> Source/WebCore/ChangeLog:25
> +            If four heartbeats pass without progress then we consider the load stalled.

This doesn't agree with static const unsigned maximumHeartbeatsWithNoProgress= 3;

> Source/WebCore/page/FrameView.cpp:2325
> +void FrameView::updateLayerFlushThrottling(bool isLoadProgressing)
> +{
> +#if USE(ACCELERATED_COMPOSITING)
> +    if (RenderView* view = renderView())
> +        view->compositor()->setLayerFlushThrottlingEnabled(isLoadProgressing);
> +#else
> +    UNUSED_PARAM(isLoadProgressing);
> +#endif
> +}

Every frame has a RLC. Will this do throttling in every frame, or just the main frame? How does the ProgressTracker stuff interact with different frames?

> Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:3074
> +    if ((!hadUncommittedChanged || couldThrottleLayerFlush != canThrottleLayerFlush()) && m_client)

couldThrottleLayerFlush != canThrottleLayerFlush() is really confusing. Why is this necessary, since the notifyFlushRequired() can detect changes that should not be throttled?

> Source/WebCore/rendering/RenderLayerCompositor.cpp:3198
> +void RenderLayerCompositor::startLayerFlushThrottlingTimerIfNeeded()
> +{
> +    m_layerFlushThrottlingTemporarilyDisabledForInteraction = false;
> +    m_layerFlushThrottlingTimer.stop();
> +    if (!m_layerFlushThrottlingEnabled)
> +        return;
> +    m_layerFlushThrottlingTimer.startOneShot(throttledLayerFlushDelay);
> +}

This isn't a layerFlushThrottlingTimer, it's just a layerFlushTimer.

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.


More information about the webkit-unassigned mailing list