Changeset 238354 in webkit
- Timestamp:
- Nov 17, 2018 2:12:30 PM (6 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r238352 r238354 1 2018-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 1 25 2018-11-17 Simon Fraser <simon.fraser@apple.com> 2 26 -
trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp
r238352 r238354 633 633 } 634 634 635 bool RenderLayerCompositor::hasAnyAdditionalCompositedLayers(const RenderLayer& rootLayer) const636 {637 int layerCount = m_compositedLayerCount + page().pageOverlayController().overlayCount();638 return layerCount > (rootLayer.isComposited() ? 1 : 0);639 }640 641 635 void RenderLayerCompositor::cancelCompositingLayerUpdate() 642 636 { … … 647 641 bool RenderLayerCompositor::updateCompositingLayers(CompositingUpdateType updateType, RenderLayer* updateRoot) 648 642 { 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); 650 644 651 645 #if ENABLE(TREE_DEBUGGING) … … 740 734 // Even when childList is empty, don't drop out of compositing mode if there are 741 735 // 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()) 743 737 destroyRootLayer(); 744 738 else if (m_rootContentLayer) … … 767 761 LOG(Compositing, "RenderLayerCompositor::updateCompositingLayers - post"); 768 762 showPaintOrderTree(m_renderView.layer()); 769 LOG(Compositing, "RenderLayerCompositor::updateCompositingLayers - GraphicsLayers post ");763 LOG(Compositing, "RenderLayerCompositor::updateCompositingLayers - GraphicsLayers post, contentLayersCount %d", m_contentLayersCount); 770 764 showGraphicsLayerTree(m_rootContentLayer.get()); 771 765 } … … 968 962 // if there are composited layers that we didn't hit in our traversal (e.g. because of visibility:hidden). 969 963 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()) { 971 965 // Don't drop out of compositing on iOS, because we may flash. See <rdar://problem/8348337>. 972 966 #if !PLATFORM(IOS_FAMILY) … … 1241 1235 } 1242 1236 1237 bool RenderLayerCompositor::needsCompositingForContentOrOverlays() const 1238 { 1239 return m_contentLayersCount + page().pageOverlayController().overlayCount(); 1240 } 1241 1242 void RenderLayerCompositor::layerBecameComposited(const RenderLayer& layer) 1243 { 1244 if (&layer != m_renderView.layer()) 1245 ++m_contentLayersCount; 1246 } 1247 1243 1248 void RenderLayerCompositor::layerBecameNonComposited(const RenderLayer& layer) 1244 1249 { 1245 1250 // Inform the inspector that the given RenderLayer was destroyed. 1251 // FIXME: "destroyed" is a misnomer. 1246 1252 InspectorInstrumentation::renderLayerDestroyed(&page(), layer); 1247 1253 1248 ASSERT(m_compositedLayerCount > 0); 1249 --m_compositedLayerCount; 1254 if (&layer == m_renderView.layer()) { 1255 ASSERT(m_contentLayersCount > 0); 1256 --m_contentLayersCount; 1257 } 1250 1258 } 1251 1259 … … 1908 1916 // Dump an empty layer tree only if the only composited layer is the main frame's tiled backing, 1909 1917 // so that tests expecting us to drop out of accelerated compositing when there are no layers succeed. 1910 if (!has AnyAdditionalCompositedLayers(rootRenderLayer()) && documentUsesTiledBacking() && !(layerTreeBehavior & LayerTreeAsTextIncludeTileCaches))1918 if (!hasContentCompositingLayers() && documentUsesTiledBacking() && !(layerTreeBehavior & LayerTreeAsTextIncludeTileCaches)) 1911 1919 layerTreeText = emptyString(); 1912 1920 -
trunk/Source/WebCore/rendering/RenderLayerCompositor.h
r238352 r238354 106 106 bool inForcedCompositingMode() const { return m_forceCompositingMode; } 107 107 108 // True when some content element other than the root is composited. 109 bool hasContentCompositingLayers() const { return m_contentLayersCount; } 110 108 111 // Returns true if the accelerated compositing is enabled 109 112 bool hasAcceleratedCompositing() const { return m_hasAcceleratedCompositing; } … … 217 220 void clearBackingForAllLayers(); 218 221 219 void layerBecameComposited(const RenderLayer&) { ++m_compositedLayerCount; }222 void layerBecameComposited(const RenderLayer&); 220 223 void layerBecameNonComposited(const RenderLayer&); 221 224 … … 387 390 388 391 void appendDocumentOverlayLayers(Vector<Ref<GraphicsLayer>>&); 389 bool hasAnyAdditionalCompositedLayers(const RenderLayer& rootLayer) const; 392 393 bool needsCompositingForContentOrOverlays() const; 390 394 391 395 void ensureRootLayer(); … … 506 510 bool m_isTrackingRepaints { false }; // Used for testing. 507 511 508 int m_compositedLayerCount { 0 };512 unsigned m_contentLayersCount { 0 }; 509 513 unsigned m_layersWithTiledBackingCount { 0 }; 510 514 unsigned m_layerFlushCount { 0 };
Note: See TracChangeset
for help on using the changeset viewer.