New issue
Advanced search Search tips

Issue 749760 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Aug 2017
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug



Sign in to add a comment

Composited, unclipped children sometimes don't display

Project Member Reported by chrishtr@chromium.org, Jul 27 2017

Issue description

I think the underlying bug is that when the children paint into a different
render surface, the ClipParent mechanisms to avoid clip don't apply.

In the attached testcase, there should be a green square in the top-left.
 
test2.html
506 bytes View Download
Project Member

Comment 1 by bugdroid1@chromium.org, Jul 28 2017

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

commit a1fa33f5f06cb27f39cf6240ca57854571f0b34e
Author: Chris Harrelson <chrishtr@chromium.org>
Date: Fri Jul 28 20:40:55 2017

Don't ever check for fragment intersections when painting ancestor clipping
masks, or clip to the compositing container.

It doesn't make sense to do this, because (a) it doesn't achieve anything,
and similar optimizations are already implemented in CompositedLayerMapping, and
(b) it is not quite correct, because the overflow clip of the stacking ancestor
is applied before checking fragment intersections, which can be wrong if the
descendant is not clipped. This latter condition caused  issue 747364 .

Bug:  749760 ,  747364 
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: I1485cc86c2f0dfc222171d1b53eb27f083d2c2c8
Reviewed-on: https://chromium-review.googlesource.com/589825
Reviewed-by: Stephen Chenney <schenney@chromium.org>
Commit-Queue: Chris Harrelson <chrishtr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#490502}
[modify] https://crrev.com/a1fa33f5f06cb27f39cf6240ca57854571f0b34e/third_party/WebKit/LayoutTests/TestExpectations
[add] https://crrev.com/a1fa33f5f06cb27f39cf6240ca57854571f0b34e/third_party/WebKit/LayoutTests/compositing/overflow/relpos-under-abspos-border-radius-expected.html
[add] https://crrev.com/a1fa33f5f06cb27f39cf6240ca57854571f0b34e/third_party/WebKit/LayoutTests/compositing/overflow/relpos-under-abspos-border-radius.html
[modify] https://crrev.com/a1fa33f5f06cb27f39cf6240ca57854571f0b34e/third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp

Project Member

Comment 2 by bugdroid1@chromium.org, Jul 31 2017

Labels: merge-merged-3163
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/8f00c5f7e1a6310c063e2cb0507ce6935aa8d983

commit 8f00c5f7e1a6310c063e2cb0507ce6935aa8d983
Author: Chris Harrelson <chrishtr@chromium.org>
Date: Mon Jul 31 21:45:54 2017

Don't ever check for fragment intersections when painting ancestor clipping masks, or clip to the compositing container.

It doesn't make sense to do this, because (a) it doesn't achieve anything,
and similar optimizations are already implemented in CompositedLayerMapping, and
(b) it is not quite correct, because the overflow clip of the stacking ancestor
is applied before checking fragment intersections, which can be wrong if the
descendant is not clipped. This latter condition caused  issue 747364 .

TBR=chrishtr@chromium.org

(cherry picked from commit a1fa33f5f06cb27f39cf6240ca57854571f0b34e)

