Bug 114440 - Dynamically triggered subframe loads are causing tile churn
Summary: Dynamically triggered subframe loads are causing tile churn
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Layout and Rendering (show other bugs)
Version: 528+ (Nightly build)
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-04-11 07:12 PDT by Antti Koivisto
Modified: 2013-04-15 13:17 PDT (History)
6 users (show)

See Also:


Attachments
patch (5.82 KB, patch)
2013-04-15 05:25 PDT, Antti Koivisto
kling: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Antti Koivisto 2013-04-11 07:12:03 PDT
We use minimal tile coverage while page is loading. Subframe loads that start after the main load has finishes are causing us to re-enter minimal tiling mode, causing unnecessary churn.
Comment 1 Antti Koivisto 2013-04-11 07:14:01 PDT
This shows up in the tile map with speculative tiles disappearing and reappearing after end of the load.
Comment 2 Antti Koivisto 2013-04-15 05:25:34 PDT
Created attachment 198114 [details]
patch
Comment 3 Andreas Kling 2013-04-15 05:41:41 PDT
Comment on attachment 198114 [details]
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=198114&action=review

r=me, good catch. I wonder if there are cases where the window resize optimization is too clever and just causing churn.

> Source/WebCore/ChangeLog:8
> +        In some cases we switch in and out of minimal times multiple times during page loading. This

minimal times -> minimal tiles

> Source/WebCore/ChangeLog:9
> +        creates tile churn where we create speculatively tiles and then throw them out. This can be

speculatively -> speculative

> Source/WebCore/ChangeLog:16
> +            tiles while waiting response for the initial requests.

waiting -> awaiting

> Source/WebCore/ChangeLog:18
> +        (WebCore):

<darin>Please remove this useless line. Better yet, please fix the script to stop generating them!</darin>

> Source/WebCore/ChangeLog:28
> +                Only switch into minimal coverage mode once per page load.

Indentation is different here.

> Source/WebCore/rendering/RenderLayerBacking.cpp:226
> +        useMinimalTilesDuringLoading = !frameView->isVisuallyNonEmpty() || (frame->page()->progress()->isLoadProgressing() && !frameView->wasScrolledByUser());

"!frameView->isVisuallyNonEmpty()" :|
Comment 4 Antti Koivisto 2013-04-15 05:59:53 PDT
http://trac.webkit.org/changeset/148432
Comment 5 Simon Fraser (smfr) 2013-04-15 13:17:58 PDT
Comment on attachment 198114 [details]
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=198114&action=review

> Source/WebCore/rendering/RenderLayerBacking.h:312
> +    bool m_didSwitchToFullTileCoverageDuringLoading;

Shame to use a bool on every RLB when only the root needs one.