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

Issue 1284203004: Generate scroll/clip display item hierarchy for SPv2 (Closed)

Created:
5 years, 4 months ago by trchen
Modified:
5 years, 1 month ago
CC:
aelias_OOO_until_Jul13, blink-reviews, blink-reviews-paint_chromium.org, Rik, danakj, dshwang, drott+blinkwatch_chromium.org, krit, f(malita), Justin Novosad, pdr., pdr+graphicswatchlist_chromium.org, rwlbuis, Stephen Chennney, skobes, slimming-paint-reviews_chromium.org
Target Ref:
refs/heads/master
Project:
blink
Visibility:
Public.

Description

Generate clip/scroll display item hierarchy for SPv2 This CL is a preparation for impl-side scrolling support for SPv2. In the old world, when we paint a stacking context (i.e. self-painting layer) we compute the accumulated clip and scroll offset up to the painting root (i.e. usually the invalidation backing, but may be shifted by 2D transform). In order to support impl-side scrolling we need to send the full clip/scroll hierarchy to cc, so the accumulated clip/scroll can be recomputed. This CL should not affect SPv1. Any difference is unintentional. Significant change is being made to display item list generation. In the past, each self-painting layer is responsible for applying its own accumulated clip/scroll. In other words, the graphics context is passed to DPLPainter in the unclipped/unscrolled space. With this change, each layer applies its own clip/scroll before passing the graphics context to children. Things that are not implemented in this CL (possible follow-up tasks): 1. Generate scroll and transform nodes for scroll items in the tree builder. 2. Clip / transform warping for fixed-position elements. 3. Transformed layers are clipped incorrectly. 4. CSS clip. (crbug.com/527568) 5. Pagination / CSS multicol. BUG=521179, 527568

Patch Set 1 #

Patch Set 2 : rebase #

Patch Set 3 : fix crash #

Patch Set 4 : still long way to go #

Total comments: 12

Patch Set 5 : add overflow clips back #

Patch Set 6 : add fixed-pos workaround #

Patch Set 7 : rebase, s/Sans/Exclude/, enumify #

Patch Set 8 : fix build #

Patch Set 9 : more fixed-pos workaround & update test & add test #

Patch Set 10 : Fix failing test. Update test expectation. #

Total comments: 29

Patch Set 11 : revise #

Patch Set 12 : rebase #

Patch Set 13 : fix assertion failure #

Total comments: 22

Patch Set 14 : rebase & address comments. have not splitted fixed-pos workaround yet. #

Patch Set 15 : stripped localPaintingInfo cleanup and fixed-pos workarounds #

Total comments: 17
Unified diffs Side-by-side diffs Delta from patch set Stats (+354 lines, -16 lines) Patch
M Source/core/core.gypi View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +2 lines, -0 lines 0 comments Download
M Source/core/layout/compositing/CompositedDeprecatedPaintLayerMapping.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +1 line, -1 line 3 comments Download
M Source/core/paint/BoxClipper.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 3 chunks +3 lines, -3 lines 2 comments Download
M Source/core/paint/DeprecatedPaintLayer.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 2 chunks +10 lines, -2 lines 0 comments Download
M Source/core/paint/DeprecatedPaintLayer.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 4 chunks +18 lines, -6 lines 1 comment Download
M Source/core/paint/DeprecatedPaintLayerPainter.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +1 line, -0 lines 0 comments Download
M Source/core/paint/DeprecatedPaintLayerPainter.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 7 chunks +113 lines, -3 lines 9 comments Download
M Source/core/paint/DisplayItemListPaintTest.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +120 lines, -0 lines 2 comments Download
M Source/core/paint/FilterPainter.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +1 line, -1 line 0 comments Download
M Source/core/paint/LayerClipRecorder.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +2 lines, -0 lines 0 comments Download
A Source/core/paint/LayerDescendantClipRecorder.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +35 lines, -0 lines 0 comments Download
A Source/core/paint/LayerDescendantClipRecorder.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +46 lines, -0 lines 0 comments Download
M Source/platform/graphics/paint/DisplayItem.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +1 line, -0 lines 0 comments Download
M Source/platform/graphics/paint/DisplayItem.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +1 line, -0 lines 0 comments Download

Messages

