Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(20)

Issue 1833493003: Remove ForceHorriblySlowRectMapping (Closed)

Created:
4 years, 9 months ago by Xianzhu
Modified:
4 years, 8 months ago
CC:
blink-reviews, blink-reviews-layout_chromium.org, chromium-reviews, krit, eae+blinkwatch, f(malita), fs, gyuyoung2, jchaffraix+rendering, kouhei+svg_chromium.org, leviw+renderwatch, pdr+renderingwatchlist_chromium.org, pdr+svgwatchlist_chromium.org, rwlbuis, Stephen Chennney, szager+layoutwatch_chromium.org, zoltan1
Base URL:
https://chromium.googlesource.com/chromium/src.git@pi
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

Remove ForceHorriblySlowRectMapping Change paint invalidation tree walk to DOM-order instead of containing- block order for out-of-flow positioned objects so that we can track paint invalidation container and paint offset for them correctly without forcing slow mapping if possible. Move some cases to fast path: - Absolute-position objects (except the slow-path cases): track paint offset etc separately for them. See stacked objects for paint invalidation container tracking. - Stacked objects (including absolute-position objects): track paint invalidation container separately for them. Still use slow path for the following cases (conditions are in supportsCachedOffsets() and supportsCachedOffsetsForChildren()): - Absolute-position whose container is above the current paint invalidation container for stacked contents; - Fixed-position objects: normally its paint invalidation container is either the LayoutView or below its containing block, so slow- path is either not so slow, or fast-path is not feasible; - Multicolumn, SVGBlock, objects with reflection or filter. BUG=591199, 598094 Committed: https://crrev.com/bf7dc636b3ed84582375d2cebe613ffaf1c00794 Cr-Commit-Position: refs/heads/master@{#385056}

Patch Set 1 #

Patch Set 2 : #

Patch Set 3 : #

Patch Set 4 : #

Total comments: 5

Patch Set 5 : #

Total comments: 4

Patch Set 6 : Add markdown, etc. #

Total comments: 16

Patch Set 7 : #

Patch Set 8 : Rebase #

Total comments: 12

Patch Set 9 : #

Patch Set 10 : #

Total comments: 2
Unified diffs Side-by-side diffs Delta from patch set Stats (+253 lines, -184 lines) Patch
M third_party/WebKit/Source/core/layout/LayoutBlock.h View 1 2 3 4 1 chunk +0 lines, -1 line 0 comments Download
M third_party/WebKit/Source/core/layout/LayoutBlock.cpp View 1 2 3 4 1 chunk +0 lines, -43 lines 0 comments Download
M third_party/WebKit/Source/core/layout/LayoutBoxModelObject.cpp View 1 2 3 4 5 6 7 1 chunk +0 lines, -4 lines 0 comments Download
M third_party/WebKit/Source/core/layout/LayoutObject.h View 1 2 3 4 5 6 7 3 chunks +3 lines, -2 lines 0 comments Download
M third_party/WebKit/Source/core/layout/LayoutObject.cpp View 1 2 3 4 5 6 7 7 chunks +10 lines, -13 lines 2 comments Download
M third_party/WebKit/Source/core/layout/LayoutState.h View 2 chunks +0 lines, -3 lines 0 comments Download
M third_party/WebKit/Source/core/layout/LayoutView.h View 1 2 3 4 5 6 7 1 chunk +0 lines, -2 lines 0 comments Download
M third_party/WebKit/Source/core/layout/PaintInvalidationState.h View 1 2 3 4 5 6 5 chunks +32 lines, -37 lines 0 comments Download
M third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp View 1 2 3 4 5 6 7 8 9 12 chunks +130 lines, -60 lines 0 comments Download
M third_party/WebKit/Source/core/layout/svg/LayoutSVGBlock.h View 1 2 3 4 5 1 chunk +0 lines, -2 lines 0 comments Download
M third_party/WebKit/Source/core/layout/svg/LayoutSVGBlock.cpp View 1 2 3 4 5 1 chunk +0 lines, -10 lines 0 comments Download
M third_party/WebKit/Source/core/layout/svg/LayoutSVGText.cpp View 1 2 3 4 1 chunk +0 lines, -2 lines 0 comments Download
M third_party/WebKit/Source/core/paint/README.md View 1 2 3 4 5 6 7 8 3 chunks +78 lines, -5 lines 0 comments Download

