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.
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
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
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
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
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
Comment 1 by bugdroid1@chromium.org
, Jul 28 2017