New issue
Advanced search Search tips

Issue 637313 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Sep 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 2
Type: Bug

Blocked on:
issue 728913

Blocking:
issue 510908



Sign in to add a comment

[SPv2] Apply visual extents of filter and reflection on visual rects

Project Member Reported by wangxianzhu@chromium.org, Aug 12 2016

Issue description

In old path we apply visual extents of filter and reflection in LayoutBox::mapToVisualRectInAncestorSpace(). This is because filter and reflection are applied not only on the element with the css properties, but also on all the elements in the whole subtree. We need a new way to apply these visual overflows for the new visual rect computation path.
 
Preliminary plan:
1. Add inherited computed style properties mirroring the non-inherited filter and boxReflect properties, so that the properties can be propagated into the subtrees which will be used to compute visual overflow.
2. When the inherited properties change, invalidate computed overflow of the object.
3. In LayoutBox::computeVisualEffectOverflowOutsets() add visual overflow of inherited filter and boxReflect.
4. Remove LayoutBox::inflateVisualRectForReflectionAndFilter() and invocations.

Can we remove the old reflection code now? We enabled CSSBoxReflectFilter by default 2 months ago. Removing the old code can ease implementation of the above plan.
I think the right solution to this is to use the effect tree as part of computing visual rects.
It's a known limitation of GeometryMapper's current implementation.
Tests that are failing because of this bug:
virtual/spv2/fast/repaint/filter-invalidation-after-display.html
virtual/spv2/fast/repaint/filter-invalidation-positioned-child.html
virtual/spv2/fast/repaint/reflection-invalidation-after-display.html
virtual/spv2/fast/repaint/reflection-redraw.html

Blocking: 646176
Summary: [slimmingPaintInvalidation] Apply visual extents of filter and reflection on visual rects (was: [Spv2-paint-invalidation] Apply visual extents of filter and reflection on visual rects)
Blocking: -646176
Remove 646176 from blocking as we force slow path for filters/reflections for slimmingPaintInvalidation.
Project Member

Comment 6 by bugdroid1@chromium.org, Feb 9 2017

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

commit 598043a9d645cec72159c5dac7f0b21ac29ca470
Author: wangxianzhu <wangxianzhu@chromium.org>
Date: Thu Feb 09 06:03:35 2017

Handle geometry effects of filters in GeometryMapper

Some filters affects visual rects. Previously this is done by forcing
slow old path for descendant of filters.

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

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

[modify] https://crrev.com/598043a9d645cec72159c5dac7f0b21ac29ca470/third_party/WebKit/Source/core/paint/PaintInvalidator.cpp
[modify] https://crrev.com/598043a9d645cec72159c5dac7f0b21ac29ca470/third_party/WebKit/Source/platform/graphics/CompositorFilterOperations.cpp
[modify] https://crrev.com/598043a9d645cec72159c5dac7f0b21ac29ca470/third_party/WebKit/Source/platform/graphics/CompositorFilterOperations.h
[modify] https://crrev.com/598043a9d645cec72159c5dac7f0b21ac29ca470/third_party/WebKit/Source/platform/graphics/paint/EffectPaintPropertyNode.cpp
[modify] https://crrev.com/598043a9d645cec72159c5dac7f0b21ac29ca470/third_party/WebKit/Source/platform/graphics/paint/EffectPaintPropertyNode.h
[modify] https://crrev.com/598043a9d645cec72159c5dac7f0b21ac29ca470/third_party/WebKit/Source/platform/graphics/paint/GeometryMapper.cpp
[modify] https://crrev.com/598043a9d645cec72159c5dac7f0b21ac29ca470/third_party/WebKit/Source/platform/graphics/paint/GeometryMapper.h
[modify] https://crrev.com/598043a9d645cec72159c5dac7f0b21ac29ca470/third_party/WebKit/Source/platform/graphics/paint/GeometryMapperTest.cpp

