Changeset 238354 in webkit


Ignore:
Timestamp:
Nov 17, 2018 2:12:30 PM (6 years ago)
Author:
Simon Fraser
Message:

Clarify RenderLayerCompositor::hasAnyAdditionalCompositedLayers() and related code.
https://bugs.webkit.org/show_bug.cgi?id=191810

Reviewed by Zalan Bujtas.

Rename m_compositedLayerCount to m_contentLayersCount and have it track layers other
than the RenderView's layer.

hasAnyAdditionalCompositedLayers() is really about whether we can drop out of compositing
because no content layer is composited, and overlays don't require compositing, so
rename it.

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::updateCompositingLayers):
(WebCore::RenderLayerCompositor::computeCompositingRequirements):
(WebCore::RenderLayerCompositor::needsCompositingForContentOrOverlays const):
(WebCore::RenderLayerCompositor::layerBecameComposited):
(WebCore::RenderLayerCompositor::layerBecameNonComposited):
(WebCore::RenderLayerCompositor::layerTreeAsText):
(WebCore::RenderLayerCompositor::hasAnyAdditionalCompositedLayers const): Deleted.

  • rendering/RenderLayerCompositor.h:
Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r238352 r238354  
     12018-11-17  Simon Fraser  <simon.fraser@apple.com>
     2
     3        Clarify RenderLayerCompositor::hasAnyAdditionalCompositedLayers() and related code.
     4        https://bugs.webkit.org/show_bug.cgi?id=191810
     5
     6        Reviewed by Zalan Bujtas.
     7
     8        Rename m_compositedLayerCount to m_contentLayersCount and have it track layers other
     9        than the RenderView's layer.
     10
     11        hasAnyAdditionalCompositedLayers() is really about whether we can drop out of compositing
     12        because no content layer is composited, and overlays don't require compositing, so
     13        rename it.
     14
     15        * rendering/RenderLayerCompositor.cpp:
     16        (WebCore::RenderLayerCompositor::updateCompositingLayers):
     17        (WebCore::RenderLayerCompositor::computeCompositingRequirements):
     18        (WebCore::RenderLayerCompositor::needsCompositingForContentOrOverlays const):
     19        (WebCore::RenderLayerCompositor::layerBecameComposited):
     20        (WebCore::RenderLayerCompositor::layerBecameNonComposited):
     21        (WebCore::RenderLayerCompositor::layerTreeAsText):
     22        (WebCore::RenderLayerCompositor::hasAnyAdditionalCompositedLayers const): Deleted.
     23        * rendering/RenderLayerCompositor.h:
     24
    1252018-11-17  Simon Fraser  <simon.fraser@apple.com>
    226
  • trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp

    r238352 r238354  
    633633}
    634634
    635 bool RenderLayerCompositor::hasAnyAdditionalCompositedLayers(const RenderLayer& rootLayer) const
    636 {
    637     int layerCount = m_compositedLayerCount + page().pageOverlayController().overlayCount();
    638     return layerCount > (rootLayer.isComposited() ? 1 : 0);
    639 }
    640 
    641635void RenderLayerCompositor::cancelCompositingLayerUpdate()
    642636{
     
    647641bool RenderLayerCompositor::updateCompositingLayers(CompositingUpdateType updateType, RenderLayer* updateRoot)
    648642{
    649     LOG_WITH_STREAM(Compositing, stream << "RenderLayerCompositor " << this << " updateCompositingLayers " << updateType << " root " << updateRoot);
     643    LOG_WITH_STREAM(Compositing, stream << "RenderLayerCompositor " << this << " updateCompositingLayers " << updateType << " contentLayersCount " << m_contentLayersCount);
    650644
    651645#if ENABLE(TREE_DEBUGGING)
     
    740734            // Even when childList is empty, don't drop out of compositing mode if there are
    741735            // composited layers that we didn't hit in our traversal (e.g. because of visibility:hidden).
    742             if (childList.isEmpty() && !hasAnyAdditionalCompositedLayers(*updateRoot))
     736            if (childList.isEmpty() && !needsCompositingForContentOrOverlays())
    743737                destroyRootLayer();
    744738            else if (m_rootContentLayer)
     
    767761        LOG(Compositing, "RenderLayerCompositor::updateCompositingLayers - post");
    768762        showPaintOrderTree(m_renderView.layer());
    769         LOG(Compositing, "RenderLayerCompositor::updateCompositingLayers - GraphicsLayers post");
     763        LOG(Compositing, "RenderLayerCompositor::updateCompositingLayers - GraphicsLayers post, contentLayersCount %d", m_contentLayersCount);
    770764        showGraphicsLayerTree(m_rootContentLayer.get());
    771765    }
     
    968962    // if there are composited layers that we didn't hit in our traversal (e.g. because of visibility:hidden).
    969963    RequiresCompositingData rootLayerQueryData;
    970     if (layer.isRenderViewLayer() && !childState.subtreeIsCompositing && !requiresCompositingLayer(layer, rootLayerQueryData) && !m_forceCompositingMode && !hasAnyAdditionalCompositedLayers(layer)) {
     964    if (layer.isRenderViewLayer() && !childState.subtreeIsCompositing && !requiresCompositingLayer(layer, rootLayerQueryData) && !m_forceCompositingMode && !needsCompositingForContentOrOverlays()) {
    971965        // Don't drop out of compositing on iOS, because we may flash. See <rdar://problem/8348337>.
    972966#if !PLATFORM(IOS_FAMILY)
     
    12411235}
    12421236
     1237bool RenderLayerCompositor::needsCompositingForContentOrOverlays() const
     1238{
     1239    return m_contentLayersCount + page().pageOverlayController().overlayCount();
     1240}
     1241
     1242void RenderLayerCompositor::layerBecameComposited(const RenderLayer& layer)
     1243{
     1244    if (&layer != m_renderView.layer())
     1245        ++m_contentLayersCount;
     1246}
     1247
    12431248void RenderLayerCompositor::layerBecameNonComposited(const RenderLayer& layer)
    12441249{
    12451250    // Inform the inspector that the given RenderLayer was destroyed.
     1251    // FIXME: "destroyed" is a misnomer.
    12461252    InspectorInstrumentation::renderLayerDestroyed(&page(), layer);
    12471253
    1248     ASSERT(m_compositedLayerCount > 0);
    1249     --m_compositedLayerCount;
     1254    if (&layer == m_renderView.layer()) {
     1255        ASSERT(m_contentLayersCount > 0);
     1256        --m_contentLayersCount;
     1257    }
    12501258}
    12511259
     
    19081916    // Dump an empty layer tree only if the only composited layer is the main frame's tiled backing,
    19091917    // so that tests expecting us to drop out of accelerated compositing when there are no layers succeed.
    1910     if (!hasAnyAdditionalCompositedLayers(rootRenderLayer()) && documentUsesTiledBacking() && !(layerTreeBehavior & LayerTreeAsTextIncludeTileCaches))
     1918    if (!hasContentCompositingLayers() && documentUsesTiledBacking() && !(layerTreeBehavior & LayerTreeAsTextIncludeTileCaches))
    19111919        layerTreeText = emptyString();
    19121920
  • trunk/Source/WebCore/rendering/RenderLayerCompositor.h

    r238352 r238354  
    106106    bool inForcedCompositingMode() const { return m_forceCompositingMode; }
    107107
     108    // True when some content element other than the root is composited.
     109    bool hasContentCompositingLayers() const { return m_contentLayersCount; }
     110
    108111    // Returns true if the accelerated compositing is enabled
    109112    bool hasAcceleratedCompositing() const { return m_hasAcceleratedCompositing; }
     
    217220    void clearBackingForAllLayers();
    218221   
    219     void layerBecameComposited(const RenderLayer&) { ++m_compositedLayerCount; }
     222    void layerBecameComposited(const RenderLayer&);
    220223    void layerBecameNonComposited(const RenderLayer&);
    221224   
     
    387390
    388391    void appendDocumentOverlayLayers(Vector<Ref<GraphicsLayer>>&);
    389     bool hasAnyAdditionalCompositedLayers(const RenderLayer& rootLayer) const;
     392
     393    bool needsCompositingForContentOrOverlays() const;
    390394
    391395    void ensureRootLayer();
     
    506510    bool m_isTrackingRepaints { false }; // Used for testing.
    507511
    508     int m_compositedLayerCount { 0 };
     512    unsigned m_contentLayersCount { 0 };
    509513    unsigned m_layersWithTiledBackingCount { 0 };
    510514    unsigned m_layerFlushCount { 0 };
Note: See TracChangeset for help on using the changeset viewer.