Messages

Total messages: 31 (10 generated)
Xianzhu
4 years, 8 months ago (2016-03-29 23:04:30 UTC) #2
Xianzhu
https://codereview.chromium.org/1833493003/diff/60001/third_party/WebKit/Source/core/layout/LayoutBoxModelObject.cpp File third_party/WebKit/Source/core/layout/LayoutBoxModelObject.cpp (left): https://codereview.chromium.org/1833493003/diff/60001/third_party/WebKit/Source/core/layout/LayoutBoxModelObject.cpp#oldcode370 third_party/WebKit/Source/core/layout/LayoutBoxModelObject.cpp:370: // ASSERT(&newPaintInvalidationState.paintInvalidationContainer() == &containerForPaintInvalidation()); It's enough to check this ...
4 years, 8 months ago (2016-03-29 23:05:24 UTC) #3
chrishtr
https://codereview.chromium.org/1833493003/diff/60001/third_party/WebKit/Source/core/layout/LayoutObject.cpp File third_party/WebKit/Source/core/layout/LayoutObject.cpp (right): https://codereview.chromium.org/1833493003/diff/60001/third_party/WebKit/Source/core/layout/LayoutObject.cpp#newcode1344 third_party/WebKit/Source/core/layout/LayoutObject.cpp:1344: for (LayoutObject* child = slowFirstChild(); child; child = child->nextSibling()) ...
4 years, 8 months ago (2016-03-31 00:15:02 UTC) #5
Xianzhu
https://codereview.chromium.org/1833493003/diff/60001/third_party/WebKit/Source/core/layout/LayoutObject.cpp File third_party/WebKit/Source/core/layout/LayoutObject.cpp (right): https://codereview.chromium.org/1833493003/diff/60001/third_party/WebKit/Source/core/layout/LayoutObject.cpp#newcode1344 third_party/WebKit/Source/core/layout/LayoutObject.cpp:1344: for (LayoutObject* child = slowFirstChild(); child; child = child->nextSibling()) ...
4 years, 8 months ago (2016-03-31 01:41:28 UTC) #6
chrishtr
https://codereview.chromium.org/1833493003/diff/100001/third_party/WebKit/Source/core/paint/README.md File third_party/WebKit/Source/core/paint/README.md (right): https://codereview.chromium.org/1833493003/diff/100001/third_party/WebKit/Source/core/paint/README.md#newcode88 third_party/WebKit/Source/core/paint/README.md:88: * Paint invalidation container: an ancestor (crossing frame boundaries) ...
4 years, 8 months ago (2016-03-31 21:55:00 UTC) #7
trchen
https://codereview.chromium.org/1833493003/diff/100001/third_party/WebKit/Source/core/paint/README.md File third_party/WebKit/Source/core/paint/README.md (right): https://codereview.chromium.org/1833493003/diff/100001/third_party/WebKit/Source/core/paint/README.md#newcode90 third_party/WebKit/Source/core/paint/README.md:90: two paint invalidation containers for stacked contents and normal ...
4 years, 8 months ago (2016-03-31 22:00:38 UTC) #8
chrishtr
https://codereview.chromium.org/1833493003/diff/100001/third_party/WebKit/Source/core/layout/PaintInvalidationState.h File third_party/WebKit/Source/core/layout/PaintInvalidationState.h (right): https://codereview.chromium.org/1833493003/diff/100001/third_party/WebKit/Source/core/layout/PaintInvalidationState.h#newcode119 third_party/WebKit/Source/core/layout/PaintInvalidationState.h:119: // It is the nearest ancestor composited object which ...
4 years, 8 months ago (2016-03-31 22:06:05 UTC) #9
chrishtr
https://codereview.chromium.org/1833493003/diff/100001/third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp File third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp (right): https://codereview.chromium.org/1833493003/diff/100001/third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp#newcode106 third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp:106: if (m_currentObject != m_containerForAbsolutePosition) Can this slow path be ...
4 years, 8 months ago (2016-03-31 22:32:11 UTC) #10
Xianzhu
https://codereview.chromium.org/1833493003/diff/100001/third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp File third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp (right): https://codereview.chromium.org/1833493003/diff/100001/third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp#newcode106 third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp:106: if (m_currentObject != m_containerForAbsolutePosition) On 2016/03/31 22:32:11, chrishtr wrote: ...
4 years, 8 months ago (2016-04-01 16:07:56 UTC) #11
chrishtr
https://codereview.chromium.org/1833493003/diff/140001/third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp File third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp (right): https://codereview.chromium.org/1833493003/diff/140001/third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp#newcode35 third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp:35: if (object.styleRef().position() == FixedPosition) Is there a bug for ...
4 years, 8 months ago (2016-04-01 16:38:13 UTC) #12
Xianzhu
https://codereview.chromium.org/1833493003/diff/140001/third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp File third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp (right): https://codereview.chromium.org/1833493003/diff/140001/third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp#newcode35 third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp:35: if (object.styleRef().position() == FixedPosition) On 2016/04/01 16:38:13, chrishtr wrote: ...
4 years, 8 months ago (2016-04-01 17:07:22 UTC) #13
chrishtr
https://codereview.chromium.org/1833493003/diff/140001/third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp File third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp (right): https://codereview.chromium.org/1833493003/diff/140001/third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp#newcode35 third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp:35: if (object.styleRef().position() == FixedPosition) On 2016/04/01 at 17:07:21, Xianzhu ...
4 years, 8 months ago (2016-04-01 17:10:36 UTC) #14
chrishtr
lgtm LGTM after comment update. Great CL!
4 years, 8 months ago (2016-04-01 17:12:16 UTC) #15
Xianzhu
On 2016/04/01 17:10:36, chrishtr wrote: > https://codereview.chromium.org/1833493003/diff/140001/third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp > File third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp (right): > > https://codereview.chromium.org/1833493003/diff/140001/third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp#newcode35 > ...
4 years, 8 months ago (2016-04-01 17:23:10 UTC) #16
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1833493003/180001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1833493003/180001
4 years, 8 months ago (2016-04-04 19:51:55 UTC) #22
Xianzhu
We have got two UMA reports of Blink.PaintInvalidation.UpdateTime on Mac and Windows canary.
4 years, 8 months ago (2016-04-04 19:53:42 UTC) #23
commit-bot: I haz the power
Committed patchset #10 (id:180001)
4 years, 8 months ago (2016-04-04 23:53:06 UTC) #25
commit-bot: I haz the power
Patchset 10 (id:??) landed as https://crrev.com/bf7dc636b3ed84582375d2cebe613ffaf1c00794 Cr-Commit-Position: refs/heads/master@{#385056}
4 years, 8 months ago (2016-04-04 23:54:04 UTC) #27
leviw_travelin_and_unemployed
https://codereview.chromium.org/1833493003/diff/180001/third_party/WebKit/Source/core/layout/LayoutObject.cpp File third_party/WebKit/Source/core/layout/LayoutObject.cpp (right): https://codereview.chromium.org/1833493003/diff/180001/third_party/WebKit/Source/core/layout/LayoutObject.cpp#newcode3419 third_party/WebKit/Source/core/layout/LayoutObject.cpp:3419: for (LayoutObject* container = this->parentCrossingFrameBoundaries(); container && !container->shouldCheckForPaintInvalidationRegardlessOfPaintInvalidationState(); container ...
4 years, 8 months ago (2016-04-04 23:56:12 UTC) #29
leviw_travelin_and_unemployed
Also: Holy crap! It's dead!! My least favorite code to add, but favorite to name! ...
4 years, 8 months ago (2016-04-04 23:57:52 UTC) #30
Xianzhu
4 years, 8 months ago (2016-04-05 00:01:39 UTC) #31
Message was sent while issue was closed.
https://codereview.chromium.org/1833493003/diff/180001/third_party/WebKit/Sou...
File third_party/WebKit/Source/core/layout/LayoutObject.cpp (right):

https://codereview.chromium.org/1833493003/diff/180001/third_party/WebKit/Sou...
third_party/WebKit/Source/core/layout/LayoutObject.cpp:3419: for (LayoutObject*
container = this->parentCrossingFrameBoundaries(); container &&
!container->shouldCheckForPaintInvalidationRegardlessOfPaintInvalidationState();
container = container->parentCrossingFrameBoundaries())
On 2016/04/04 23:56:12, leviw wrote:
> Nit: s/container/parent/

Will upload a follow-up CL for this.

Powered by Google App Engine
This is Rietveld 408576698