Status: Fixed (was: Assigned)
Summary: [SPv2] Apply visual extents of filter and reflection on visual rects (was: [slimmingPaintInvalidation] Apply visual extents of filter and reflection on visual rects)
Status: Assigned (was: Fixed)
Reopen to also track skia optimization of composite filter.
Blockedon: 728913
Project Member

Comment 10 by bugdroid1@chromium.org, Sep 26 2017

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

commit fb48c272877d177f4c93a617aa97323c28fb1552
Author: Xianzhu Wang <wangxianzhu@chromium.org>
Date: Tue Sep 26 05:24:48 2017

Use GeometryMapper to map visual rect with filters for paint invalidation

Bug:  637313 
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: Icad7f9354b7cb92ddfe8caa5224e3ba2540f7440
Reviewed-on: https://chromium-review.googlesource.com/667756
Commit-Queue: Xianzhu Wang <wangxianzhu@chromium.org>
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#504287}
[modify] https://crrev.com/fb48c272877d177f4c93a617aa97323c28fb1552/third_party/WebKit/LayoutTests/paint/filters/clip-under-filter-expected.png
[modify] https://crrev.com/fb48c272877d177f4c93a617aa97323c28fb1552/third_party/WebKit/LayoutTests/paint/invalidation/filter-invalidation-after-display-expected.txt
[modify] https://crrev.com/fb48c272877d177f4c93a617aa97323c28fb1552/third_party/WebKit/LayoutTests/paint/invalidation/filter-invalidation-positioned-child-expected.txt
[modify] https://crrev.com/fb48c272877d177f4c93a617aa97323c28fb1552/third_party/WebKit/LayoutTests/paint/invalidation/filter-invalidation-with-composited-container-change-expected.txt
[modify] https://crrev.com/fb48c272877d177f4c93a617aa97323c28fb1552/third_party/WebKit/LayoutTests/paint/invalidation/filter-repaint-accelerated-child-with-filter-child-expected.txt
[modify] https://crrev.com/fb48c272877d177f4c93a617aa97323c28fb1552/third_party/WebKit/LayoutTests/paint/invalidation/filters/effect-reference-repaint-gaussianblur-expected.txt
[modify] https://crrev.com/fb48c272877d177f4c93a617aa97323c28fb1552/third_party/WebKit/LayoutTests/paint/invalidation/filters/effect-reference-repaint-gaussianblur-xonly-expected.txt
[modify] https://crrev.com/fb48c272877d177f4c93a617aa97323c28fb1552/third_party/WebKit/LayoutTests/paint/invalidation/filters/effect-reference-repaint-gaussianblur-yonly-expected.txt
[modify] https://crrev.com/fb48c272877d177f4c93a617aa97323c28fb1552/third_party/WebKit/LayoutTests/paint/invalidation/svg/paintorder-filtered-expected.txt
[modify] https://crrev.com/fb48c272877d177f4c93a617aa97323c28fb1552/third_party/WebKit/Source/core/paint/PaintInvalidator.cpp
[modify] https://crrev.com/fb48c272877d177f4c93a617aa97323c28fb1552/third_party/WebKit/Source/core/paint/PaintLayerClipper.cpp
[modify] https://crrev.com/fb48c272877d177f4c93a617aa97323c28fb1552/third_party/WebKit/Source/core/paint/PaintLayerClipper.h
[modify] https://crrev.com/fb48c272877d177f4c93a617aa97323c28fb1552/third_party/WebKit/Source/core/paint/PaintLayerClipperTest.cpp
[modify] https://crrev.com/fb48c272877d177f4c93a617aa97323c28fb1552/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp
[modify] https://crrev.com/fb48c272877d177f4c93a617aa97323c28fb1552/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilderTest.cpp
[modify] https://crrev.com/fb48c272877d177f4c93a617aa97323c28fb1552/third_party/WebKit/Source/platform/graphics/paint/EffectPaintPropertyNode.h

Status: Fixed (was: Assigned)

Sign in to add a comment