Commit 9dfcafe0 authored by Xianzhu Wang's avatar Xianzhu Wang Committed by Commit Bot

[CompositeAfterPaint] Pass inner viewport scroll node to cc

Bug: 909750
Change-Id: I10ff2ec0f58cddfd16c28d47de153ce484a6833c
Reviewed-on: https://chromium-review.googlesource.com/c/1370497Reviewed-by: default avatarPhilip Rogers <pdr@chromium.org>
Reviewed-by: default avatarDavid Bokan <bokan@chromium.org>
Commit-Queue: Xianzhu Wang <wangxianzhu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#615649}
parent 49da65ca
...@@ -337,6 +337,7 @@ class CC_EXPORT LayerTreeHost : public MutatorHostClient { ...@@ -337,6 +337,7 @@ class CC_EXPORT LayerTreeHost : public MutatorHostClient {
// viewport layers. // viewport layers.
struct ViewportPropertyIds { struct ViewportPropertyIds {
int page_scale_transform = TransformTree::kInvalidNodeId; int page_scale_transform = TransformTree::kInvalidNodeId;
int inner_scroll = ScrollTree::kInvalidNodeId;
// TODO(crbug.com/909750): Switch other usages of viewport layers to // TODO(crbug.com/909750): Switch other usages of viewport layers to
// property ids for CompositeAfterPaint. // property ids for CompositeAfterPaint.
}; };
......
...@@ -472,6 +472,7 @@ void LayerTreeImpl::PushPropertiesTo(LayerTreeImpl* target_tree) { ...@@ -472,6 +472,7 @@ void LayerTreeImpl::PushPropertiesTo(LayerTreeImpl* target_tree) {
// The page scale factor update can affect scrolling which requires that // The page scale factor update can affect scrolling which requires that
// these ids are set, so this must be before PushPageScaleFactorAndLimits. // these ids are set, so this must be before PushPageScaleFactorAndLimits.
target_tree->SetViewportLayersFromIds(viewport_layer_ids_); target_tree->SetViewportLayersFromIds(viewport_layer_ids_);
target_tree->set_viewport_property_ids(viewport_property_ids_);
// Active tree already shares the page_scale_factor object with pending // Active tree already shares the page_scale_factor object with pending
// tree so only the limits need to be provided. // tree so only the limits need to be provided.
...@@ -1181,9 +1182,13 @@ void LayerTreeImpl::ClearViewportLayers() { ...@@ -1181,9 +1182,13 @@ void LayerTreeImpl::ClearViewportLayers() {
const ScrollNode* LayerTreeImpl::InnerViewportScrollNode() const { const ScrollNode* LayerTreeImpl::InnerViewportScrollNode() const {
auto* inner_scroll = InnerViewportScrollLayer(); auto* inner_scroll = InnerViewportScrollLayer();
if (!inner_scroll) if (!inner_scroll) {
return nullptr; // TODO(crbug.com/909750): Check all other callers of
// InnerViewportScrollLayer() and switch to
// viewport_property_ids_.inner_scroll if needed.
return property_trees()->scroll_tree.Node(
viewport_property_ids_.inner_scroll);
}
return property_trees()->scroll_tree.Node(inner_scroll->scroll_tree_index()); return property_trees()->scroll_tree.Node(inner_scroll->scroll_tree_index());
} }
......
...@@ -2919,7 +2919,10 @@ void LocalFrameView::PushPaintArtifactToCompositor( ...@@ -2919,7 +2919,10 @@ void LocalFrameView::PushPaintArtifactToCompositor(
LocalFrameUkmAggregator::kCompositingCommit); LocalFrameUkmAggregator::kCompositingCommit);
PaintArtifactCompositor::ViewportProperties viewport_properties; PaintArtifactCompositor::ViewportProperties viewport_properties;
viewport_properties.page_scale = page->GetVisualViewport().GetPageScaleNode(); const auto& viewport = page->GetVisualViewport();
viewport_properties.page_scale = viewport.GetPageScaleNode();
viewport_properties.inner_scroll_translation =
viewport.GetScrollTranslationNode();
PaintArtifactCompositor::Settings settings; PaintArtifactCompositor::Settings settings;
settings.prefer_compositing_to_lcd_text = settings.prefer_compositing_to_lcd_text =
......
...@@ -752,6 +752,27 @@ cc::Layer* PaintArtifactCompositor::CreateOrReuseSynthesizedClipLayer( ...@@ -752,6 +752,27 @@ cc::Layer* PaintArtifactCompositor::CreateOrReuseSynthesizedClipLayer(
return synthesized_clip.GetLayer(); return synthesized_clip.GetLayer();
} }
static void UpdateCompositorViewportProperties(
const PaintArtifactCompositor::ViewportProperties& properties,
PropertyTreeManager& property_tree_manager,
cc::LayerTreeHost* layer_tree_host) {
cc::LayerTreeHost::ViewportPropertyIds ids;
// This is also needed by pre-CompositeAfterPaint, so is not guarded by
// CompositeAfterPaintEnabled().
if (properties.page_scale) {
ids.page_scale_transform =
property_tree_manager.EnsureCompositorPageScaleTransformNode(
properties.page_scale);
}
if (RuntimeEnabledFeatures::CompositeAfterPaintEnabled()) {
if (properties.inner_scroll_translation) {
ids.inner_scroll = property_tree_manager.EnsureCompositorScrollNode(
properties.inner_scroll_translation);
}
layer_tree_host->RegisterViewportPropertyIds(ids);
}
}
void PaintArtifactCompositor::Update( void PaintArtifactCompositor::Update(
scoped_refptr<const PaintArtifact> paint_artifact, scoped_refptr<const PaintArtifact> paint_artifact,
CompositorElementIdSet& composited_element_ids, CompositorElementIdSet& composited_element_ids,
...@@ -784,14 +805,8 @@ void PaintArtifactCompositor::Update( ...@@ -784,14 +805,8 @@ void PaintArtifactCompositor::Update(
Vector<PendingLayer, 0> pending_layers; Vector<PendingLayer, 0> pending_layers;
CollectPendingLayers(*paint_artifact, settings, pending_layers); CollectPendingLayers(*paint_artifact, settings, pending_layers);
cc::LayerTreeHost::ViewportPropertyIds viewport_property_ids; UpdateCompositorViewportProperties(viewport_properties, property_tree_manager,
if (viewport_properties.page_scale) { host);
viewport_property_ids.page_scale_transform =
property_tree_manager.EnsureCompositorPageScaleTransformNode(
viewport_properties.page_scale);
}
if (RuntimeEnabledFeatures::CompositeAfterPaintEnabled())
host->RegisterViewportPropertyIds(viewport_property_ids);
Vector<std::unique_ptr<ContentLayerClientImpl>> new_content_layer_clients; Vector<std::unique_ptr<ContentLayerClientImpl>> new_content_layer_clients;
new_content_layer_clients.ReserveCapacity(pending_layers.size()); new_content_layer_clients.ReserveCapacity(pending_layers.size());
......
...@@ -71,6 +71,9 @@ class PLATFORM_EXPORT PaintArtifactCompositor final ...@@ -71,6 +71,9 @@ class PLATFORM_EXPORT PaintArtifactCompositor final
struct ViewportProperties { struct ViewportProperties {
const TransformPaintPropertyNode* page_scale = nullptr; const TransformPaintPropertyNode* page_scale = nullptr;
const TransformPaintPropertyNode* inner_scroll_translation = nullptr;
// TODO(crbug.com/909750): Add other viewport properties, e.g.
// outer_scroll_translation.
}; };
struct Settings { struct Settings {
......
...@@ -369,18 +369,17 @@ crbug.com/589265 virtual/threaded/animations/svg/animated-filter-svg-element.htm ...@@ -369,18 +369,17 @@ crbug.com/589265 virtual/threaded/animations/svg/animated-filter-svg-element.htm
# virtual/threaded variants of sub-directories and tests already skipped or marked as failing above. # virtual/threaded variants of sub-directories and tests already skipped or marked as failing above.
Bug(none) virtual/threaded/http/tests/devtools/ [ Skip ] Bug(none) virtual/threaded/http/tests/devtools/ [ Skip ]
Bug(none) virtual/threaded/fast/events/pinch/gesture-pinch-zoom-scroll-bubble.html [ Failure Crash ] Bug(none) virtual/threaded/fast/events/pinch/gesture-pinch-zoom-scroll-bubble.html [ Timeout ]
Bug(none) virtual/threaded/fast/events/pinch/gesture-pinch-zoom-prevent-in-handler.html [ Failure Crash ] Bug(none) virtual/threaded/fast/events/pinch/pinch-zoom-pan-within-zoomed-viewport.html [ Failure ]
Bug(none) virtual/threaded/fast/events/pinch/scroll-visual-viewport-send-boundary-events.html [ Failure Crash ] Bug(none) virtual/threaded/fast/events/pinch/scroll-visual-viewport-send-boundary-events.html [ Timeout ]
Bug(none) virtual/threaded/fast/events/pointerevents/pinch/pointerevent_touch-action-pinch_zoom_touch.html [ Pass Failure ]
Bug(none) virtual/threaded/fast/scroll-behavior/ [ Skip ] Bug(none) virtual/threaded/fast/scroll-behavior/ [ Skip ]
Bug(none) virtual/threaded/compositing/visibility/layer-visible-content.html [ Failure ] Bug(none) virtual/threaded/compositing/visibility/layer-visible-content.html [ Failure ]
Bug(none) virtual/threaded/compositing/visibility/overlays.html [ Failure Crash ] Bug(none) virtual/threaded/compositing/visibility/overlays.html [ Failure ]
Bug(none) virtual/threaded/compositing/visibility/visibility-image-layers-dynamic.html [ Crash Failure ] Bug(none) virtual/threaded/compositing/visibility/visibility-image-layers-dynamic.html [ Failure ]
Bug(none) virtual/threaded/compositing/webgl/webgl-reflection.html [ Failure Pass ] Bug(none) virtual/threaded/compositing/webgl/webgl-reflection.html [ Failure Pass ]
Bug(none) virtual/threaded/compositing/webgl/webgl-with-accelerated-background-color.html [ Failure Pass ] Bug(none) virtual/threaded/compositing/webgl/webgl-with-accelerated-background-color.html [ Failure Pass ]
Bug(none) virtual/threaded/printing/ [ Skip ] Bug(none) virtual/threaded/printing/ [ Skip ]
Bug(none) virtual/threaded/synthetic_gestures/ [ Failure Pass Crash ] Bug(none) virtual/threaded/synthetic_gestures/smooth-scroll-tiny-delta.html [ Failure ]
Bug(none) fast/forms/validation-bubble-appearance-edge.html [ Failure ] Bug(none) fast/forms/validation-bubble-appearance-edge.html [ Failure ]
Bug(none) fast/forms/validation-bubble-appearance-iframe.html [ Failure ] Bug(none) fast/forms/validation-bubble-appearance-iframe.html [ Failure ]
...@@ -479,14 +478,8 @@ Bug(none) svg/transforms/text-with-mask-with-svg-transform.svg [ Failure ] ...@@ -479,14 +478,8 @@ Bug(none) svg/transforms/text-with-mask-with-svg-transform.svg [ Failure ]
crbug.com/833083 paint/invalidation/compositing/composited-layers-move-in-subpixels.html [ Failure ] crbug.com/833083 paint/invalidation/compositing/composited-layers-move-in-subpixels.html [ Failure ]
Bug(none) compositing/squashing/frame-clip-squashed-scrolled.html [ Failure ] Bug(none) compositing/squashing/frame-clip-squashed-scrolled.html [ Failure ]
Bug(none) paint/invalidation/selection/japanese-rl-selection-repaint.html [ Failure ] Bug(none) paint/invalidation/selection/japanese-rl-selection-repaint.html [ Failure ]
Bug(none) virtual/threaded/external/wpt/feature-policy/experimental-features/vertical-scroll-touch-block-manual.tentative.html [ Failure ] Bug(none) virtual/threaded/external/wpt/feature-policy/experimental-features/vertical-scroll-touch-block-manual.tentative.html [ Failure ]
Bug(none) virtual/threaded/fast/events/pinch/gesture-pinch-fake-mouse-wheel.html [ Pass Failure Crash ]
Bug(none) virtual/threaded/fast/events/pinch/pinch-zoom-into-center.html [ Pass Failure Crash ]
Bug(none) virtual/threaded/fast/events/pinch/pinch-zoom-pan-position-fixed.html [ Pass Failure Crash ]
Bug(none) virtual/threaded/fast/events/pinch/pinch-zoom-pan-within-zoomed-viewport.html [ Pass Failure Crash ]
Bug(none) compositing/overflow/scrollbar-layer-placement-negative-z-index-child-positioned.html [ Failure ] Bug(none) compositing/overflow/scrollbar-layer-placement-negative-z-index-child-positioned.html [ Failure ]
Bug(none) paint/float/float-under-inline-self-painting-change.html [ Failure ] Bug(none) paint/float/float-under-inline-self-painting-change.html [ Failure ]
......
...@@ -1990,9 +1990,6 @@ crbug.com/613672 [ Mac ] virtual/threaded/synthetic_gestures/synthetic-pinch-zoo ...@@ -1990,9 +1990,6 @@ crbug.com/613672 [ Mac ] virtual/threaded/synthetic_gestures/synthetic-pinch-zoo
### See crbug.com/891427 comment near the top of this file: ### See crbug.com/891427 comment near the top of this file:
####crbug.com/613672 [ Mac ] virtual/threaded/synthetic_gestures/synthetic-pinch-zoom-gesture-touchscreen-desktop.html [ Skip ] ####crbug.com/613672 [ Mac ] virtual/threaded/synthetic_gestures/synthetic-pinch-zoom-gesture-touchscreen-desktop.html [ Skip ]
# This test are currently flaky.
crbug.com/877361 virtual/threaded/fast/events/pinch/gesture-pinch-zoom-scroll-bubble.html [ Timeout Pass ]
crbug.com/522648 fast/events/touch/compositor-touch-hit-rects-iframes.html [ Crash Failure Pass ] crbug.com/522648 fast/events/touch/compositor-touch-hit-rects-iframes.html [ Crash Failure Pass ]
crbug.com/522648 virtual/mouseevent_fractional/fast/events/touch/compositor-touch-hit-rects-iframes.html [ Crash Failure Pass ] crbug.com/522648 virtual/mouseevent_fractional/fast/events/touch/compositor-touch-hit-rects-iframes.html [ Crash Failure Pass ]
crbug.com/522648 virtual/scroll_customization/fast/events/touch/compositor-touch-hit-rects-iframes.html [ Skip ] crbug.com/522648 virtual/scroll_customization/fast/events/touch/compositor-touch-hit-rects-iframes.html [ Skip ]
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment