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

Issue 653631 link

Starred by 2 users

Issue metadata

Status: Available
Owner: ----
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug

Blocked on:
issue 681585
issue 664357



Sign in to add a comment

Composited reflection masks and elements erased under scroll

Project Member Reported by chrishtr@chromium.org, Oct 6 2016

Issue description

Scroll erases masking:

https://jsfiddle.net/zL8gffy5/6/


Scroll cuts off the element:

https://jsfiddle.net/zL8gffy5/7/
 
Cc: ajuma@chromium.org senorblanco@chromium.org jbroman@chromium.org
Components: Internals>Compositing
Labels: -Pri-2 M-54 Pri-1
Owner: ajuma@chromium.org
For the examples in the description above, scroll down the page to observe
the effect.

I think this is a bug in the filters implementation in the compositor, involving
bad interaction with scrolling. When scrolling these examples, I confirmed that
Blink does not do any painting or compositing update.

Ali/Stephen, any ideas?
Labels: ReleaseBlock-Stable
It's a regression so marking as release-blocking.

Comment 3 by ajuma@chromium.org, Oct 6 2016

This also reproduces without masking: https://jsfiddle.net/zL8gffy5/9/

It seems like the filter's only getting applied to the visible part of each div.

Comment 4 by ajuma@chromium.org, Oct 6 2016

Cc: jaydasika@chromium.org weiliangc@chromium.org

Comment 5 by ajuma@chromium.org, Oct 6 2016

There are two issues:
1) The visible rects for the layers contributing to the surface with the filter are being clipped by the overflow clip (even though the filter's output depends on the clipped out content).
2) The content rect for the surface with the filter is also being clipped (again, even though we need those clipped-out pixels as input to the filter).

So the real problem is that the clip tree doesn't know about pixel-moving filters.

I think the right fix is to implement Wei's proposal for adding "expanding" nodes to the clip tree (Option 3 in https://docs.google.com/document/d/1ZD2sQAnTPoiM7yPWM9tEYvoiIXlf7N152Oy7-k0FSHQ/edit). That's not a mergeable fix though, so need to think some more about what a mergeable fix might look like.

Comment 6 by ajuma@chromium.org, Oct 7 2016

Labels: -Pri-1 -M-54 -ReleaseBlock-Stable Pri-2
It turns out that all 3 examples from this bug have been broken since at least Chrome 36, so this doesn't need to block M54 stable.
From what I personally know it did worked for me on whatever version that was before the current stable one (52 I guess), it can't possibly be that I was on a version before 36.

Comment 8 by ajuma@chromium.org, Oct 7 2016

It's certainly possible that variants of these cases broke in 53. We'll fix this as soon as possible and try to merge a fix into Chrome 55. Thanks for putting together these reduced test cases!
I commented on option 3. This topic is also surfacing in the context of
slimmingPaintInvalidation; ajuma, will cc you on those discussions.
Project Member

Comment 10 by bugdroid1@chromium.org, Oct 24 2016

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

commit 259f1e710e96ab0a0a9d14db19c82b78c9cbffe7
Author: ajuma <ajuma@chromium.org>
Date: Mon Oct 24 16:25:38 2016

cc: Change ClipNode::applies_local_clip to a clip_type enum

This change is in preparation for adding "expanding" clip nodes,
which will involve adding a new ClipType.

CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel
BUG=653631

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