Total messages: 58 (13 generated)
trchen
This is an early preview for the design described in https://docs.google.com/a/chromium.org/document/d/1UV6R_o3iccxwsZzakiipWbQrGNtVxsB-QVzMk9sqb4U/edit?usp=sharing Parts yet need to ...
5 years, 4 months ago (2015-08-13 04:30:08 UTC) #2
Xianzhu
Is there a bug for this CL? I'd like to see a test case for ...
5 years, 4 months ago (2015-08-18 21:52:04 UTC) #5
trchen
On 2015/08/18 21:52:04, Xianzhu wrote: > Is there a bug for this CL? I'd like ...
5 years, 4 months ago (2015-08-18 22:17:14 UTC) #6
pdr.
I like where this is going but we still need tests (unit tests please). This ...
5 years, 4 months ago (2015-08-25 20:47:55 UTC) #8
trchen
Today's update: Now it generates correct overflow clip hierarchy! However many of the scroll/clip display ...
5 years, 3 months ago (2015-08-26 07:39:04 UTC) #10
commit-bot: I haz the power
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1284203004/220001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1284203004/220001
5 years, 3 months ago (2015-09-02 22:17:43 UTC) #12
trchen
Ready for review! :) https://codereview.chromium.org/1284203004/diff/220001/Source/core/paint/DeprecatedPaintLayerPainter.cpp File Source/core/paint/DeprecatedPaintLayerPainter.cpp (right): https://codereview.chromium.org/1284203004/diff/220001/Source/core/paint/DeprecatedPaintLayerPainter.cpp#newcode291 Source/core/paint/DeprecatedPaintLayerPainter.cpp:291: if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) { This change ...
5 years, 3 months ago (2015-09-02 22:55:38 UTC) #13
commit-bot: I haz the power
Dry run: This issue passed the CQ dry run.
5 years, 3 months ago (2015-09-03 00:07:23 UTC) #15
pdr.
Lots of great stuff in this patch. Half my comments are just requests to pull ...
5 years, 3 months ago (2015-09-03 06:16:59 UTC) #16
trchen
https://codereview.chromium.org/1284203004/diff/220001/Source/core/paint/BoxClipper.cpp File Source/core/paint/BoxClipper.cpp (right): https://codereview.chromium.org/1284203004/diff/220001/Source/core/paint/BoxClipper.cpp#newcode27 Source/core/paint/BoxClipper.cpp:27: bool isOverflowClip = m_box.hasOverflowClip() && (!m_box.layer()->isSelfPaintingLayer() || RuntimeEnabledFeatures::slimmingPaintV2Enabled()); On ...
5 years, 3 months ago (2015-09-04 06:10:15 UTC) #17
commit-bot: I haz the power
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1284203004/260001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1284203004/260001
5 years, 3 months ago (2015-09-04 06:10:34 UTC) #19
commit-bot: I haz the power
Dry run: Try jobs failed on following builders: linux_chromium_rel_ng on tryserver.chromium.linux (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.linux/builders/linux_chromium_rel_ng/builds/108243)
5 years, 3 months ago (2015-09-04 07:16:18 UTC) #21
commit-bot: I haz the power
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1284203004/280001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1284203004/280001
5 years, 3 months ago (2015-09-04 21:13:15 UTC) #23
commit-bot: I haz the power
Dry run: Try jobs failed on following builders: chromium_presubmit on tryserver.chromium.linux (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.linux/builders/chromium_presubmit/builds/96835)
5 years, 3 months ago (2015-09-04 21:24:51 UTC) #25
pdr.
Looking good, lets shoot for landing this Wednesday. https://codereview.chromium.org/1284203004/diff/280001/Source/core/paint/DeprecatedPaintLayer.cpp File Source/core/paint/DeprecatedPaintLayer.cpp (right): https://codereview.chromium.org/1284203004/diff/280001/Source/core/paint/DeprecatedPaintLayer.cpp#newcode716 Source/core/paint/DeprecatedPaintLayer.cpp:716: // ...
5 years, 3 months ago (2015-09-08 04:23:54 UTC) #27
Ian Vollick
On 2015/09/08 04:23:54, pdr wrote: > Looking good, lets shoot for landing this Wednesday. > ...
5 years, 3 months ago (2015-09-09 19:50:26 UTC) #28
jbroman
I hope you don't mind a couple nits. https://codereview.chromium.org/1284203004/diff/280001/Source/core/paint/DeprecatedPaintLayer.h File Source/core/paint/DeprecatedPaintLayer.h (right): https://codereview.chromium.org/1284203004/diff/280001/Source/core/paint/DeprecatedPaintLayer.h#newcode153 Source/core/paint/DeprecatedPaintLayer.h:153: LayoutPoint ...
5 years, 3 months ago (2015-09-09 19:58:31 UTC) #29
jbroman
One other question (at the risk of bikeshedding): vollick@ recently reminded me that absolute-positioned content ...
5 years, 3 months ago (2015-09-10 15:20:57 UTC) #30
trchen
https://codereview.chromium.org/1284203004/diff/280001/Source/core/paint/DeprecatedPaintLayer.cpp File Source/core/paint/DeprecatedPaintLayer.cpp (right): https://codereview.chromium.org/1284203004/diff/280001/Source/core/paint/DeprecatedPaintLayer.cpp#newcode716 Source/core/paint/DeprecatedPaintLayer.cpp:716: // Our m_location already has scroll offset baked-in. We ...
5 years, 3 months ago (2015-09-15 04:48:40 UTC) #31
trchen
On 2015/09/09 19:50:26, vollick wrote: > This is perhaps a dumb question, but it looks ...
5 years, 3 months ago (2015-09-15 04:58:12 UTC) #32
pdr.
LGTM I'd like either chrishtr or wangxianzhu to give this an LGTM as well.
5 years, 3 months ago (2015-09-15 23:02:13 UTC) #33
Xianzhu
lgtm https://codereview.chromium.org/1284203004/diff/320001/Source/core/paint/DisplayItemListPaintTest.cpp File Source/core/paint/DisplayItemListPaintTest.cpp (right): https://codereview.chromium.org/1284203004/diff/320001/Source/core/paint/DisplayItemListPaintTest.cpp#newcode159 Source/core/paint/DisplayItemListPaintTest.cpp:159: TEST_F(DisplayItemListPaintTestForSlimmingPaintV2, OverflowClipHierarchy) Can this be moved into DeprecatedPaintLayerPainterTest.cpp?
5 years, 3 months ago (2015-09-15 23:40:13 UTC) #34
chrishtr
Reviewing now. Please don't commit just yet.
5 years, 3 months ago (2015-09-16 18:28:37 UTC) #35
chrishtr
https://codereview.chromium.org/1284203004/diff/320001/Source/core/layout/compositing/CompositedDeprecatedPaintLayerMapping.cpp File Source/core/layout/compositing/CompositedDeprecatedPaintLayerMapping.cpp (right): https://codereview.chromium.org/1284203004/diff/320001/Source/core/layout/compositing/CompositedDeprecatedPaintLayerMapping.cpp#newcode2108 Source/core/layout/compositing/CompositedDeprecatedPaintLayerMapping.cpp:2108: if (!(paintLayerFlags & PaintLayerPaintingOverflowContents) && !RuntimeEnabledFeatures::slimmingPaintV2Enabled()) { Why this ...
5 years, 3 months ago (2015-09-17 00:53:47 UTC) #36
trchen
https://codereview.chromium.org/1284203004/diff/320001/Source/core/layout/compositing/CompositedDeprecatedPaintLayerMapping.cpp File Source/core/layout/compositing/CompositedDeprecatedPaintLayerMapping.cpp (right): https://codereview.chromium.org/1284203004/diff/320001/Source/core/layout/compositing/CompositedDeprecatedPaintLayerMapping.cpp#newcode2108 Source/core/layout/compositing/CompositedDeprecatedPaintLayerMapping.cpp:2108: if (!(paintLayerFlags & PaintLayerPaintingOverflowContents) && !RuntimeEnabledFeatures::slimmingPaintV2Enabled()) { On 2015/09/17 ...
5 years, 3 months ago (2015-09-17 01:56:04 UTC) #37
chrishtr
On 2015/09/17 at 01:56:04, trchen wrote: > https://codereview.chromium.org/1284203004/diff/320001/Source/core/layout/compositing/CompositedDeprecatedPaintLayerMapping.cpp > File Source/core/layout/compositing/CompositedDeprecatedPaintLayerMapping.cpp (right): > > https://codereview.chromium.org/1284203004/diff/320001/Source/core/layout/compositing/CompositedDeprecatedPaintLayerMapping.cpp#newcode2108 ...
5 years, 3 months ago (2015-09-17 16:02:53 UTC) #38
chrishtr
Ok I'm now on board with the approach in this CL, as long as we ...
5 years, 3 months ago (2015-09-17 18:07:53 UTC) #39
chrishtr
trchen, pdr, wangxianzhu and I just had a long and productive meeting about this patch ...
5 years, 3 months ago (2015-09-18 20:28:36 UTC) #41
chrishtr
There was also an action item for trchen to upload some more test cases for ...
5 years, 3 months ago (2015-09-18 21:39:07 UTC) #42
chrishtr
Re clips vs overflow clips and having to go up to the root to generate ...
5 years, 3 months ago (2015-09-19 00:15:21 UTC) #43
trchen
On 2015/09/19 00:15:21, chrishtr wrote: > Re clips vs overflow clips and having to go ...
5 years, 3 months ago (2015-09-19 00:36:53 UTC) #44
chrishtr
On 2015/09/19 at 00:36:53, trchen wrote: > On 2015/09/19 00:15:21, chrishtr wrote: > > Re ...
5 years, 3 months ago (2015-09-19 00:55:08 UTC) #45
trchen
On 2015/09/19 00:55:08, chrishtr wrote: > On 2015/09/19 at 00:36:53, trchen wrote: > > On ...
5 years, 3 months ago (2015-09-19 00:58:33 UTC) #46
chrishtr
On 2015/09/19 at 00:58:33, trchen wrote: > On 2015/09/19 00:55:08, chrishtr wrote: > > On ...
5 years, 3 months ago (2015-09-19 01:03:04 UTC) #47
chrishtr
On 2015/09/19 at 01:03:04, chrishtr wrote: > On 2015/09/19 at 00:58:33, trchen wrote: > > ...
5 years, 3 months ago (2015-09-19 01:03:18 UTC) #48
trchen
On 2015/09/19 01:03:18, chrishtr wrote: > On 2015/09/19 at 01:03:04, chrishtr wrote: > > On ...
5 years, 3 months ago (2015-09-19 04:07:47 UTC) #49
mstensho (USE GERRIT)
On 2015/09/18 20:28:36, chrishtr wrote: > trchen, pdr, wangxianzhu and I just had a long ...
5 years, 3 months ago (2015-09-21 20:45:21 UTC) #50
chrishtr
On 2015/09/21 at 20:45:21, mstensho wrote: > On 2015/09/18 20:28:36, chrishtr wrote: > > trchen, ...
5 years, 3 months ago (2015-09-21 21:15:48 UTC) #51
chrishtr
On 2015/09/19 at 04:07:47, trchen wrote: > On 2015/09/19 01:03:18, chrishtr wrote: > > On ...
5 years, 3 months ago (2015-09-21 22:14:58 UTC) #52
trchen
On 2015/09/21 22:14:58, chrishtr wrote: > On 2015/09/19 at 04:07:47, trchen wrote: > > On ...
5 years, 3 months ago (2015-09-21 22:49:19 UTC) #53
trchen
On 2015/09/21 20:45:21, mstensho wrote: > On 2015/09/18 20:28:36, chrishtr wrote: > > trchen, pdr, ...
5 years, 3 months ago (2015-09-21 23:33:20 UTC) #54
mstensho (USE GERRIT)
On 2015/09/21 23:33:20, trchen wrote: > On 2015/09/21 20:45:21, mstensho wrote: > > On 2015/09/18 ...
5 years, 3 months ago (2015-09-22 12:48:14 UTC) #55
chrishtr
I think this CL should be ok with the referenced optimizations, and also a plan ...
5 years, 3 months ago (2015-09-22 18:32:56 UTC) #56
trchen
On 2015/09/22 12:48:14, mstensho wrote: > On 2015/09/21 23:33:20, trchen wrote: > > On 2015/09/21 ...
5 years, 3 months ago (2015-09-22 21:27:09 UTC) #57
trchen
5 years, 1 month ago (2015-11-13 23:51:13 UTC) #58
Closing because we are doing an alternative implementation to add a pre-paint
phase to generate property trees.

Powered by Google App Engine
This is Rietveld 408576698