Commit 3aca7952 authored by abarth@chromium.org's avatar abarth@chromium.org

Delete RenderLayerCompositor::m_compositingLayersNeedRebuild

This CL folds m_compositingLayersNeedRebuild into m_updateType, which lets us
remove a bunch of parallel bookkeeping.

BUG=332248

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

git-svn-id: svn://svn.chromium.org/blink/trunk@175760 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent d19f8510
...@@ -3213,7 +3213,7 @@ void HTMLMediaElement::didBecomeFullscreenElement() ...@@ -3213,7 +3213,7 @@ void HTMLMediaElement::didBecomeFullscreenElement()
if (hasMediaControls()) if (hasMediaControls())
mediaControls()->enteredFullscreen(); mediaControls()->enteredFullscreen();
if (RuntimeEnabledFeatures::overlayFullscreenVideoEnabled() && isHTMLVideoElement(*this)) if (RuntimeEnabledFeatures::overlayFullscreenVideoEnabled() && isHTMLVideoElement(*this))
document().renderView()->compositor()->setCompositingLayersNeedRebuild(); document().renderView()->compositor()->setNeedsCompositingUpdate(CompositingUpdateRebuildTree);
} }
void HTMLMediaElement::willStopBeingFullscreenElement() void HTMLMediaElement::willStopBeingFullscreenElement()
...@@ -3221,7 +3221,7 @@ void HTMLMediaElement::willStopBeingFullscreenElement() ...@@ -3221,7 +3221,7 @@ void HTMLMediaElement::willStopBeingFullscreenElement()
if (hasMediaControls()) if (hasMediaControls())
mediaControls()->exitedFullscreen(); mediaControls()->exitedFullscreen();
if (RuntimeEnabledFeatures::overlayFullscreenVideoEnabled() && isHTMLVideoElement(*this)) if (RuntimeEnabledFeatures::overlayFullscreenVideoEnabled() && isHTMLVideoElement(*this))
document().renderView()->compositor()->setCompositingLayersNeedRebuild(); document().renderView()->compositor()->setNeedsCompositingUpdate(CompositingUpdateRebuildTree);
} }
blink::WebLayer* HTMLMediaElement::platformLayer() const blink::WebLayer* HTMLMediaElement::platformLayer() const
......
...@@ -110,7 +110,7 @@ void RenderLayerStackingNode::dirtyZOrderLists() ...@@ -110,7 +110,7 @@ void RenderLayerStackingNode::dirtyZOrderLists()
m_zOrderListsDirty = true; m_zOrderListsDirty = true;
if (!renderer()->documentBeingDestroyed()) if (!renderer()->documentBeingDestroyed())
compositor()->setCompositingLayersNeedRebuild(); compositor()->setNeedsCompositingUpdate(CompositingUpdateRebuildTree);
} }
void RenderLayerStackingNode::dirtyStackingContextZOrderLists() void RenderLayerStackingNode::dirtyStackingContextZOrderLists()
...@@ -132,7 +132,7 @@ void RenderLayerStackingNode::dirtyNormalFlowList() ...@@ -132,7 +132,7 @@ void RenderLayerStackingNode::dirtyNormalFlowList()
m_normalFlowListDirty = true; m_normalFlowListDirty = true;
if (!renderer()->documentBeingDestroyed()) if (!renderer()->documentBeingDestroyed())
compositor()->setCompositingLayersNeedRebuild(); compositor()->setNeedsCompositingUpdate(CompositingUpdateRebuildTree);
} }
void RenderLayerStackingNode::rebuildZOrderLists() void RenderLayerStackingNode::rebuildZOrderLists()
......
...@@ -33,7 +33,7 @@ public: ...@@ -33,7 +33,7 @@ public:
ForceUpdate, ForceUpdate,
}; };
void updateAncestorDependentProperties(RenderLayer*, UpdateType, AncestorInfo = AncestorInfo()); void updateAncestorDependentProperties(RenderLayer*, UpdateType = DoNotForceUpdate, AncestorInfo = AncestorInfo());
#if !ASSERT_DISABLED #if !ASSERT_DISABLED
static void assertNeedsToUpdateAncestorDependantPropertiesBitsCleared(RenderLayer*); static void assertNeedsToUpdateAncestorDependantPropertiesBitsCleared(RenderLayer*);
......
...@@ -59,7 +59,7 @@ public: ...@@ -59,7 +59,7 @@ public:
ForceUpdate, ForceUpdate,
}; };
void update(RenderLayer&, UpdateType, const UpdateContext& = UpdateContext()); void update(RenderLayer&, UpdateType = DoNotForceUpdate, const UpdateContext& = UpdateContext());
void rebuildTree(RenderLayer&, GraphicsLayerVector& childLayersOfEnclosingLayer); void rebuildTree(RenderLayer&, GraphicsLayerVector& childLayersOfEnclosingLayer);
bool needsRebuildTree() const { return m_needsRebuildTree; } bool needsRebuildTree() const { return m_needsRebuildTree; }
......
...@@ -89,7 +89,6 @@ RenderLayerCompositor::RenderLayerCompositor(RenderView& renderView) ...@@ -89,7 +89,6 @@ RenderLayerCompositor::RenderLayerCompositor(RenderView& renderView)
, m_pendingUpdateType(CompositingUpdateNone) , m_pendingUpdateType(CompositingUpdateNone)
, m_hasAcceleratedCompositing(true) , m_hasAcceleratedCompositing(true)
, m_compositing(false) , m_compositing(false)
, m_compositingLayersNeedRebuild(false)
, m_rootShouldAlwaysCompositeDirty(true) , m_rootShouldAlwaysCompositeDirty(true)
, m_needsUpdateFixedBackground(false) , m_needsUpdateFixedBackground(false)
, m_isTrackingRepaints(false) , m_isTrackingRepaints(false)
...@@ -153,18 +152,11 @@ void RenderLayerCompositor::enableCompositingModeIfNeeded() ...@@ -153,18 +152,11 @@ void RenderLayerCompositor::enableCompositingModeIfNeeded()
if (rootShouldAlwaysComposite()) { if (rootShouldAlwaysComposite()) {
// FIXME: Is this needed? It was added in https://bugs.webkit.org/show_bug.cgi?id=26651. // FIXME: Is this needed? It was added in https://bugs.webkit.org/show_bug.cgi?id=26651.
// No tests fail if it's deleted. // No tests fail if it's deleted.
setCompositingLayersNeedRebuild(); setNeedsCompositingUpdate(CompositingUpdateRebuildTree);
setCompositingModeEnabled(true); setCompositingModeEnabled(true);
} }
} }
bool RenderLayerCompositor::compositingLayersNeedRebuild()
{
// enableCompositingModeIfNeeded can set the m_compositingLayersNeedRebuild bit.
ASSERT(!m_rootShouldAlwaysCompositeDirty);
return m_compositingLayersNeedRebuild;
}
bool RenderLayerCompositor::rootShouldAlwaysComposite() const bool RenderLayerCompositor::rootShouldAlwaysComposite() const
{ {
if (!m_hasAcceleratedCompositing) if (!m_hasAcceleratedCompositing)
...@@ -175,15 +167,7 @@ bool RenderLayerCompositor::rootShouldAlwaysComposite() const ...@@ -175,15 +167,7 @@ bool RenderLayerCompositor::rootShouldAlwaysComposite() const
void RenderLayerCompositor::updateAcceleratedCompositingSettings() void RenderLayerCompositor::updateAcceleratedCompositingSettings()
{ {
m_compositingReasonFinder.updateTriggers(); m_compositingReasonFinder.updateTriggers();
m_hasAcceleratedCompositing = m_renderView.document().settings()->acceleratedCompositingEnabled();
bool hasAcceleratedCompositing = m_renderView.document().settings()->acceleratedCompositingEnabled();
// FIXME: Is this needed? It was added in https://bugs.webkit.org/show_bug.cgi?id=26651.
// No tests fail if it's deleted.
if (hasAcceleratedCompositing != m_hasAcceleratedCompositing)
setCompositingLayersNeedRebuild();
m_hasAcceleratedCompositing = hasAcceleratedCompositing;
m_rootShouldAlwaysCompositeDirty = true; m_rootShouldAlwaysCompositeDirty = true;
} }
...@@ -201,14 +185,6 @@ bool RenderLayerCompositor::acceleratedCompositingForOverflowScrollEnabled() con ...@@ -201,14 +185,6 @@ bool RenderLayerCompositor::acceleratedCompositingForOverflowScrollEnabled() con
return m_compositingReasonFinder.hasOverflowScrollTrigger(); return m_compositingReasonFinder.hasOverflowScrollTrigger();
} }
void RenderLayerCompositor::setCompositingLayersNeedRebuild()
{
// FIXME: crbug.com/332248 ideally this could be merged with setNeedsCompositingUpdate().
m_compositingLayersNeedRebuild = true;
page()->animator().scheduleVisualUpdate();
lifecycle().ensureStateAtMost(DocumentLifecycle::LayoutClean);
}
static RenderVideo* findFullscreenVideoRenderer(Document& document) static RenderVideo* findFullscreenVideoRenderer(Document& document)
{ {
Element* fullscreenElement = FullscreenElementStack::fullscreenElementFrom(document); Element* fullscreenElement = FullscreenElementStack::fullscreenElementFrom(document);
...@@ -292,7 +268,6 @@ void RenderLayerCompositor::didLayout() ...@@ -292,7 +268,6 @@ void RenderLayerCompositor::didLayout()
void RenderLayerCompositor::assertNoUnresolvedDirtyBits() void RenderLayerCompositor::assertNoUnresolvedDirtyBits()
{ {
ASSERT(!compositingLayersNeedRebuild());
ASSERT(m_pendingUpdateType == CompositingUpdateNone); ASSERT(m_pendingUpdateType == CompositingUpdateNone);
ASSERT(!m_rootShouldAlwaysCompositeDirty); ASSERT(!m_rootShouldAlwaysCompositeDirty);
} }
...@@ -339,27 +314,21 @@ void RenderLayerCompositor::updateIfNeeded() ...@@ -339,27 +314,21 @@ void RenderLayerCompositor::updateIfNeeded()
// before moving this function after checking the dirty bits. // before moving this function after checking the dirty bits.
DeprecatedDirtyCompositingDuringCompositingUpdate marker(lifecycle()); DeprecatedDirtyCompositingDuringCompositingUpdate marker(lifecycle());
// FIXME: enableCompositingModeIfNeeded can call setCompositingLayersNeedRebuild, // FIXME: enableCompositingModeIfNeeded can trigger a CompositingUpdateRebuildTree,
// which asserts that it's not InCompositingUpdate. // which asserts that it's not InCompositingUpdate.
enableCompositingModeIfNeeded(); enableCompositingModeIfNeeded();
} }
CompositingUpdateType updateType = m_pendingUpdateType; CompositingUpdateType updateType = m_pendingUpdateType;
bool needHierarchyAndGeometryUpdate = compositingLayersNeedRebuild();
m_pendingUpdateType = CompositingUpdateNone; m_pendingUpdateType = CompositingUpdateNone;
m_compositingLayersNeedRebuild = false;
if (!hasAcceleratedCompositing()) if (!hasAcceleratedCompositing())
return; return;
bool needsToUpdateScrollingCoordinator = scrollingCoordinator() && scrollingCoordinator()->needsToUpdateAfterCompositingChange(); bool needsToUpdateScrollingCoordinator = scrollingCoordinator() && scrollingCoordinator()->needsToUpdateAfterCompositingChange();
if (updateType == CompositingUpdateNone && !needHierarchyAndGeometryUpdate && !needsToUpdateScrollingCoordinator) if (updateType == CompositingUpdateNone && !needsToUpdateScrollingCoordinator)
return; return;
GraphicsLayerUpdater::UpdateType graphicsLayerUpdateType = GraphicsLayerUpdater::DoNotForceUpdate;
CompositingPropertyUpdater::UpdateType compositingPropertyUpdateType = CompositingPropertyUpdater::DoNotForceUpdate;
RenderLayer* updateRoot = rootRenderLayer(); RenderLayer* updateRoot = rootRenderLayer();
Vector<RenderLayer*> layersNeedingRepaint; Vector<RenderLayer*> layersNeedingRepaint;
...@@ -368,7 +337,7 @@ void RenderLayerCompositor::updateIfNeeded() ...@@ -368,7 +337,7 @@ void RenderLayerCompositor::updateIfNeeded()
bool layersChanged = false; bool layersChanged = false;
{ {
TRACE_EVENT0("blink_rendering", "CompositingPropertyUpdater::updateAncestorDependentProperties"); TRACE_EVENT0("blink_rendering", "CompositingPropertyUpdater::updateAncestorDependentProperties");
CompositingPropertyUpdater(updateRoot).updateAncestorDependentProperties(updateRoot, compositingPropertyUpdateType); CompositingPropertyUpdater(updateRoot).updateAncestorDependentProperties(updateRoot);
#if ASSERT_ENABLED #if ASSERT_ENABLED
CompositingPropertyUpdater::assertNeedsToUpdateAncestorDependantPropertiesBitsCleared(updateRoot); CompositingPropertyUpdater::assertNeedsToUpdateAncestorDependantPropertiesBitsCleared(updateRoot);
#endif #endif
...@@ -390,16 +359,16 @@ void RenderLayerCompositor::updateIfNeeded() ...@@ -390,16 +359,16 @@ void RenderLayerCompositor::updateIfNeeded()
} }
if (layersChanged) if (layersChanged)
needHierarchyAndGeometryUpdate = true; updateType = std::max(updateType, CompositingUpdateRebuildTree);
} }
if (updateType != CompositingUpdateNone || needHierarchyAndGeometryUpdate) { if (updateType != CompositingUpdateNone) {
TRACE_EVENT0("blink_rendering", "GraphicsLayerUpdater::updateRecursive"); TRACE_EVENT0("blink_rendering", "GraphicsLayerUpdater::updateRecursive");
GraphicsLayerUpdater updater; GraphicsLayerUpdater updater;
updater.update(*updateRoot, graphicsLayerUpdateType); updater.update(*updateRoot);
if (updater.needsRebuildTree()) if (updater.needsRebuildTree())
needHierarchyAndGeometryUpdate = true; updateType = std::max(updateType, CompositingUpdateRebuildTree);
#if !ASSERT_DISABLED #if !ASSERT_DISABLED
// FIXME: Move this check to the end of the compositing update. // FIXME: Move this check to the end of the compositing update.
...@@ -407,8 +376,7 @@ void RenderLayerCompositor::updateIfNeeded() ...@@ -407,8 +376,7 @@ void RenderLayerCompositor::updateIfNeeded()
#endif #endif
} }
if (needHierarchyAndGeometryUpdate) { if (updateType >= CompositingUpdateRebuildTree) {
// Update the hierarchy of the compositing layers.
GraphicsLayerVector childList; GraphicsLayerVector childList;
{ {
TRACE_EVENT0("blink_rendering", "GraphicsLayerTreeBuilder::rebuild"); TRACE_EVENT0("blink_rendering", "GraphicsLayerTreeBuilder::rebuild");
...@@ -429,8 +397,6 @@ void RenderLayerCompositor::updateIfNeeded() ...@@ -429,8 +397,6 @@ void RenderLayerCompositor::updateIfNeeded()
m_needsUpdateFixedBackground = false; m_needsUpdateFixedBackground = false;
} }
ASSERT(updateRoot || !compositingLayersNeedRebuild());
// The scrolling coordinator may realize that it needs updating while compositing was being updated in this function. // The scrolling coordinator may realize that it needs updating while compositing was being updated in this function.
needsToUpdateScrollingCoordinator |= scrollingCoordinator() && scrollingCoordinator()->needsToUpdateAfterCompositingChange(); needsToUpdateScrollingCoordinator |= scrollingCoordinator() && scrollingCoordinator()->needsToUpdateAfterCompositingChange();
if (needsToUpdateScrollingCoordinator && m_renderView.frame()->isMainFrame() && scrollingCoordinator() && inCompositingMode()) if (needsToUpdateScrollingCoordinator && m_renderView.frame()->isMainFrame() && scrollingCoordinator() && inCompositingMode())
...@@ -555,7 +521,7 @@ void RenderLayerCompositor::updateLayerCompositingState(RenderLayer* layer, Upda ...@@ -555,7 +521,7 @@ void RenderLayerCompositor::updateLayerCompositingState(RenderLayer* layer, Upda
CompositingStateTransitionType compositedLayerUpdate = CompositingLayerAssigner(this).computeCompositedLayerUpdate(layer); CompositingStateTransitionType compositedLayerUpdate = CompositingLayerAssigner(this).computeCompositedLayerUpdate(layer);
if (compositedLayerUpdate != NoCompositingStateChange) if (compositedLayerUpdate != NoCompositingStateChange)
setCompositingLayersNeedRebuild(); setNeedsCompositingUpdate(CompositingUpdateRebuildTree);
if (options == UseChickenEggHacks) if (options == UseChickenEggHacks)
applyUpdateLayerCompositingStateChickenEggHacks(layer, compositedLayerUpdate); applyUpdateLayerCompositingStateChickenEggHacks(layer, compositedLayerUpdate);
...@@ -587,7 +553,7 @@ void RenderLayerCompositor::repaintInCompositedAncestor(RenderLayer* layer, cons ...@@ -587,7 +553,7 @@ void RenderLayerCompositor::repaintInCompositedAncestor(RenderLayer* layer, cons
void RenderLayerCompositor::layerWasAdded(RenderLayer* /*parent*/, RenderLayer* /*child*/) void RenderLayerCompositor::layerWasAdded(RenderLayer* /*parent*/, RenderLayer* /*child*/)
{ {
setCompositingLayersNeedRebuild(); setNeedsCompositingUpdate(CompositingUpdateRebuildTree);
} }
void RenderLayerCompositor::layerWillBeRemoved(RenderLayer* parent, RenderLayer* child) void RenderLayerCompositor::layerWillBeRemoved(RenderLayer* parent, RenderLayer* child)
...@@ -602,7 +568,7 @@ void RenderLayerCompositor::layerWillBeRemoved(RenderLayer* parent, RenderLayer* ...@@ -602,7 +568,7 @@ void RenderLayerCompositor::layerWillBeRemoved(RenderLayer* parent, RenderLayer*
repaintInCompositedAncestor(child, child->compositedLayerMapping()->compositedBounds()); repaintInCompositedAncestor(child, child->compositedLayerMapping()->compositedBounds());
} }
setCompositingLayersNeedRebuild(); setNeedsCompositingUpdate(CompositingUpdateRebuildTree);
} }
void RenderLayerCompositor::frameViewDidChangeLocation(const IntPoint& contentsOffset) void RenderLayerCompositor::frameViewDidChangeLocation(const IntPoint& contentsOffset)
......
...@@ -49,6 +49,7 @@ enum CompositingUpdateType { ...@@ -49,6 +49,7 @@ enum CompositingUpdateType {
CompositingUpdateNone, CompositingUpdateNone,
CompositingUpdateOnCompositedScroll, CompositingUpdateOnCompositedScroll,
CompositingUpdateAfterCompositingInputChange, CompositingUpdateAfterCompositingInputChange,
CompositingUpdateRebuildTree,
}; };
enum CompositingStateTransitionType { enum CompositingStateTransitionType {
...@@ -94,10 +95,6 @@ public: ...@@ -94,10 +95,6 @@ public:
// Copy the accelerated compositing related flags from Settings // Copy the accelerated compositing related flags from Settings
void updateAcceleratedCompositingSettings(); void updateAcceleratedCompositingSettings();
// Called when the layer hierarchy needs to be updated (compositing layers have been
// created, destroyed or re-parented).
void setCompositingLayersNeedRebuild();
// Used to indicate that a compositing update will be needed for the next frame that gets drawn. // Used to indicate that a compositing update will be needed for the next frame that gets drawn.
void setNeedsCompositingUpdate(CompositingUpdateType); void setNeedsCompositingUpdate(CompositingUpdateType);
...@@ -234,8 +231,6 @@ private: ...@@ -234,8 +231,6 @@ private:
GraphicsLayerFactory* graphicsLayerFactory() const; GraphicsLayerFactory* graphicsLayerFactory() const;
ScrollingCoordinator* scrollingCoordinator() const; ScrollingCoordinator* scrollingCoordinator() const;
bool compositingLayersNeedRebuild();
void enableCompositingModeIfNeeded(); void enableCompositingModeIfNeeded();
bool requiresHorizontalScrollbarLayer() const; bool requiresHorizontalScrollbarLayer() const;
...@@ -261,7 +256,6 @@ private: ...@@ -261,7 +256,6 @@ private:
bool m_hasAcceleratedCompositing; bool m_hasAcceleratedCompositing;
bool m_compositing; bool m_compositing;
bool m_compositingLayersNeedRebuild;
// The root layer doesn't composite if it's a non-scrollable frame. // The root layer doesn't composite if it's a non-scrollable frame.
// So, after a layout we set this dirty bit to know that we need // So, after a layout we set this dirty bit to know that we need
......
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