Bug:  749760 ,  747364 
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: I1485cc86c2f0dfc222171d1b53eb27f083d2c2c8
Reviewed-on: https://chromium-review.googlesource.com/589825
Reviewed-by: Stephen Chenney <schenney@chromium.org>
Commit-Queue: Chris Harrelson <chrishtr@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#490502}
Reviewed-on: https://chromium-review.googlesource.com/594662
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Cr-Commit-Position: refs/branch-heads/3163@{#187}
Cr-Branched-From: ff259bab28b35d242e10186cd63af7ed404fae0d-refs/heads/master@{#488528}
[modify] https://crrev.com/8f00c5f7e1a6310c063e2cb0507ce6935aa8d983/third_party/WebKit/LayoutTests/TestExpectations
[add] https://crrev.com/8f00c5f7e1a6310c063e2cb0507ce6935aa8d983/third_party/WebKit/LayoutTests/compositing/overflow/relpos-under-abspos-border-radius-expected.html
[add] https://crrev.com/8f00c5f7e1a6310c063e2cb0507ce6935aa8d983/third_party/WebKit/LayoutTests/compositing/overflow/relpos-under-abspos-border-radius.html
[modify] https://crrev.com/8f00c5f7e1a6310c063e2cb0507ce6935aa8d983/third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp

Status: Fixed (was: Assigned)
Status: Started (was: Fixed)
Project Member

Comment 5 by bugdroid1@chromium.org, Aug 9 2017

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

commit 05827d436867d8e1aa879d2aa3d2fc2d05ed8752
Author: Chris Harrelson <chrishtr@chromium.org>
Date: Wed Aug 09 05:29:06 2017

Set clip parent on layers if the clipping container also had one.

Bug:  749760 
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: I52b045eb7095cd9a4ab6081515f02e9f7c0fd8b6
Reviewed-on: https://chromium-review.googlesource.com/590728
Reviewed-by: Tien-Ren Chen <trchen@chromium.org>
Commit-Queue: Chris Harrelson <chrishtr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#492834}
[modify] https://crrev.com/05827d436867d8e1aa879d2aa3d2fc2d05ed8752/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2
[modify] https://crrev.com/05827d436867d8e1aa879d2aa3d2fc2d05ed8752/third_party/WebKit/LayoutTests/compositing/overflow/clear-scroll-parent-expected.txt
[add] https://crrev.com/05827d436867d8e1aa879d2aa3d2fc2d05ed8752/third_party/WebKit/LayoutTests/compositing/overflow/relpos-under-abspos-overflow-hidden-opacity-expected.html
[add] https://crrev.com/05827d436867d8e1aa879d2aa3d2fc2d05ed8752/third_party/WebKit/LayoutTests/compositing/overflow/relpos-under-abspos-overflow-hidden-opacity.html
[modify] https://crrev.com/05827d436867d8e1aa879d2aa3d2fc2d05ed8752/third_party/WebKit/LayoutTests/compositing/overflow/scroll-parent-absolute-expected.txt
[modify] https://crrev.com/05827d436867d8e1aa879d2aa3d2fc2d05ed8752/third_party/WebKit/LayoutTests/virtual/prefer_compositing_to_lcd_text/compositing/overflow/clear-scroll-parent-expected.txt
[modify] https://crrev.com/05827d436867d8e1aa879d2aa3d2fc2d05ed8752/third_party/WebKit/LayoutTests/virtual/prefer_compositing_to_lcd_text/compositing/overflow/scroll-parent-absolute-expected.txt
[modify] https://crrev.com/05827d436867d8e1aa879d2aa3d2fc2d05ed8752/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp
[modify] https://crrev.com/05827d436867d8e1aa879d2aa3d2fc2d05ed8752/third_party/WebKit/Source/core/layout/compositing/CompositingInputsUpdater.cpp
[modify] https://crrev.com/05827d436867d8e1aa879d2aa3d2fc2d05ed8752/third_party/WebKit/Source/core/layout/compositing/CompositingReasonFinder.cpp

Project Member

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

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

commit 71882fc457c2e83ddb188b93c969d4bf0ee4961d
Author: Makoto Shimazu <shimazu@chromium.org>
Date: Wed Aug 09 08:16:28 2017

Revert "Set clip parent on layers if the clipping container also had one."

This reverts commit 05827d436867d8e1aa879d2aa3d2fc2d05ed8752.

Reason for revert: Speculative revert to fix flaky failures of browser_tests on chrome os.
See also  https://crbug.com/753714  for detail.
If the revert seems wrong, feel free to reland it.

Original change's description:
> Set clip parent on layers if the clipping container also had one.
> 
> Bug:  749760 
> Cq-Include-Trybots: master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
> Change-Id: I52b045eb7095cd9a4ab6081515f02e9f7c0fd8b6
> Reviewed-on: https://chromium-review.googlesource.com/590728
> Reviewed-by: Tien-Ren Chen <trchen@chromium.org>
> Commit-Queue: Chris Harrelson <chrishtr@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#492834}

TBR=trchen@chromium.org,chrishtr@chromium.org

Change-Id: Ideeb53ed64d280f2ec0856200838f93614bc4ea5
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  749760 
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Reviewed-on: https://chromium-review.googlesource.com/606748
Reviewed-by: Makoto Shimazu <shimazu@chromium.org>
Commit-Queue: Makoto Shimazu <shimazu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#492902}
[modify] https://crrev.com/71882fc457c2e83ddb188b93c969d4bf0ee4961d/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2
[modify] https://crrev.com/71882fc457c2e83ddb188b93c969d4bf0ee4961d/third_party/WebKit/LayoutTests/compositing/overflow/clear-scroll-parent-expected.txt
[delete] https://crrev.com/bb005006f5f04f2c2c1e43a1e61485ced6f6a068/third_party/WebKit/LayoutTests/compositing/overflow/relpos-under-abspos-overflow-hidden-opacity-expected.html
[delete] https://crrev.com/bb005006f5f04f2c2c1e43a1e61485ced6f6a068/third_party/WebKit/LayoutTests/compositing/overflow/relpos-under-abspos-overflow-hidden-opacity.html
[modify] https://crrev.com/71882fc457c2e83ddb188b93c969d4bf0ee4961d/third_party/WebKit/LayoutTests/compositing/overflow/scroll-parent-absolute-expected.txt
[modify] https://crrev.com/71882fc457c2e83ddb188b93c969d4bf0ee4961d/third_party/WebKit/LayoutTests/virtual/prefer_compositing_to_lcd_text/compositing/overflow/clear-scroll-parent-expected.txt
[modify] https://crrev.com/71882fc457c2e83ddb188b93c969d4bf0ee4961d/third_party/WebKit/LayoutTests/virtual/prefer_compositing_to_lcd_text/compositing/overflow/scroll-parent-absolute-expected.txt
[modify] https://crrev.com/71882fc457c2e83ddb188b93c969d4bf0ee4961d/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp
[modify] https://crrev.com/71882fc457c2e83ddb188b93c969d4bf0ee4961d/third_party/WebKit/Source/core/layout/compositing/CompositingInputsUpdater.cpp
[modify] https://crrev.com/71882fc457c2e83ddb188b93c969d4bf0ee4961d/third_party/WebKit/Source/core/layout/compositing/CompositingReasonFinder.cpp

Project Member

Comment 7 by bugdroid1@chromium.org, Aug 10 2017

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

commit acb18647cf8156a88797504f483e3c8afb3f385e
Author: Chris Harrelson <chrishtr@chromium.org>
Date: Thu Aug 10 05:30:21 2017

Re-land: "Set clip parent on layers if the clipping container also had one."

This reverts commit 71882fc457c2e83ddb188b93c969d4bf0ee4961d, with one change,
to set the clip_parent to clipping_layer->ClipParent().

Previously we had set clip_parent to clipping_layer, which is incorrect, because
in the cases in which the code triggers, clipping_layer is in the same stacking
context, and its clip is embedded in ancestor_clipping_layer. The clip_parent
of the ancestor_clipping_layer should be the clip_parent above clipping_layer.

Bug:  749760 
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: Ib7f28aaf32935bffd361b31e9a45b0dab6336df6
Reviewed-on: https://chromium-review.googlesource.com/609321
Reviewed-by: Tien-Ren Chen <trchen@chromium.org>
Commit-Queue: Chris Harrelson <chrishtr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#493274}
[modify] https://crrev.com/acb18647cf8156a88797504f483e3c8afb3f385e/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2
[add] https://crrev.com/acb18647cf8156a88797504f483e3c8afb3f385e/third_party/WebKit/LayoutTests/compositing/overflow/relpos-under-abspos-overflow-hidden-opacity-expected.html
[add] https://crrev.com/acb18647cf8156a88797504f483e3c8afb3f385e/third_party/WebKit/LayoutTests/compositing/overflow/relpos-under-abspos-overflow-hidden-opacity.html
[modify] https://crrev.com/acb18647cf8156a88797504f483e3c8afb3f385e/third_party/WebKit/Source/core/paint/compositing/CompositedLayerMapping.cpp
[modify] https://crrev.com/acb18647cf8156a88797504f483e3c8afb3f385e/third_party/WebKit/Source/core/paint/compositing/CompositingInputsUpdater.cpp
[modify] https://crrev.com/acb18647cf8156a88797504f483e3c8afb3f385e/third_party/WebKit/Source/core/paint/compositing/CompositingReasonFinder.cpp

Status: Fixed (was: Started)

Sign in to add a comment