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

Issue 644833 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: Oct 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , All
Pri: 1
Type: Bug



Sign in to add a comment

PaintLayerScrollableArea doesn't enforce integer scroll position when composited

Project Member Reported by schenney@chromium.org, Sep 7 2016

Issue description

An integer scroll offset is required for LCD text to work on composited scrolling layers. While PaintLayerScrollableArea::shouldUseIntegerScrollOffset returns true when we are not preferring compositing over LCD text, that is not enough to ensure that translations and other accumulated effects retain the integer offset.

Investigate and fix issues that arise.
 
Cc: schenney@chromium.org
Labels: -Pri-2 M-55 ReleaseBlock-Stable OS-Linux Pri-1
Owner: flackr@chromium.org
We need to ensure that we never promote low-DPI scrollers due to being opaque
that have non-integer offsets from the root cc::Layer. More generally it should
never happen that cc boots any layer out of LCD text moe if Blink promoted it because
it should be able to retain LCD text.

Marking this bug as blocking M55 stable.

Comment 2 by flackr@chromium.org, Oct 19 2016

Also we need to ensure that the screen space opacity is 1 (i.e. that no ancestor reduces our opacity): https://cs.chromium.org/chromium/src/cc/layers/layer_impl.cc?q=file:cc+opaque+lcd&sq=package:chromium&dr=CSs&l=1011

Comment 3 by flackr@chromium.org, Oct 19 2016

Status: Started (was: Available)
I put up a CL to make automatic promotion experimental again to fix this in M55: https://chromiumcodereview.appspot.com/2439573002.

As for M56 The scroll position should be pixel snapped by TransformTree::UpdateSnapping (https://cs.chromium.org/chromium/src/cc/trees/property_tree.cc?dr=CSs&q=file:cc%5C/+snap&sq=package:chromium&l=642), but we do need to check all ancestor transforms and opacity as per the check in #2.

Comment 4 by flackr@chromium.org, Oct 19 2016

Fix to not promote when we have transforms or opacity: https://chromiumcodereview.appspot.com/2434443005
Project Member

Comment 5 by bugdroid1@chromium.org, Oct 20 2016

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

commit c656b155c2f6fb63288a259d130dd06dca393925
Author: flackr <flackr@chromium.org>
Date: Thu Oct 20 03:29:51 2016

Only automatically promote scrollers which are untransformed and opaque.

To be sure that we actually get LCD text, we only promote scrollers which have
not been transformed themselves or by any ancestor, and also exclude those
which are translucent due to an opacity on themselves or an ancestor.

BUG= 644833 
TEST=PaintLayerScrollableAreaTest.OnlyNonTransformedOpaqueLayersPromoted, PaintLayerScrollableAreaTest.OnlyOpaqueLayersPromoted
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2

Review-Url: https://chromiumcodereview.appspot.com/2434443005
Cr-Commit-Position: refs/heads/master@{#426385}

[modify] https://crrev.com/c656b155c2f6fb63288a259d130dd06dca393925/third_party/WebKit/LayoutTests/compositing/overflow/scaled-overflow.html
[modify] https://crrev.com/c656b155c2f6fb63288a259d130dd06dca393925/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp
[modify] https://crrev.com/c656b155c2f6fb63288a259d130dd06dca393925/third_party/WebKit/Source/core/paint/PaintLayerScrollableAreaTest.cpp
[modify] https://crrev.com/c656b155c2f6fb63288a259d130dd06dca393925/third_party/WebKit/Source/platform/testing/RuntimeEnabledFeaturesTestHelpers.h

Cc: brajkumar@chromium.org
Is this issue is fixed? If yes, Could any one let us know is there manual repro steps available to verify this issue from Chrome-TE end.

Thanks!

Comment 7 by flackr@chromium.org, Oct 20 2016

This issue is fixed, but we would like to disable the CompositeOpaqueScrollers feature in M-55 due to  issue 651305  as well. I just landed https://codereview.chromium.org/2439573002 to do this which I'd like to merge back - just waiting to see it show up in the bug here.

Comment 8 by flackr@chromium.org, Oct 20 2016

Labels: Merge-Request-55
Hmm the bot that posts to the bugs must be really delayed, anyways I would like to merge https://chromium.googlesource.com/chromium/src/+/42f45334458475b43440671e6e7de5ff95e54a7c to M55 to avoid this issue on this bug and  issue 651305 .

Comment 9 by dimu@chromium.org, Oct 21 2016

Labels: -Merge-Request-55 Merge-Approved-55 Hotlist-Merge-Approved
Your change meets the bar and is auto-approved for M55 (branch: 2883)
Project Member

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

Labels: -merge-approved-55 merge-merged-2883
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c8338128808d2dae2ffc77a87a47554eeb7d4210

commit c8338128808d2dae2ffc77a87a47554eeb7d4210
Author: Robert Flack <flackr@chromium.org>
Date: Sat Oct 22 02:32:15 2016

Make CompositeOpaqueScrollers experimental until  https://crbug.com/644833  is fixed.

BUG= 644833 , 651305 

Review-Url: https://chromiumcodereview.appspot.com/2439573002
Cr-Commit-Position: refs/heads/master@{#426486}
(cherry picked from commit 42f45334458475b43440671e6e7de5ff95e54a7c)

Review URL: https://codereview.chromium.org/2444663002 .

Cr-Commit-Position: refs/branch-heads/2883@{#235}
Cr-Branched-From: 614d31daee2f61b0180df403a8ad43f20b9f6dd7-refs/heads/master@{#423768}

[modify] https://crrev.com/c8338128808d2dae2ffc77a87a47554eeb7d4210/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.in

Project Member

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

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

commit 10336a25975c113e068268d848b01f0c3563f215
Author: flackr <flackr@chromium.org>
Date: Mon Oct 24 20:27:38 2016

Reenable CompositeOpaqueScrollers on tip of tree.

BUG= 644833 , 651305 

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

[modify] https://crrev.com/10336a25975c113e068268d848b01f0c3563f215/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.in

Status: Fixed (was: Started)
This should be fixed on M56 and CompositeOpaqueScrollers is not on by default in M55. You can verify by visiting a page like http://output.jsbin.com/wacasinozi on a low dpi device and seeing that the first scroller still has subpixel text anti-aliasing. If you open dev tools and enable layer borders you can see that it is not promoted because it has a transform which may cause it to lose subpixel AA.
Project Member

Comment 13 by bugdroid1@chromium.org, Oct 27 2016

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

commit c8338128808d2dae2ffc77a87a47554eeb7d4210
Author: Robert Flack <flackr@chromium.org>
Date: Sat Oct 22 02:32:15 2016

Make CompositeOpaqueScrollers experimental until  https://crbug.com/644833  is fixed.

BUG= 644833 , 651305 

Review-Url: https://chromiumcodereview.appspot.com/2439573002
Cr-Commit-Position: refs/heads/master@{#426486}
(cherry picked from commit 42f45334458475b43440671e6e7de5ff95e54a7c)

Review URL: https://codereview.chromium.org/2444663002 .

Cr-Commit-Position: refs/branch-heads/2883@{#235}
Cr-Branched-From: 614d31daee2f61b0180df403a8ad43f20b9f6dd7-refs/heads/master@{#423768}

[modify] https://crrev.com/c8338128808d2dae2ffc77a87a47554eeb7d4210/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.in

Comment 15 by dimu@google.com, Nov 4 2016

Labels: -merge-merged-2840
[Automated comment] removing mislabelled merge-merged-2840
Project Member

Comment 16 by bugdroid1@chromium.org, Aug 8

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

commit 318d3c7d33df6e1c6a16d929a57d350f77acfd91
Author: Eric Willigers <ericwilligers@chromium.org>
Date: Wed Aug 08 17:22:16 2018

Retire CompositeOpaqueScrollers flag

CompositeOpaqueScrollers has been shipping since M56.
https://codereview.chromium.org/2450473002

BUG= 644833 ,  651305 

Cq-Include-Trybots: luci.chromium.try:linux_layout_tests_slimming_paint_v2;master.tryserver.blink:linux_trusty_blink_rel
Change-Id: I2efd8b92d96177ebfa45b360c02a5cf5e31a18dc
Reviewed-on: https://chromium-review.googlesource.com/1166611
Reviewed-by: Robert Flack <flackr@chromium.org>
Commit-Queue: Eric Willigers <ericwilligers@chromium.org>
Cr-Commit-Position: refs/heads/master@{#581610}
[modify] https://crrev.com/318d3c7d33df6e1c6a16d929a57d350f77acfd91/third_party/WebKit/LayoutTests/compositing/overflow/overflow-scroll-background-opaque-to-transparent.html
[modify] https://crrev.com/318d3c7d33df6e1c6a16d929a57d350f77acfd91/third_party/WebKit/LayoutTests/compositing/overflow/overflow-scroll-background-transparent-to-opaque.html
[modify] https://crrev.com/318d3c7d33df6e1c6a16d929a57d350f77acfd91/third_party/WebKit/LayoutTests/compositing/overflow/overflow-scroll-with-opaque-background.html
[modify] https://crrev.com/318d3c7d33df6e1c6a16d929a57d350f77acfd91/third_party/blink/renderer/core/paint/compositing/compositing_reason_finder_test.cc
[modify] https://crrev.com/318d3c7d33df6e1c6a16d929a57d350f77acfd91/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.cc
[modify] https://crrev.com/318d3c7d33df6e1c6a16d929a57d350f77acfd91/third_party/blink/renderer/core/paint/paint_layer_scrollable_area_test.cc
[modify] https://crrev.com/318d3c7d33df6e1c6a16d929a57d350f77acfd91/third_party/blink/renderer/platform/runtime_enabled_features.json5

Sign in to add a comment