New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 609937 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: Mar 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 3
Type: Bug

Blocking:
issue 472842
issue 481592



Sign in to add a comment

[SPv2] Build cc property trees from blink property trees

Project Member Reported by jbroman@chromium.org, May 6 2016

Issue description

For Slimming Paint v2, we'd ultimately like to build cc property trees rather than relying on BuildPropertyTrees. We also don't want to invest much more in the PaintArtifactCompositor code to build layer trees.

So let's build cc property trees and fix whatever gets in the way!
 
Project Member

Comment 1 by bugdroid1@chromium.org, May 11 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/344cbb8e333de10772422db6d0e60b14ea34ae98

commit 344cbb8e333de10772422db6d0e60b14ea34ae98
Author: jbroman <jbroman@chromium.org>
Date: Wed May 11 04:20:16 2016

[SPv2] Build trivial cc property trees in PaintArtifactCompositor.

This CL makes PaintArtifactCompositor create a set of minimal (two nodes each)
property trees, and a "flat" list of content layers. Creation of more complete
cc property trees is left to a subsequent CL.

This is the first step toward directly converting Blink property trees into
cc property trees without building an intermediate layer tree.

This is triggered by the use_layer_lists layer tree setting (which is set by
--enable-layer-lists, a flag that already exists). With this patch, some simple
pages start to look OK with "--enable-slimming-paint-v2 --enable-layer-lists".

This CL should have no effect if --enable-layer-lists is not used.

BUG= 609937 
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel

Review-Url: https://codereview.chromium.org/1956853002
Cr-Commit-Position: refs/heads/master@{#392847}

[modify] https://crrev.com/344cbb8e333de10772422db6d0e60b14ea34ae98/cc/trees/layer_tree_host.cc
[modify] https://crrev.com/344cbb8e333de10772422db6d0e60b14ea34ae98/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.cpp
[modify] https://crrev.com/344cbb8e333de10772422db6d0e60b14ea34ae98/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositorTest.cpp
[modify] https://crrev.com/344cbb8e333de10772422db6d0e60b14ea34ae98/third_party/WebKit/Source/platform/testing/WebLayerTreeViewImplForTesting.cpp
[modify] https://crrev.com/344cbb8e333de10772422db6d0e60b14ea34ae98/third_party/WebKit/Source/platform/testing/WebLayerTreeViewImplForTesting.h

Project Member

Comment 2 by bugdroid1@chromium.org, Jun 15 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/42bd157c539c940682856a55860fbaea6e02f9fe

commit 42bd157c539c940682856a55860fbaea6e02f9fe
Author: trchen <trchen@chromium.org>
Date: Wed Jun 15 11:11:17 2016

Add effect node support in PaintArtifactCompositor for layer list mode [1/4]

This CL refactor PaintArtifactCompositor::layerForPaintChunk so conceptually
it only creates the contents of the layer, while other layer properties will
be setup by the caller. This is because the legacy mode and layer list mode
use different API level to position layers.

BUG= 609937 

Review-Url: https://codereview.chromium.org/2042403005
Cr-Commit-Position: refs/heads/master@{#399881}

[modify] https://crrev.com/42bd157c539c940682856a55860fbaea6e02f9fe/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.cpp
[modify] https://crrev.com/42bd157c539c940682856a55860fbaea6e02f9fe/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.h

Project Member

Comment 3 by bugdroid1@chromium.org, Jun 15 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/dc77f5550dd3e2f01663d5463fc761e49eab6d34

commit dc77f5550dd3e2f01663d5463fc761e49eab6d34
Author: trchen <trchen@chromium.org>
Date: Wed Jun 15 20:30:02 2016

Add effect node support in PaintArtifactCompositor for layer list mode [2/4]

This CL splits PaintArtifactCompositor::update into legacy mode and layer
list mode. It expected that the code paths will diverge as we develop the
layer list mode.

BUG= 609937 

Review-Url: https://codereview.chromium.org/2049933003
Cr-Commit-Position: refs/heads/master@{#400001}

[modify] https://crrev.com/dc77f5550dd3e2f01663d5463fc761e49eab6d34/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.cpp
[modify] https://crrev.com/dc77f5550dd3e2f01663d5463fc761e49eab6d34/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.h

Project Member

Comment 4 by bugdroid1@chromium.org, Jun 29 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/5728c6c98599daf1bde6ea1c28737e8cec4471bf

commit 5728c6c98599daf1bde6ea1c28737e8cec4471bf
Author: trchen <trchen@chromium.org>
Date: Wed Jun 29 22:27:33 2016

Add effect node support in PaintArtifactCompositor for layer list mode [3/4]

This CL trims down the number of properties we assign to generated cc property
nodes to the absolute minimum that cc doesn't crash.

BUG= 609937 

Review-Url: https://codereview.chromium.org/2052743002
Cr-Commit-Position: refs/heads/master@{#402957}

[modify] https://crrev.com/5728c6c98599daf1bde6ea1c28737e8cec4471bf/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.cpp

Project Member

Comment 5 by bugdroid1@chromium.org, Jul 10 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/889b2a8057be02fefc2fdd9e5deb289844f94040

commit 889b2a8057be02fefc2fdd9e5deb289844f94040
Author: trchen <trchen@chromium.org>
Date: Sun Jul 10 00:26:43 2016

Add effect node support in PaintArtifactCompositor for layer list mode [4/4]

This CL adds a local EffectStack class similar to ClipManager, that keep track
of effect state and assign generated cc effect node to layers. This is only
used for layer list mode.

BUG= 609937 

Review-Url: https://codereview.chromium.org/2052763002
Cr-Commit-Position: refs/heads/master@{#404575}

[modify] https://crrev.com/889b2a8057be02fefc2fdd9e5deb289844f94040/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.cpp
[modify] https://crrev.com/889b2a8057be02fefc2fdd9e5deb289844f94040/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositorTest.cpp

Project Member

Comment 6 by bugdroid1@chromium.org, Jul 11 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a86f5c887ea55c84854e4f13cf482975ee307ff4

commit a86f5c887ea55c84854e4f13cf482975ee307ff4
Author: yukishiino <yukishiino@chromium.org>
Date: Mon Jul 11 09:28:21 2016

Revert of Add effect node support in PaintArtifactCompositor for layer list mode [4/4] (patchset #7 id:120001 of https://codereview.chromium.org/2052763002/ )

Reason for revert:
This CL seems making webkit_unit_tests' failures.

https://findit-for-me.appspot.com/waterfall/build-failure?url=https://build.chromium.org/p/chromium.webkit/builders/WebKit%20Linux%20(dbg)/builds/8344

https://build.chromium.org/p/chromium.webkit/builders/WebKit%20Linux%20(dbg)/builds/8334

Original issue's description:
> Add effect node support in PaintArtifactCompositor for layer list mode [4/4]
>
> This CL adds a local EffectStack class similar to ClipManager, that keep track
> of effect state and assign generated cc effect node to layers. This is only
> used for layer list mode.
>
> BUG= 609937 
>
> Committed: https://crrev.com/889b2a8057be02fefc2fdd9e5deb289844f94040
> Cr-Commit-Position: refs/heads/master@{#404575}

TBR=jbroman@chromium.org,chrishtr@chromium.org,trchen@chromium.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG= 609937 

Review-Url: https://codereview.chromium.org/2138663002
Cr-Commit-Position: refs/heads/master@{#404622}

[modify] https://crrev.com/a86f5c887ea55c84854e4f13cf482975ee307ff4/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.cpp
[modify] https://crrev.com/a86f5c887ea55c84854e4f13cf482975ee307ff4/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositorTest.cpp

Project Member

Comment 7 by bugdroid1@chromium.org, Jul 14 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0ab96293282e024c9f54c956ba0c8a675ae8c6db

commit 0ab96293282e024c9f54c956ba0c8a675ae8c6db
Author: trchen <trchen@chromium.org>
Date: Thu Jul 14 04:10:32 2016

(Reland) Add effect node support in PaintArtifactCompositor for layer list mode [4/4]

This CL adds a local EffectStack class similar to ClipManager, that keep track
of effect state and assign generated cc effect node to layers. This is only
used for layer list mode.

BUG= 609937 

Review-Url: https://codereview.chromium.org/2145753002
Cr-Commit-Position: refs/heads/master@{#405432}

[modify] https://crrev.com/0ab96293282e024c9f54c956ba0c8a675ae8c6db/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.cpp
[modify] https://crrev.com/0ab96293282e024c9f54c956ba0c8a675ae8c6db/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositorTest.cpp

Owner: trchen@chromium.org
Project Member

Comment 9 by bugdroid1@chromium.org, Oct 26 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/cc0a80b553ea2fa25b9d5804d9c18079904351bd

commit cc0a80b553ea2fa25b9d5804d9c18079904351bd
Author: trchen <trchen@chromium.org>
Date: Wed Oct 26 01:26:10 2016

[SPv2] Create effect nodes for CSS filter

This CL does the following two things:
* Add filter related properties to EffectPaintPropertyNode
* Add CSS effect support to PaintPropertyTreeBuilder

What's not in the scope of this CL:
* Compile filter property from Blink effect node to CC effect node

BUG= 609937 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2

Review-Url: https://codereview.chromium.org/2428513004
Cr-Commit-Position: refs/heads/master@{#427565}

[modify] https://crrev.com/cc0a80b553ea2fa25b9d5804d9c18079904351bd/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp
[modify] https://crrev.com/cc0a80b553ea2fa25b9d5804d9c18079904351bd/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilderTest.cpp
[modify] https://crrev.com/cc0a80b553ea2fa25b9d5804d9c18079904351bd/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositorTest.cpp
[modify] https://crrev.com/cc0a80b553ea2fa25b9d5804d9c18079904351bd/third_party/WebKit/Source/platform/graphics/paint/EffectPaintPropertyNode.h
[modify] https://crrev.com/cc0a80b553ea2fa25b9d5804d9c18079904351bd/third_party/WebKit/Source/platform/graphics/paint/GeometryMapperTest.cpp
[modify] https://crrev.com/cc0a80b553ea2fa25b9d5804d9c18079904351bd/third_party/WebKit/Source/platform/graphics/paint/PaintArtifactToSkCanvasTest.cpp
[modify] https://crrev.com/cc0a80b553ea2fa25b9d5804d9c18079904351bd/third_party/WebKit/Source/platform/graphics/paint/PaintChunkerTest.cpp
[modify] https://crrev.com/cc0a80b553ea2fa25b9d5804d9c18079904351bd/third_party/WebKit/Source/platform/graphics/paint/PaintControllerTest.cpp

Project Member

Comment 10 by bugdroid1@chromium.org, Nov 29 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b91d2f0d740683d361ba648148f5dd492552fdfb

commit b91d2f0d740683d361ba648148f5dd492552fdfb
Author: trchen <trchen@chromium.org>
Date: Tue Nov 29 04:17:31 2016

[SPv2] Add filter support in PaintArtifactCompositor

This CL enables CSS filter support by doing the following:

1. Now each effect node creates a render surface by default. This wasn't needed
before because cc can apply accumulated transparency on layers directly, as
long as the layers don't overlap. Filters always need render surface to apply.
This also fixes multiple overlapping paint chunks under same opacity group.

2. Ensure proper clip nesting in compositing tree. The concept of input clip
is introduced in effect node. The input clip node itself is not stored on the
effect node but only computed during property tree building. The input clip
represents the cull region for the compositing children of the effect. The
input clip must be a common ancestor of all child paint chunk's clip node and
child effect's output clip.

3. Because of 2., we no longer creates dummy clip node for effects.

4. Copy blink effect filter to cc effect, which is one line.

BUG= 609937 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2

Review-Url: https://codereview.chromium.org/2495973002
Cr-Commit-Position: refs/heads/master@{#434888}

[modify] https://crrev.com/b91d2f0d740683d361ba648148f5dd492552fdfb/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2
[modify] https://crrev.com/b91d2f0d740683d361ba648148f5dd492552fdfb/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp
[modify] https://crrev.com/b91d2f0d740683d361ba648148f5dd492552fdfb/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.h
[modify] https://crrev.com/b91d2f0d740683d361ba648148f5dd492552fdfb/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.cpp

Project Member

Comment 11 by bugdroid1@chromium.org, Dec 15 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/bdc8576be81b557e582029633b76e509f15bd18f

commit bdc8576be81b557e582029633b76e509f15bd18f
Author: trchen <trchen@chromium.org>
Date: Thu Dec 15 07:30:13 2016

[SPv2] Add CSS mix-blend-mode support

This CL adds blendMode field to EffectPaintPropertyNode, upgrades
PaintPropertyTreeBuilder to create effect nodes if CSS mix-blend-mode is
applied to an element and ensure propery isolation on the parent, and adds
corresponding conversion in PaintArtifactCompositor.

BUG= 609937 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2

Review-Url: https://codereview.chromium.org/2564193002
Cr-Commit-Position: refs/heads/master@{#438775}

[modify] https://crrev.com/bdc8576be81b557e582029633b76e509f15bd18f/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2
[modify] https://crrev.com/bdc8576be81b557e582029633b76e509f15bd18f/third_party/WebKit/Source/core/layout/svg/LayoutSVGContainer.cpp
[modify] https://crrev.com/bdc8576be81b557e582029633b76e509f15bd18f/third_party/WebKit/Source/core/layout/svg/LayoutSVGRoot.cpp
[modify] https://crrev.com/bdc8576be81b557e582029633b76e509f15bd18f/third_party/WebKit/Source/core/paint/PaintLayer.cpp
[modify] https://crrev.com/bdc8576be81b557e582029633b76e509f15bd18f/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp
[modify] https://crrev.com/bdc8576be81b557e582029633b76e509f15bd18f/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.cpp
[modify] https://crrev.com/bdc8576be81b557e582029633b76e509f15bd18f/third_party/WebKit/Source/platform/graphics/paint/EffectPaintPropertyNode.cpp
[modify] https://crrev.com/bdc8576be81b557e582029633b76e509f15bd18f/third_party/WebKit/Source/platform/graphics/paint/EffectPaintPropertyNode.h
[modify] https://crrev.com/bdc8576be81b557e582029633b76e509f15bd18f/third_party/WebKit/Source/platform/testing/PaintPropertyTestHelpers.h

Status: Fixed (was: Started)
Let's call this fixed. Seems ok?

Sign in to add a comment