[modify] https://crrev.com/259f1e710e96ab0a0a9d14db19c82b78c9cbffe7/cc/proto/cc_conversions.cc
[modify] https://crrev.com/259f1e710e96ab0a0a9d14db19c82b78c9cbffe7/cc/proto/cc_conversions.h
[modify] https://crrev.com/259f1e710e96ab0a0a9d14db19c82b78c9cbffe7/cc/proto/property_tree.proto
[modify] https://crrev.com/259f1e710e96ab0a0a9d14db19c82b78c9cbffe7/cc/trees/clip_node.cc
[modify] https://crrev.com/259f1e710e96ab0a0a9d14db19c82b78c9cbffe7/cc/trees/clip_node.h
[modify] https://crrev.com/259f1e710e96ab0a0a9d14db19c82b78c9cbffe7/cc/trees/draw_property_utils.cc
[modify] https://crrev.com/259f1e710e96ab0a0a9d14db19c82b78c9cbffe7/cc/trees/layer_tree_host_common_unittest.cc
[modify] https://crrev.com/259f1e710e96ab0a0a9d14db19c82b78c9cbffe7/cc/trees/layer_tree_impl.cc
[modify] https://crrev.com/259f1e710e96ab0a0a9d14db19c82b78c9cbffe7/cc/trees/property_tree_builder.cc
[modify] https://crrev.com/259f1e710e96ab0a0a9d14db19c82b78c9cbffe7/cc/trees/property_tree_unittest.cc
[modify] https://crrev.com/259f1e710e96ab0a0a9d14db19c82b78c9cbffe7/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.cpp
[modify] https://crrev.com/259f1e710e96ab0a0a9d14db19c82b78c9cbffe7/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositorTest.cpp

Project Member

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

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

commit 5e48a2e0284b930c68e73f44ea15807a9ffab541
Author: ajuma <ajuma@chromium.org>
Date: Tue Nov 01 18:05:49 2016

cc: Make visible rect computation aware of pixel-moving filters

This adds a new ClipNode type (EXPANDS_CLIP) and uses such nodes to
account for the fact that certain kinds of effects have output that
depends on pixels that later get clipped out.

BUG=653631
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel

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

[modify] https://crrev.com/5e48a2e0284b930c68e73f44ea15807a9ffab541/cc/BUILD.gn
[modify] https://crrev.com/5e48a2e0284b930c68e73f44ea15807a9ffab541/cc/layers/render_surface_impl.cc
[modify] https://crrev.com/5e48a2e0284b930c68e73f44ea15807a9ffab541/cc/layers/render_surface_impl.h
[modify] https://crrev.com/5e48a2e0284b930c68e73f44ea15807a9ffab541/cc/proto/cc_conversions.cc
[modify] https://crrev.com/5e48a2e0284b930c68e73f44ea15807a9ffab541/cc/proto/property_tree.proto
[add] https://crrev.com/5e48a2e0284b930c68e73f44ea15807a9ffab541/cc/trees/clip_expander.cc
[add] https://crrev.com/5e48a2e0284b930c68e73f44ea15807a9ffab541/cc/trees/clip_expander.h
[modify] https://crrev.com/5e48a2e0284b930c68e73f44ea15807a9ffab541/cc/trees/clip_node.cc
[modify] https://crrev.com/5e48a2e0284b930c68e73f44ea15807a9ffab541/cc/trees/clip_node.h
[modify] https://crrev.com/5e48a2e0284b930c68e73f44ea15807a9ffab541/cc/trees/draw_property_utils.cc
[modify] https://crrev.com/5e48a2e0284b930c68e73f44ea15807a9ffab541/cc/trees/layer_tree_host_common_unittest.cc
[modify] https://crrev.com/5e48a2e0284b930c68e73f44ea15807a9ffab541/cc/trees/property_tree_builder.cc
[modify] https://crrev.com/5e48a2e0284b930c68e73f44ea15807a9ffab541/cc/trees/property_tree_unittest.cc
[modify] https://crrev.com/5e48a2e0284b930c68e73f44ea15807a9ffab541/third_party/WebKit/LayoutTests/css3/filters/blur-filter-page-scroll-expected.png
[rename] https://crrev.com/5e48a2e0284b930c68e73f44ea15807a9ffab541/third_party/WebKit/LayoutTests/platform/android/css3/filters/blur-filter-page-scroll-expected.png
[delete] https://crrev.com/bd91baa9f1486c3a2a083b990fe65ce4f39b1597/third_party/WebKit/LayoutTests/platform/win/css3/filters/blur-filter-page-scroll-expected.png

