[TreesInViz] Send LayerTreeHostImpl::viewport_damage_rect_ to viz.
Without this, HasDamage() may return false and a frame may be incorrectly skipped for drawing. This fixed ~60 failing content_browsertests. TEST=trees_in_viz bot Bug: 404335731 Change-Id: Ic2d49ecc1c033cd02863f21a0f4700a16a9c5eb4 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6369927 Reviewed-by: Alex Gough <ajgo@chromium.org> Auto-Submit: Zhenyao Mo <zmo@chromium.org> Commit-Queue: Alex Gough <ajgo@chromium.org> Reviewed-by: Victor Miura <vmiura@chromium.org> Cr-Commit-Position: refs/heads/main@{#1435567}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
aa1218ba79
commit
a1f99081a5
cc
mojo_embedder
test
trees
components/viz/service/layers
services/viz/public/mojom/compositing
testing/buildbot/filters
@ -743,7 +743,8 @@ void VizLayerContext::SetVisible(bool visible) {
|
||||
void VizLayerContext::UpdateDisplayTreeFrom(
|
||||
LayerTreeImpl& tree,
|
||||
viz::ClientResourceProvider& resource_provider,
|
||||
viz::RasterContextProvider& context_provider) {
|
||||
viz::RasterContextProvider& context_provider,
|
||||
const gfx::Rect& viewport_damage_rect) {
|
||||
auto& property_trees = *tree.property_trees();
|
||||
auto update = viz::mojom::LayerTreeUpdate::New();
|
||||
update->begin_frame_args = tree.CurrentBeginFrameArgs();
|
||||
@ -765,6 +766,8 @@ void VizLayerContext::UpdateDisplayTreeFrom(
|
||||
update->outer_clip = property_ids.outer_clip;
|
||||
update->outer_scroll = property_ids.outer_scroll;
|
||||
|
||||
update->viewport_damage_rect = viewport_damage_rect;
|
||||
|
||||
// This flag will be set if and only if a new layer list was pushed to the
|
||||
// active tree during activation, implying that at least one layer addition or
|
||||
// removal happened since our last update. In this case only, we push the full
|
||||
|
@ -40,10 +40,10 @@ class CC_MOJO_EMBEDDER_EXPORT VizLayerContext
|
||||
|
||||
// LayerContext:
|
||||
void SetVisible(bool visible) override;
|
||||
void UpdateDisplayTreeFrom(
|
||||
LayerTreeImpl& tree,
|
||||
viz::ClientResourceProvider& resource_provider,
|
||||
viz::RasterContextProvider& context_provider) override;
|
||||
void UpdateDisplayTreeFrom(LayerTreeImpl& tree,
|
||||
viz::ClientResourceProvider& resource_provider,
|
||||
viz::RasterContextProvider& context_provider,
|
||||
const gfx::Rect& viewport_damage_rect) override;
|
||||
void UpdateDisplayTile(PictureLayerImpl& layer,
|
||||
const Tile& tile,
|
||||
viz::ClientResourceProvider& resource_provider,
|
||||
|
@ -11,7 +11,8 @@ void FakeLayerContext::SetVisible(bool visible) {}
|
||||
void FakeLayerContext::UpdateDisplayTreeFrom(
|
||||
LayerTreeImpl& tree,
|
||||
viz::ClientResourceProvider& resource_provider,
|
||||
viz::RasterContextProvider& context_provider) {}
|
||||
viz::RasterContextProvider& context_provider,
|
||||
const gfx::Rect& viewport_damage_rect) {}
|
||||
|
||||
void FakeLayerContext::UpdateDisplayTile(
|
||||
PictureLayerImpl& layer,
|
||||
|
@ -16,10 +16,10 @@ class FakeLayerContext : public LayerContext {
|
||||
|
||||
void SetVisible(bool visible) override;
|
||||
|
||||
void UpdateDisplayTreeFrom(
|
||||
LayerTreeImpl& tree,
|
||||
viz::ClientResourceProvider& resource_provider,
|
||||
viz::RasterContextProvider& context_provider) override;
|
||||
void UpdateDisplayTreeFrom(LayerTreeImpl& tree,
|
||||
viz::ClientResourceProvider& resource_provider,
|
||||
viz::RasterContextProvider& context_provider,
|
||||
const gfx::Rect& viewport_damage_rect) override;
|
||||
|
||||
void UpdateDisplayTile(PictureLayerImpl& layer,
|
||||
const Tile& tile,
|
||||
|
@ -11,7 +11,8 @@ void TestLayerContext::SetVisible(bool visible) {}
|
||||
void TestLayerContext::UpdateDisplayTreeFrom(
|
||||
LayerTreeImpl& tree,
|
||||
viz::ClientResourceProvider& resource_provider,
|
||||
viz::RasterContextProvider& context_provider) {}
|
||||
viz::RasterContextProvider& context_provider,
|
||||
const gfx::Rect& viewport_damage_rect) {}
|
||||
|
||||
void TestLayerContext::UpdateDisplayTile(
|
||||
PictureLayerImpl& layer,
|
||||
|
@ -16,10 +16,10 @@ class TestLayerContext : public LayerContext {
|
||||
|
||||
void SetVisible(bool visible) override;
|
||||
|
||||
void UpdateDisplayTreeFrom(
|
||||
LayerTreeImpl& tree,
|
||||
viz::ClientResourceProvider& resource_provider,
|
||||
viz::RasterContextProvider& context_provider) override;
|
||||
void UpdateDisplayTreeFrom(LayerTreeImpl& tree,
|
||||
viz::ClientResourceProvider& resource_provider,
|
||||
viz::RasterContextProvider& context_provider,
|
||||
const gfx::Rect& viewport_damage_rect) override;
|
||||
|
||||
void UpdateDisplayTile(PictureLayerImpl& layer,
|
||||
const Tile& tile,
|
||||
|
@ -9,6 +9,10 @@
|
||||
#include "cc/trees/commit_state.h"
|
||||
#include "components/viz/common/surfaces/local_surface_id.h"
|
||||
|
||||
namespace gfx {
|
||||
class Rect;
|
||||
} // namespace gfx
|
||||
|
||||
namespace viz {
|
||||
class ClientResourceProvider;
|
||||
class RasterContextProvider;
|
||||
@ -33,7 +37,8 @@ class CC_EXPORT LayerContext {
|
||||
virtual void UpdateDisplayTreeFrom(
|
||||
LayerTreeImpl& tree,
|
||||
viz::ClientResourceProvider& resource_provider,
|
||||
viz::RasterContextProvider& context_provider) = 0;
|
||||
viz::RasterContextProvider& context_provider,
|
||||
const gfx::Rect& viewport_damage_rect) = 0;
|
||||
|
||||
// Pushes an update to a single tile in the context's display tree.
|
||||
virtual void UpdateDisplayTile(
|
||||
|
@ -3287,7 +3287,7 @@ void LayerTreeHostImpl::UpdateDisplayTree(FrameData& frame) {
|
||||
|
||||
layer_context_->UpdateDisplayTreeFrom(
|
||||
*active_tree(), *resource_provider(),
|
||||
*layer_tree_frame_sink_->context_provider());
|
||||
*layer_tree_frame_sink_->context_provider(), viewport_damage_rect_);
|
||||
}
|
||||
|
||||
int LayerTreeHostImpl::RequestedMSAASampleCount() const {
|
||||
|
@ -1190,6 +1190,8 @@ base::expected<void, std::string> LayerContextImpl::DoUpdateDisplayTree(
|
||||
|
||||
RETURN_IF_ERROR(UpdateViewportPropertyIds(layers, property_trees, *update));
|
||||
|
||||
host_impl_->SetViewportDamage(update->viewport_damage_rect);
|
||||
|
||||
property_trees.UpdateChangeTracking();
|
||||
property_trees.transform_tree_mutable().set_needs_update(
|
||||
transform_size_changed || transform_properties_changed ||
|
||||
|
@ -59,6 +59,9 @@ struct LayerTreeUpdate {
|
||||
int32 outer_clip;
|
||||
int32 outer_scroll;
|
||||
|
||||
// The tree's viewport damage rect.
|
||||
gfx.mojom.Rect viewport_damage_rect;
|
||||
|
||||
// Properties of layers added or modified since the last update. Note that the
|
||||
// ordering of this array is arbitrary and not relevant to the tree's layer
|
||||
// list order. If any layers were added, removed, or otherwise reordered in
|
||||
|
@ -1,56 +1,30 @@
|
||||
-All/CompositedScrollingMetricTest.BlockingEventHandlers/Composited
|
||||
-All/CompositedScrollingMetricTest.BlockingEventHandlers/Composited_RasterInducingScroll
|
||||
-All/CompositedScrollingMetricTest.BlockingEventHandlers/NonComposited
|
||||
-All/CompositedScrollingMetricTest.BlockingEventHandlers/NonComposited_RasterInducingScroll
|
||||
-All/CompositedScrollingMetricTest.PassiveEventHandlers/Composited
|
||||
-All/CompositedScrollingMetricTest.PassiveEventHandlers/Composited_RasterInducingScroll
|
||||
-All/CompositedScrollingMetricTest.PassiveEventHandlers/NonComposited
|
||||
-All/CompositedScrollingMetricTest.PassiveEventHandlers/NonComposited_RasterInducingScroll
|
||||
-All/CompositedScrollingMetricTest.RecordCorrectScrollingThread/Composited
|
||||
-All/CompositedScrollingMetricTest.RecordCorrectScrollingThread/Composited_RasterInducingScroll
|
||||
-All/CompositedScrollingMetricTest.RecordCorrectScrollingThread/NonComposited
|
||||
-All/CompositedScrollingMetricTest.RecordCorrectScrollingThread/NonComposited_RasterInducingScroll
|
||||
-All/NavigationBrowserTestPaintHoldingSubframe.BasicInProcessIframe/0
|
||||
-All/NavigationBrowserTestPaintHoldingSubframe.BasicInProcessIframe/1
|
||||
-All/NavigationBrowserTestPaintHoldingSubframe.CrossOrigin/0
|
||||
-All/NavigationBrowserTestPaintHoldingSubframe.CrossOrigin/1
|
||||
-All/RenderWidgetHostItemSequenceNumberInRenderFrameMetadataTest.ItemSequenceNumberExpectedNoContentChange/SameDoc
|
||||
-All/SandboxedNavigationControllerBrowserTest.TopLevelNavigationFromSandboxSource/RDAllFrames_BFCacheDisabled
|
||||
-All/SandboxedNavigationControllerBrowserTest.TopLevelNavigationFromSandboxSource/RDAllFrames_BFCacheEnabled
|
||||
-All/SandboxedNavigationControllerBrowserTest.TopLevelNavigationFromSandboxSource/RDCrashedFrame_BFCacheDisabled
|
||||
-All/SandboxedNavigationControllerBrowserTest.TopLevelNavigationFromSandboxSource/RDCrashedFrame_BFCacheEnabled
|
||||
-All/ScrollingIntegrationTest.ScrollAfterCrossOriginNavigation/0
|
||||
-All/ScrollingIntegrationTest.ScrollAfterCrossOriginNavigation/1
|
||||
-All/ServiceWorkerWarmUpByPointerBrowserTest.PointeroverOrPointerdownWillWarmUpServiceWorker/0
|
||||
-All/ServiceWorkerWarmUpByPointerBrowserTest.PointeroverOrPointerdownWillWarmUpServiceWorker/1
|
||||
-All/ServiceWorkerWarmUpByPointerBrowserTest.PointeroverOrPointerdownWillWarmUpServiceWorker/2
|
||||
-All/SitePerProcessBrowserTest.ScrollByRAF/0
|
||||
-All/SitePerProcessBrowserTest.ScrollByRAF/1
|
||||
-All/SitePerProcessBrowserTest.ScrollOopifInPinchZoomedPage/0
|
||||
-All/SitePerProcessBrowserTest.ScrollOopifInPinchZoomedPage/1
|
||||
-AutoscrollBrowserTest.AutoscrollDirectionChangeAfterFullyScrolled
|
||||
-AutoscrollBrowserTest.WheelScrollingDoesNotWorkInAutoscrollMode
|
||||
-CaptureScreenshotTest.SetDefaultBackgroundColorOverride
|
||||
-CaptureScreenshotTest.TransparentScreenshotsBeyondViewport
|
||||
-CaptureScreenshotTest.TransparentScreenshotsFull
|
||||
-CaptureScreenshotTest.TransparentScreenshotsViewport
|
||||
-CompositedScrollingBrowserTest.Scroll3DTransformedScroller
|
||||
-CompositorEventAckBrowserTest.PassiveTouchStartBlockingTouchEnd
|
||||
-CompositorEventAckBrowserTest.TouchStart
|
||||
-ForceLoadAtTopBrowserTest.FragmentAnchorDisabled
|
||||
-ForceLoadAtTopBrowserTest.SameDocumentNavigation
|
||||
-ForceLoadAtTopBrowserTest.ScrollRestorationDisabled
|
||||
-ForceLoadAtTopBrowserTest.TextFragmentAnchorDisabled
|
||||
-P/ViewTransitionBrowserTestTraverse.TransitionOnSessionRestoreTraversal/0
|
||||
-P/ViewTransitionCaptureTest.ViewTransitionNoArtifactDuringCapture/0
|
||||
-P/ViewTransitionCaptureTest.ViewTransitionNoArtifactDuringCapture/1
|
||||
-PrerenderBrowserTest.InputRoutedToPrimaryFrameTree
|
||||
-PrerenderBrowserDeathTest.PrerenderCannotHaveInnerContents
|
||||
-RenderFrameHostImplBrowserTestWithBFCacheAndViewTransition.NewContentTimeoutIsSetWhenLeavingBFCacheWithViewTransition
|
||||
-RenderFrameHostImplDeathTest.ReloadInPendingDeletionOrBFCache
|
||||
-RenderWidgetHostDelegatedInkMetadataTest.DuplicateMetadata
|
||||
-ScrollBehaviorBrowserTest.SmoothWheelScrollCompletesWithScriptedMirror
|
||||
-ScrollLatencyBrowserTest.ScrollingEventLatencyTrace
|
||||
-SecurityExploitBrowserTest.AllowBindingsForNonWebUIProcess
|
||||
-SitePerProcessEmulatedTouchBrowserTest.EmulatedGestureScrollBubbles
|
||||
-SitePerProcessEmulatedTouchBrowserTest.EmulatedTouchPinchGoesToMainFrame
|
||||
-SitePerProcessEmulatedTouchBrowserTest.EmulatedTouchScrollBubbles
|
||||
-SitePerProcessHighDPIHitTestBrowserTest.HitTestLayerSquashing
|
||||
-SitePerProcessHighDPIHitTestBrowserTest.HitTestWatermark
|
||||
-SitePerProcessHighDPIHitTestBrowserTest.OverlapSurfaceHitTestTest
|
||||
@ -58,48 +32,14 @@
|
||||
-SitePerProcessHitTestBrowserTest.HitTestNestedOccludedOOPIF
|
||||
-SitePerProcessHitTestBrowserTest.HitTestWatermark
|
||||
-SitePerProcessHitTestBrowserTest.OverlapSurfaceHitTestTest
|
||||
-SitePerProcessHitTestBrowserTest.ScrollBubblingTargetWithUnrelatedGesture
|
||||
-SitePerProcessHitTestBrowserTest.SubframeGestureEventRouting
|
||||
-SitePerProcessHitTestBrowserTest.TouchpadPinchWhenMissingHitTestDataDoesNotCrash
|
||||
-SitePerProcessHitTestDataGenerationBrowserTest.AncestorMaskedOOPIF
|
||||
-SitePerProcessHitTestDataGenerationBrowserTest.MaskedOOPIF
|
||||
-SitePerProcessHitTestDataGenerationBrowserTest.OccludedOOPIF
|
||||
-SitePerProcessHitTestDataGenerationBrowserTest.OverlappedOOPIF
|
||||
-SnapshotBrowserTest.SingleWindowTest
|
||||
-SnapshotBrowserTest.SyncMultiWindowTest
|
||||
-SyntheticInputTest.SmoothScrollWheel
|
||||
-TextFragmentAnchorBrowserTest.DisabledOnScriptHistoryNavigation
|
||||
-TextFragmentAnchorBrowserTest.EnabledByDocumentPolicy
|
||||
-TextFragmentAnchorBrowserTest.EnabledOnBrowserNavigation
|
||||
-TextFragmentAnchorBrowserTest.EnabledOnUserGestureScriptNavigation
|
||||
-TextFragmentAnchorBrowserTest.EnabledOnUserNavigation
|
||||
-TextFragmentAnchorBrowserTest.HistoryDoesntGenerateToken
|
||||
-TextFragmentAnchorBrowserTest.LinkOpenSourceMetrics_GoogleClientRedirect
|
||||
-TextFragmentAnchorBrowserTest.LinkOpenSourceMetrics_GoogleServerRedirect
|
||||
-TextFragmentAnchorBrowserTest.SameDocumentBrowserNavigation
|
||||
-TextFragmentAnchorBrowserTest.SameDocumentBrowserNavigationOnScriptNavigatedDocument
|
||||
-TextFragmentAnchorBrowserTest.SameDocumentScriptNavigation
|
||||
-TextFragmentAnchorBrowserTest.SameDocumentScriptNavigationCrossOrigin
|
||||
-TextFragmentAnchorBrowserTest.SameDocumentScriptNavigationSameOrigin
|
||||
-TextFragmentAnchorBrowserTest.UserGestureConsumed
|
||||
-TextFragmentAnchorBrowserTest.UserGesturePassedThroughRedirect
|
||||
-TouchActionBrowserTest.BlockDoubleTapDragZoom
|
||||
-TouchActionBrowserTest.DefaultAuto
|
||||
-TouchActionBrowserTest.PanXMainThreadJanky
|
||||
-TouchActionBrowserTest.PanXYAtAutoXOverlapAreaMainThreadJanky
|
||||
-TouchActionBrowserTest.PanXYAtAutoYOverlapAreaMainThreadJanky
|
||||
-TouchActionBrowserTest.PanXYAtXAreaMainThreadJanky
|
||||
-TouchActionBrowserTest.PanXYAtYAreaMainThreadJanky
|
||||
-TouchActionBrowserTest.PanXYMainThreadJanky
|
||||
-TouchActionBrowserTest.PanYMainThreadJanky
|
||||
-TouchActionBrowserTest.TouchActionNone
|
||||
-TouchActionBrowserTest.TwoFingerPanYDisallowed
|
||||
-TouchActionBrowserTestEnableCursorControl.NoCursorControlForHorizontalScrollable
|
||||
-TouchActionBrowserTestEnableCursorControl.NoCursorControlOnHorizontalScrollableInput
|
||||
-TouchpadPinchBrowserTest.TouchpadPinchChangesPageScale
|
||||
-TouchpadPinchBrowserTest.WheelListenerAllowingPinch
|
||||
-TouchpadPinchBrowserTest.WheelListenerPreventingPinch
|
||||
-ViewTransitionBrowserTest.NavigationCancelledAfterScreenshot
|
||||
-ViewTransitionBrowserTest.NavigationCancelledBeforeScreenshot
|
||||
-ViewTransitionBrowserTest.OwnershipTransferredToNewRenderer
|
||||
-WebContentsImplBrowserTest.MouseUpInOOPIframeShouldCancelMainFrameAutoscrollSelection
|
||||
-WebContentsViewAuraTest.DragDropOnOopif
|
||||
-ViewTransitionBrowserTest.OwnershipTransferredToNewRenderer
|
Reference in New Issue
Block a user