|
|
Chromium Code Reviews|
Created:
4 years, 7 months ago by trchen Modified:
4 years, 7 months ago CC:
asvitkine+watch_chromium.org, blink-reviews, blink-reviews-layout_chromium.org, blink-reviews-paint_chromium.org, chromium-reviews, dshwang, eae+blinkwatch, jchaffraix+rendering, leviw+renderwatch, pdr+renderingwatchlist_chromium.org, slimming-paint-reviews_chromium.org, szager+layoutwatch_chromium.org, zoltan1 Base URL:
https://chromium.googlesource.com/chromium/src.git@master Target Ref:
refs/pending/heads/master Project:
chromium Visibility:
Public. |
DescriptionUse counters for opacity with transform-style:preserve-3d
This CL add a use counter for elements that have opacity, preserve-3d,
and 3D-transformed descendants at the same time.
This is done as a part of CSS transform spec research to collect statistics
about compatibility quirks. Currently all vendors implement this corner case
as applying opacity to each descendant planes separately, but latest W3C
editor's draft recommends forcing transform-style to flat.
BUG=612913, 598917
Committed: https://crrev.com/9d8ea9509008c684392a42d688dfd3ababdf9f66
Cr-Commit-Position: refs/heads/master@{#394920}
Patch Set 1 #Patch Set 2 : rebase #
Total comments: 3
Patch Set 3 : revised #
Total comments: 1
Patch Set 4 : rebase #
Messages
Total messages: 34 (14 generated)
The CQ bit was checked by trchen@chromium.org to run a CQ dry run
trchen@chromium.org changed reviewers: + chrishtr@chromium.org
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1987283003/1 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1987283003/1
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: ios-device on tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/ios-device/builds...) ios-device-gn on tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/ios-device-gn/bui...) mac_chromium_gn_rel on tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/mac_chromium_gn_r...) mac_chromium_rel_ng on tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/mac_chromium_rel_...)
The CQ bit was checked by trchen@chromium.org to run a CQ dry run
trchen@chromium.org changed reviewers: + holte@google.com
+holte for histogram
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1987283003/20001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1987283003/20001
https://codereview.chromium.org/1987283003/diff/20001/third_party/WebKit/Sour... File third_party/WebKit/Source/core/layout/compositing/GraphicsLayerUpdater.cpp (right): https://codereview.chromium.org/1987283003/diff/20001/third_party/WebKit/Sour... third_party/WebKit/Source/core/layout/compositing/GraphicsLayerUpdater.cpp:108: if (style.preserves3D() && style.hasOpacity() && layer.has3DTransformedDescendant()) Does this account for whether the child flattens itself, as opposed to being inside the same preserves-3d space as this element?
https://codereview.chromium.org/1987283003/diff/20001/third_party/WebKit/Sour... File third_party/WebKit/Source/core/layout/compositing/GraphicsLayerUpdater.cpp (right): https://codereview.chromium.org/1987283003/diff/20001/third_party/WebKit/Sour... third_party/WebKit/Source/core/layout/compositing/GraphicsLayerUpdater.cpp:108: if (style.preserves3D() && style.hasOpacity() && layer.has3DTransformedDescendant()) On 2016/05/18 at 23:16:03, chrishtr wrote: > Does this account for whether the child flattens itself, as opposed to being inside the same preserves-3d > space as this element? Also, I was expecting this usecounter to be in CLM::updateGraphicsLayerConfiguration.
holte@chromium.org changed reviewers: + holte@chromium.org
lgtm
lgtm
The CQ bit was checked by trchen@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1987283003/40001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1987283003/40001
The 3rd patchset fixes the assertion failure by invoking update3DTransformedDescendantStatus() from CLM. I don't think it will create any regression, but let me know if it sounds wrong to you. https://codereview.chromium.org/1987283003/diff/20001/third_party/WebKit/Sour... File third_party/WebKit/Source/core/layout/compositing/GraphicsLayerUpdater.cpp (right): https://codereview.chromium.org/1987283003/diff/20001/third_party/WebKit/Sour... third_party/WebKit/Source/core/layout/compositing/GraphicsLayerUpdater.cpp:108: if (style.preserves3D() && style.hasOpacity() && layer.has3DTransformedDescendant()) On 2016/05/18 23:22:10, chrishtr wrote: > On 2016/05/18 at 23:16:03, chrishtr wrote: > > Does this account for whether the child flattens itself, as opposed to being > inside the same preserves-3d > > space as this element? > > Also, I was expecting this usecounter to be in > CLM::updateGraphicsLayerConfiguration. Done.
https://codereview.chromium.org/1987283003/diff/40001/third_party/WebKit/Sour... File third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp (right): https://codereview.chromium.org/1987283003/diff/40001/third_party/WebKit/Sour... third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp:559: m_owningLayer.update3DTransformedDescendantStatus(); This is a linear-time operation in the depth of the PaintLayer tree, which leads to an n^2 overall. You'll need to integrate this computation into CompositingInputsUpdater to avoid a regression unfortunately.
On 2016/05/19 00:51:35, chrishtr wrote: > https://codereview.chromium.org/1987283003/diff/40001/third_party/WebKit/Sour... > File > third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp > (right): > > https://codereview.chromium.org/1987283003/diff/40001/third_party/WebKit/Sour... > third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp:559: > m_owningLayer.update3DTransformedDescendantStatus(); > This is a linear-time operation in the depth of the PaintLayer tree, which leads > to an n^2 overall. > You'll need to integrate this computation into CompositingInputsUpdater to avoid > a regression unfortunately. I think it is O(n) where n is number of layers because the value is cached and reused, i.e. dynamic programming.
On 2016/05/19 at 01:22:06, trchen wrote: > On 2016/05/19 00:51:35, chrishtr wrote: > > https://codereview.chromium.org/1987283003/diff/40001/third_party/WebKit/Sour... > > File > > third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp > > (right): > > > > https://codereview.chromium.org/1987283003/diff/40001/third_party/WebKit/Sour... > > third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp:559: > > m_owningLayer.update3DTransformedDescendantStatus(); > > This is a linear-time operation in the depth of the PaintLayer tree, which leads > > to an n^2 overall. > > You'll need to integrate this computation into CompositingInputsUpdater to avoid > > a regression unfortunately. > > I think it is O(n) where n is number of layers because the value is cached and reused, i.e. dynamic programming. Right, ok. Let's double-check the UMAs for compositing don't get worse after this patch though.
lgtm
The CQ bit was unchecked by chrishtr@chromium.org
The CQ bit was checked by chrishtr@chromium.org
The patchset sent to the CQ was uploaded after l-g-t-m from holte@chromium.org Link to the patchset: https://codereview.chromium.org/1987283003/#ps40001 (title: "revised")
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1987283003/40001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1987283003/40001
The CQ bit was unchecked by commit-bot@chromium.org
Failed to apply patch for third_party/WebKit/Source/core/frame/UseCounter.h:
While running git apply --index -3 -p1;
error: patch failed: third_party/WebKit/Source/core/frame/UseCounter.h:1188
Falling back to three-way merge...
Applied patch to 'third_party/WebKit/Source/core/frame/UseCounter.h' with
conflicts.
U third_party/WebKit/Source/core/frame/UseCounter.h
Patch: third_party/WebKit/Source/core/frame/UseCounter.h
Index: third_party/WebKit/Source/core/frame/UseCounter.h
diff --git a/third_party/WebKit/Source/core/frame/UseCounter.h
b/third_party/WebKit/Source/core/frame/UseCounter.h
index
aabdfaf7fa3850bb6da7e8716b9c86d6d6feadd5..855c3469ff3dcab107660a83194a00e21ee781a8
100644
--- a/third_party/WebKit/Source/core/frame/UseCounter.h
+++ b/third_party/WebKit/Source/core/frame/UseCounter.h
@@ -1188,6 +1188,7 @@ public:
UntrustedEventDefaultHandled = 1372,
FixedRasterScaleBlurryContent = 1373,
FixedRasterScalePotentialPerformanceRegression = 1374,
+ OpacityWithPreserve3DQuirk = 1375,
// Add new features immediately above this line. Don't change assigned
// numbers of any item, and don't reuse removed slots.
The CQ bit was checked by trchen@chromium.org
The patchset sent to the CQ was uploaded after l-g-t-m from chrishtr@chromium.org, holte@chromium.org Link to the patchset: https://codereview.chromium.org/1987283003/#ps60001 (title: "rebase")
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1987283003/60001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1987283003/60001
Message was sent while issue was closed.
Committed patchset #4 (id:60001)
Message was sent while issue was closed.
Description was changed from ========== Use counters for opacity with transform-style:preserve-3d This CL add a use counter for elements that have opacity, preserve-3d, and 3D-transformed descendants at the same time. This is done as a part of CSS transform spec research to collect statistics about compatibility quirks. Currently all vendors implement this corner case as applying opacity to each descendant planes separately, but latest W3C editor's draft recommends forcing transform-style to flat. BUG=612913,598917 ========== to ========== Use counters for opacity with transform-style:preserve-3d This CL add a use counter for elements that have opacity, preserve-3d, and 3D-transformed descendants at the same time. This is done as a part of CSS transform spec research to collect statistics about compatibility quirks. Currently all vendors implement this corner case as applying opacity to each descendant planes separately, but latest W3C editor's draft recommends forcing transform-style to flat. BUG=612913,598917 Committed: https://crrev.com/9d8ea9509008c684392a42d688dfd3ababdf9f66 Cr-Commit-Position: refs/heads/master@{#394920} ==========
Message was sent while issue was closed.
Patchset 4 (id:??) landed as https://crrev.com/9d8ea9509008c684392a42d688dfd3ababdf9f66 Cr-Commit-Position: refs/heads/master@{#394920} |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