Status: Fixed (was: Assigned)
Project Member

Comment 13 by bugdroid1@chromium.org, Nov 2 2016

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

commit 7f3042b5845f0800784d05adf99723927bf7f966
Author: kjellander <kjellander@chromium.org>
Date: Wed Nov 02 07:18:58 2016

Revert of cc: Make visible rect computation aware of pixel-moving filters (patchset #12 id:220001 of https://codereview.chromium.org/2423483003/ )

Reason for revert:
Speculative revert for webkit_tests failure on WebKit Win7 (dbg):
https://build.chromium.org/p/chromium.webkit/builders/WebKit%20Win7%20%28dbg%29/builds/7953

Original issue's description:
> cc: Make visible rect computation aware of pixel-moving filters
>
> This adds a new ClipNode type (EXPANDS_CLIP) and uses such nodes to
> account for the fact that certain kinds of effects have output that
> depends on pixels that later get clipped out.
>
> BUG=653631
> CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel
>
> Committed: https://crrev.com/5e48a2e0284b930c68e73f44ea15807a9ffab541
> Cr-Commit-Position: refs/heads/master@{#429050}

TBR=weiliangc@chromium.org,jaydasika@chromium.org,ajuma@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=653631

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

[modify] https://crrev.com/7f3042b5845f0800784d05adf99723927bf7f966/cc/BUILD.gn
[modify] https://crrev.com/7f3042b5845f0800784d05adf99723927bf7f966/cc/layers/render_surface_impl.cc
[modify] https://crrev.com/7f3042b5845f0800784d05adf99723927bf7f966/cc/layers/render_surface_impl.h
[modify] https://crrev.com/7f3042b5845f0800784d05adf99723927bf7f966/cc/proto/cc_conversions.cc
[modify] https://crrev.com/7f3042b5845f0800784d05adf99723927bf7f966/cc/proto/property_tree.proto
[delete] https://crrev.com/48e95c8ed1c285048d172fdd00361673f808bfee/cc/trees/clip_expander.cc
[delete] https://crrev.com/48e95c8ed1c285048d172fdd00361673f808bfee/cc/trees/clip_expander.h
[modify] https://crrev.com/7f3042b5845f0800784d05adf99723927bf7f966/cc/trees/clip_node.cc
[modify] https://crrev.com/7f3042b5845f0800784d05adf99723927bf7f966/cc/trees/clip_node.h
[modify] https://crrev.com/7f3042b5845f0800784d05adf99723927bf7f966/cc/trees/draw_property_utils.cc
[modify] https://crrev.com/7f3042b5845f0800784d05adf99723927bf7f966/cc/trees/layer_tree_host_common_unittest.cc
[modify] https://crrev.com/7f3042b5845f0800784d05adf99723927bf7f966/cc/trees/property_tree_builder.cc
[modify] https://crrev.com/7f3042b5845f0800784d05adf99723927bf7f966/cc/trees/property_tree_unittest.cc
[modify] https://crrev.com/7f3042b5845f0800784d05adf99723927bf7f966/third_party/WebKit/LayoutTests/css3/filters/blur-filter-page-scroll-expected.png
[rename] https://crrev.com/7f3042b5845f0800784d05adf99723927bf7f966/third_party/WebKit/LayoutTests/platform/mac/css3/filters/blur-filter-page-scroll-expected.png
[copy] https://crrev.com/7f3042b5845f0800784d05adf99723927bf7f966/third_party/WebKit/LayoutTests/platform/win/css3/filters/blur-filter-page-scroll-expected.png

Hi, thanks again for keeps on working on this bug, really appreciate :)
Because of reverting the changes you may want to change the status from fixed to open please.
Or am I didn't understand it right?
Status: Assigned (was: Fixed)

Comment 16 by ajuma@chromium.org, Nov 11 2016

Blockedon: 664357
Project Member

Comment 17 by bugdroid1@chromium.org, Jan 10 2017

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

commit e947a35bcd6dce91dc4651680c48f8b996f7ea5e
Author: ajuma <ajuma@chromium.org>
Date: Tue Jan 10 19:17:49 2017

cc: Make visible rect computation aware of pixel-moving filters

This adds a new ClipNode type (EXPANDS_CLIP) and uses such nodes to
account for the fact that certain kinds of effects have output that
depends on pixels that later get clipped out.

BUG=653631
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel

Committed: https://crrev.com/5e48a2e0284b930c68e73f44ea15807a9ffab541
Cr-Original-Commit-Position: refs/heads/master@{#429050}
Review-Url: https://codereview.chromium.org/2423483003
Cr-Commit-Position: refs/heads/master@{#442652}

[modify] https://crrev.com/e947a35bcd6dce91dc4651680c48f8b996f7ea5e/cc/BUILD.gn
[modify] https://crrev.com/e947a35bcd6dce91dc4651680c48f8b996f7ea5e/cc/layers/render_surface_impl.cc
[modify] https://crrev.com/e947a35bcd6dce91dc4651680c48f8b996f7ea5e/cc/layers/render_surface_impl.h
[add] https://crrev.com/e947a35bcd6dce91dc4651680c48f8b996f7ea5e/cc/trees/clip_expander.cc
[add] https://crrev.com/e947a35bcd6dce91dc4651680c48f8b996f7ea5e/cc/trees/clip_expander.h
[modify] https://crrev.com/e947a35bcd6dce91dc4651680c48f8b996f7ea5e/cc/trees/clip_node.cc
[modify] https://crrev.com/e947a35bcd6dce91dc4651680c48f8b996f7ea5e/cc/trees/clip_node.h
[modify] https://crrev.com/e947a35bcd6dce91dc4651680c48f8b996f7ea5e/cc/trees/draw_property_utils.cc
[modify] https://crrev.com/e947a35bcd6dce91dc4651680c48f8b996f7ea5e/cc/trees/layer_tree_host_common_unittest.cc
[modify] https://crrev.com/e947a35bcd6dce91dc4651680c48f8b996f7ea5e/cc/trees/property_tree_builder.cc
[modify] https://crrev.com/e947a35bcd6dce91dc4651680c48f8b996f7ea5e/third_party/WebKit/LayoutTests/css3/filters/blur-filter-page-scroll-expected.png
[rename] https://crrev.com/e947a35bcd6dce91dc4651680c48f8b996f7ea5e/third_party/WebKit/LayoutTests/platform/android/css3/filters/blur-filter-page-scroll-expected.png
[delete] https://crrev.com/cf853f861018bf40bb283f50f12cade69db0091e/third_party/WebKit/LayoutTests/platform/win/css3/filters/blur-filter-page-scroll-expected.png

Comment 18 by ajuma@chromium.org, Jan 16 2017

Blockedon: 681585

Comment 19 by ajuma@chromium.org, Apr 18 2017

Owner: jaydasika@chromium.org
Cc: enne@chromium.org
Owner: ----
Status: Available (was: Assigned)
Project Member

Comment 21 by sheriffbot@chromium.org, May 14 2018

Labels: Hotlist-Recharge-Cold
Status: Untriaged (was: Available)
This issue has been Available for over a year. If it's no longer important or seems unlikely to be fixed, please consider closing it out. If it is important, please re-triage the issue.

Sorry for the inconvenience if the bug really should have been left as Available.

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Owner: ajuma@chromium.org
Status: Available (was: Untriaged)
ajuma@, anything left to do here?

Comment 23 by ajuma@chromium.org, May 18 2018

Owner: ----
Yes, the remaining work is covered by the bug this is blocked on.

Sign in to add a comment