| Index: third_party/WebKit/Source/platform/graphics/paint/PropertyTreeState.cpp
|
| diff --git a/third_party/WebKit/Source/platform/graphics/paint/PropertyTreeState.cpp b/third_party/WebKit/Source/platform/graphics/paint/PropertyTreeState.cpp
|
| index 1b07e9698f63c204499401e4307b032767eb1e7f..ce23989edab2a0a3a723afd0f96cfb3910a5dd70 100644
|
| --- a/third_party/WebKit/Source/platform/graphics/paint/PropertyTreeState.cpp
|
| +++ b/third_party/WebKit/Source/platform/graphics/paint/PropertyTreeState.cpp
|
| @@ -92,7 +92,12 @@ PropertyTreeState::InnermostNode PropertyTreeState::GetInnermostNode() const {
|
| bool clip_ancestor_of_effect =
|
| IsAncestorOf<ClipPaintPropertyNode>(clip_.Get(), effect_->OutputClip());
|
|
|
| - if (!effect_->IsRoot() && clip_ancestor_of_effect) {
|
| + if (!effect_->IsRoot() &&
|
| + (clip_ancestor_of_effect ||
|
| + // Effects that don't move pixels commute with all clips, so always apply
|
| + // them first when inside compatible transforms.
|
| + (!effect_->HasFilterThatMovesPixels() &&
|
| + !effect_transform_strict_ancestor_of_transform))) {
|
| return kEffect;
|
| }
|
| if (!clip_->IsRoot())
|
|
|