Changeset 220806 in webkit
- Timestamp:
- Aug 16, 2017 1:30:47 PM (7 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r220805 r220806 1 2017-08-16 Simon Fraser <simon.fraser@apple.com> 2 3 Make RenderLayer and RenderLayerBacking TextStream-loggable, and clean up compositing logging 4 https://bugs.webkit.org/show_bug.cgi?id=175634 5 6 Reviewed by Zalan Bujtas. 7 8 Add operator<<(TextStream&) for RenderLayer and RenderLayer backing, and use them for compositing logging. 9 10 Convert CompositingUpdateType to an enum class. 11 12 * page/FrameView.cpp: 13 (WebCore::FrameView::updateCompositingLayersAfterLayout): 14 (WebCore::FrameView::updateCompositingLayersAfterScrolling): 15 * page/ios/FrameIOS.mm: 16 (WebCore::Frame::viewportOffsetChanged): 17 * rendering/RenderLayer.cpp: 18 (WebCore::RenderLayer::updateLayerPositionsAfterLayout): 19 (WebCore::RenderLayer::updateCompositingLayersAfterScroll): 20 (WebCore::RenderLayer::calculateClipRects const): 21 * rendering/RenderLayer.h: 22 * rendering/RenderLayerBacking.cpp: 23 (WebCore::RenderLayerBacking::updateAfterLayout): 24 (WebCore::RenderLayerBacking::updateGeometry): 25 (WebCore::operator<<): 26 * rendering/RenderLayerBacking.h: 27 * rendering/RenderLayerCompositor.cpp: 28 (WebCore::RenderLayerCompositor::didRecalcStyleWithNoPendingLayout): 29 (WebCore::RenderLayerCompositor::flushPendingLayerChanges): 30 (WebCore::RenderLayerCompositor::updateCompositingLayersTimerFired): 31 (WebCore::RenderLayerCompositor::updateCompositingLayers): 32 (WebCore::RenderLayerCompositor::layerTreeAsText): 33 (WebCore::operator<<): 34 * rendering/RenderLayerCompositor.h: 35 1 36 2017-08-16 Eric Carlson <eric.carlson@apple.com> 2 37 -
trunk/Source/WebCore/page/FrameView.cpp
r220781 r220806 890 890 // This call will make sure the cached hasAcceleratedCompositing is updated from the pref 891 891 renderView->compositor().cacheAcceleratedCompositingFlags(); 892 renderView->compositor().updateCompositingLayers(CompositingUpdate AfterLayout);892 renderView->compositor().updateCompositingLayers(CompositingUpdateType::AfterLayout); 893 893 } 894 894 … … 2690 2690 if (m_nestedLayoutCount <= 1 && hasViewportConstrainedObjects()) { 2691 2691 if (RenderView* renderView = this->renderView()) 2692 renderView->compositor().updateCompositingLayers(CompositingUpdate OnScroll);2692 renderView->compositor().updateCompositingLayers(CompositingUpdateType::OnScroll); 2693 2693 } 2694 2694 } -
trunk/Source/WebCore/page/ios/FrameIOS.mm
r219597 r220806 719 719 if (changeType == CompletedScrollOffset) { 720 720 if (RenderView* root = contentRenderer()) 721 root->compositor().updateCompositingLayers(CompositingUpdate OnScroll);721 root->compositor().updateCompositingLayers(CompositingUpdateType::OnScroll); 722 722 } 723 723 } -
trunk/Source/WebCore/rendering/RenderLayer.cpp
r220503 r220806 473 473 void RenderLayer::updateLayerPositionsAfterLayout(const RenderLayer* rootLayer, UpdateLayerPositionsFlags flags) 474 474 { 475 LOG(Compositing, "RenderLayer %p updateLayerPositionsAfterLayout", this); 475 476 RenderGeometryMap geometryMap(UseTransforms); 476 477 if (this != rootLayer) … … 2595 2596 if (RenderLayer* compositingAncestor = stackingContainer()->enclosingCompositingLayer()) { 2596 2597 if (usesCompositedScrolling() && !hasOutOfFlowPositionedDescendant()) 2597 compositor().updateCompositingLayers(CompositingUpdate OnCompositedScroll, compositingAncestor);2598 compositor().updateCompositingLayers(CompositingUpdateType::OnCompositedScroll, compositingAncestor); 2598 2599 else 2599 compositor().updateCompositingLayers(CompositingUpdate OnScroll, compositingAncestor);2600 compositor().updateCompositingLayers(CompositingUpdateType::OnScroll, compositingAncestor); 2600 2601 } 2601 2602 } … … 6492 6493 if (compositor().inCompositingMode()) { 6493 6494 if (isDirtyStackingContainer() || m_normalFlowListDirty) 6494 compositor().updateCompositingLayers(CompositingUpdate OnHitTest, this);6495 compositor().updateCompositingLayers(CompositingUpdateType::OnHitTest, this); 6495 6496 return; 6496 6497 } … … 7236 7237 } 7237 7238 7239 TextStream& operator<<(TextStream& ts, const RenderLayer& layer) 7240 { 7241 ts << "RenderLayer " << &layer << " " << layer.size(); 7242 if (layer.transform()) 7243 ts << " has transform"; 7244 if (layer.hasFilter()) 7245 ts << " has filter"; 7246 if (layer.hasBackdropFilter()) 7247 ts << " has backdrop filter"; 7248 if (layer.hasBlendMode()) 7249 ts << " has blend mode"; 7250 if (layer.isolatesBlending()) 7251 ts << " isolates blending"; 7252 if (layer.isComposited()) 7253 ts << " " << *layer.backing(); 7254 return ts; 7255 } 7256 7238 7257 } // namespace WebCore 7239 7258 -
trunk/Source/WebCore/rendering/RenderLayer.h
r220479 r220806 53 53 #include <memory> 54 54 55 namespace WTF { 56 class TextStream; 57 } 58 55 59 namespace WebCore { 56 60 … … 1235 1239 bool compositedWithOwnBackingStore(const RenderLayer&); 1236 1240 1241 WTF::TextStream& operator<<(WTF::TextStream&, const RenderLayer&); 1242 1237 1243 } // namespace WebCore 1238 1244 -
trunk/Source/WebCore/rendering/RenderLayerBacking.cpp
r219876 r220806 66 66 #include "StyleResolver.h" 67 67 #include "TiledBacking.h" 68 #include <wtf/text/TextStream.h> 68 69 69 70 #if PLATFORM(IOS) … … 635 636 void RenderLayerBacking::updateAfterLayout(UpdateAfterLayoutFlags flags) 636 637 { 638 LOG(Compositing, "RenderLayerBacking %p updateAfterLayout (layer %p)", this, &m_owningLayer); 639 637 640 if (!compositor().compositingLayersNeedRebuild()) { 638 641 // Calling updateGeometry() here gives incorrect results, because the … … 941 944 void RenderLayerBacking::updateGeometry() 942 945 { 946 LOG_WITH_STREAM(Compositing, stream << "updateGeometry " << m_owningLayer); 947 943 948 // If we haven't built z-order lists yet, wait until later. 944 949 if (m_owningLayer.isStackingContainer() && m_owningLayer.m_zOrderListsDirty) … … 3042 3047 } 3043 3048 3049 TextStream& operator<<(TextStream& ts, const RenderLayerBacking& backing) 3050 { 3051 ts << "RenderLayerBacking " << &backing << " bounds " << backing.compositedBounds(); 3052 3053 if (backing.isMainFrameLayerWithTiledBacking()) 3054 ts << " main tiled backing"; 3055 if (backing.paintsIntoWindow()) 3056 ts << " paintsIntoWindow"; 3057 if (backing.paintsIntoCompositedAncestor()) 3058 ts << " paintsIntoCompositedAncestor"; 3059 3060 ts << " primary layer ID " << backing.graphicsLayer()->primaryLayerID(); 3061 if (auto nodeID = backing.scrollingNodeIDForRole(ViewportConstrained)) 3062 ts << " viewport constrained scrolling node " << nodeID; 3063 if (auto nodeID = backing.scrollingNodeIDForRole(Scrolling)) 3064 ts << " scrolling node " << nodeID; 3065 return ts; 3066 } 3067 3044 3068 } // namespace WebCore -
trunk/Source/WebCore/rendering/RenderLayerBacking.h
r219876 r220806 399 399 CanvasCompositingStrategy canvasCompositingStrategy(const RenderObject&); 400 400 401 WTF::TextStream& operator<<(WTF::TextStream&, const RenderLayerBacking&); 402 401 403 } // namespace WebCore -
trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp
r220503 r220806 374 374 375 375 cacheAcceleratedCompositingFlags(); 376 return updateCompositingLayers(CompositingUpdate AfterStyleChange);376 return updateCompositingLayers(CompositingUpdateType::AfterStyleChange); 377 377 } 378 378 … … 441 441 #if PLATFORM(IOS) 442 442 FloatRect exposedRect = frameView.exposedContentRect(); 443 LOG_WITH_STREAM(Compositing, stream << "\nRenderLayerCompositor " << this << " flushPendingLayerChanges ( root " << isFlushRoot << ") exposedRect " << exposedRect);443 LOG_WITH_STREAM(Compositing, stream << "\nRenderLayerCompositor " << this << " flushPendingLayerChanges (is root " << isFlushRoot << ") exposedRect " << exposedRect); 444 444 445 445 // FIXME: Use optimized flushes. … … 452 452 visibleRect.intersect(frameView.viewExposedRect().value()); 453 453 454 LOG_WITH_STREAM(Compositing, stream << "\nRenderLayerCompositor " << this << " flushPendingLayerChanges (" << isFlushRoot << ")" << visibleRect);454 LOG_WITH_STREAM(Compositing, stream << "\nRenderLayerCompositor " << this << " flushPendingLayerChanges (is root " << isFlushRoot << ") visible rect " << visibleRect); 455 455 rootLayer->flushCompositingState(visibleRect); 456 456 LOG_WITH_STREAM(Compositing, stream << "RenderLayerCompositor " << this << " flush complete\n"); … … 619 619 void RenderLayerCompositor::updateCompositingLayersTimerFired() 620 620 { 621 updateCompositingLayers(CompositingUpdate AfterLayout);621 updateCompositingLayers(CompositingUpdateType::AfterLayout); 622 622 } 623 623 … … 635 635 bool RenderLayerCompositor::updateCompositingLayers(CompositingUpdateType updateType, RenderLayer* updateRoot) 636 636 { 637 LOG (Compositing, "RenderLayerCompositor %p updateCompositingLayers %d %p", this, updateType,updateRoot);637 LOG_WITH_STREAM(Compositing, stream << "RenderLayerCompositor " << this << " updateCompositingLayers " << updateType << " root " << updateRoot); 638 638 639 639 m_updateCompositingLayersTimer.stop(); … … 665 665 666 666 switch (updateType) { 667 case CompositingUpdate AfterStyleChange:668 case CompositingUpdate AfterLayout:669 case CompositingUpdate OnHitTest:667 case CompositingUpdateType::AfterStyleChange: 668 case CompositingUpdateType::AfterLayout: 669 case CompositingUpdateType::OnHitTest: 670 670 checkForHierarchyUpdate = true; 671 671 break; 672 case CompositingUpdate OnScroll:672 case CompositingUpdateType::OnScroll: 673 673 checkForHierarchyUpdate = true; // Overlap can change with scrolling, so need to check for hierarchy updates. 674 674 675 675 needGeometryUpdate = true; 676 676 break; 677 case CompositingUpdate OnCompositedScroll:677 case CompositingUpdateType::OnCompositedScroll: 678 678 needGeometryUpdate = true; 679 679 break; … … 690 690 updateRoot = &rootRenderLayer(); 691 691 692 if (isFullUpdate && updateType == CompositingUpdate AfterLayout)692 if (isFullUpdate && updateType == CompositingUpdateType::AfterLayout) 693 693 m_reevaluateCompositingAfterLayout = false; 694 694 … … 696 696 697 697 #if !LOG_DISABLED 698 double startTime = 0;698 MonotonicTime startTime; 699 699 if (compositingLogEnabled()) { 700 700 ++m_rootLayerUpdateCount; 701 startTime = monotonicallyIncreasingTime();701 startTime = MonotonicTime::now(); 702 702 } 703 703 #endif … … 755 755 #if !LOG_DISABLED 756 756 if (compositingLogEnabled() && isFullUpdate && (needHierarchyUpdate || needGeometryUpdate)) { 757 double endTime = monotonicallyIncreasingTime();757 MonotonicTime endTime = MonotonicTime::now(); 758 758 LOG(Compositing, "Total layers primary secondary obligatory backing (KB) secondary backing(KB) total backing (KB) update time (ms)\n"); 759 759 760 760 LOG(Compositing, "%8d %11d %9d %20.2f %22.2f %22.2f %18.2f\n", 761 761 m_obligateCompositedLayerCount + m_secondaryCompositedLayerCount, m_obligateCompositedLayerCount, 762 m_secondaryCompositedLayerCount, m_obligatoryBackingStoreBytes / 1024, m_secondaryBackingStoreBytes / 1024, (m_obligatoryBackingStoreBytes + m_secondaryBackingStoreBytes) / 1024, 1000.0 * (endTime - startTime));762 m_secondaryCompositedLayerCount, m_obligatoryBackingStoreBytes / 1024, m_secondaryBackingStoreBytes / 1024, (m_obligatoryBackingStoreBytes + m_secondaryBackingStoreBytes) / 1024, (endTime - startTime).milliseconds()); 763 763 } 764 764 #endif … … 1826 1826 String RenderLayerCompositor::layerTreeAsText(LayerTreeFlags flags) 1827 1827 { 1828 updateCompositingLayers(CompositingUpdate AfterLayout);1828 updateCompositingLayers(CompositingUpdateType::AfterLayout); 1829 1829 1830 1830 if (!m_rootContentLayer) … … 4221 4221 } 4222 4222 4223 TextStream& operator<<(TextStream& ts, CompositingUpdateType updateType) 4224 { 4225 switch (updateType) { 4226 case CompositingUpdateType::AfterStyleChange: ts << "after style change"; break; 4227 case CompositingUpdateType::AfterLayout: ts << "after layout"; break; 4228 case CompositingUpdateType::OnHitTest: ts << "on hit test"; break; 4229 case CompositingUpdateType::OnScroll: ts << "on scroll"; break; 4230 case CompositingUpdateType::OnCompositedScroll: ts << "on composited scroll"; break; 4231 } 4232 return ts; 4233 } 4234 4223 4235 } // namespace WebCore -
trunk/Source/WebCore/rendering/RenderLayerCompositor.h
r219876 r220806 48 48 typedef unsigned LayerTreeFlags; 49 49 50 enum CompositingUpdateType {51 CompositingUpdateAfterStyleChange,52 CompositingUpdateAfterLayout,53 CompositingUpdateOnHitTest,54 CompositingUpdateOnScroll,55 CompositingUpdateOnCompositedScroll50 enum class CompositingUpdateType { 51 AfterStyleChange, 52 AfterLayout, 53 OnHitTest, 54 OnScroll, 55 OnCompositedScroll 56 56 }; 57 57 … … 574 574 void paintScrollbar(Scrollbar*, GraphicsContext&, const IntRect& clip); 575 575 576 WTF::TextStream& operator<<(WTF::TextStream&, CompositingUpdateType); 577 576 578 } // namespace WebCore
Note: See TracChangeset
for help on using the changeset viewer.