Diff
Modified: trunk/Source/WTF/ChangeLog (256735 => 256736)
--- trunk/Source/WTF/ChangeLog 2020-02-17 16:40:18 UTC (rev 256735)
+++ trunk/Source/WTF/ChangeLog 2020-02-17 16:45:29 UTC (rev 256736)
@@ -1,3 +1,12 @@
+2020-02-17 Antti Koivisto <[email protected]>
+
+ [macOS] Add trace points for layer flush runloop observer
+ https://bugs.webkit.org/show_bug.cgi?id=207837
+
+ Reviewed by Sam Weinig.
+
+ * wtf/SystemTracing.h:
+
2020-02-17 Don Olmstead <[email protected]>
[CMake] Use builtin targets
Modified: trunk/Source/WTF/wtf/SystemTracing.h (256735 => 256736)
--- trunk/Source/WTF/wtf/SystemTracing.h 2020-02-17 16:40:18 UTC (rev 256735)
+++ trunk/Source/WTF/wtf/SystemTracing.h 2020-02-17 16:45:29 UTC (rev 256736)
@@ -102,6 +102,10 @@
SyncTouchEventEnd,
InitializeWebProcessStart,
InitializeWebProcessEnd,
+ LayerFlushRunLoopObserverStart,
+ LayerFlushRunLoopObserverEnd,
+ LayerTreeFreezeStart,
+ LayerTreeFreezeEnd,
UIProcessRange = 14000,
CommitLayerTreeStart,
Modified: trunk/Source/WebKit/ChangeLog (256735 => 256736)
--- trunk/Source/WebKit/ChangeLog 2020-02-17 16:40:18 UTC (rev 256735)
+++ trunk/Source/WebKit/ChangeLog 2020-02-17 16:45:29 UTC (rev 256736)
@@ -1,3 +1,23 @@
+2020-02-17 Antti Koivisto <[email protected]>
+
+ [macOS] Add trace points for layer flush runloop observer
+ https://bugs.webkit.org/show_bug.cgi?id=207837
+
+ Reviewed by Sam Weinig.
+
+ Add trace points to see how much scheduled layer flushes get delayed by timers and other runloop activities.
+
+ * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
+ (WebKit::RemoteLayerTreeDrawingArea::setLayerTreeStateIsFrozen):
+ * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
+ (WebKit::TiledCoreAnimationDrawingArea::setLayerTreeStateIsFrozen):
+
+ Also add trace points for layer tree freezing (iOS too).
+
+ (WebKit::TiledCoreAnimationDrawingArea::layerFlushRunLoopCallback):
+ (WebKit::TiledCoreAnimationDrawingArea::invalidateLayerFlushRunLoopObserver):
+ (WebKit::TiledCoreAnimationDrawingArea::scheduleLayerFlushRunLoopObserver):
+
2020-02-17 Don Olmstead <[email protected]>
[CMake] Use builtin targets
Modified: trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm (256735 => 256736)
--- trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm 2020-02-17 16:40:18 UTC (rev 256735)
+++ trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm 2020-02-17 16:45:29 UTC (rev 256736)
@@ -188,6 +188,8 @@
if (m_isFlushingSuspended == isFrozen)
return;
+ tracePoint(isFrozen ? LayerTreeFreezeStart : LayerTreeFreezeEnd);
+
m_isFlushingSuspended = isFrozen;
if (!m_isFlushingSuspended && m_hasDeferredFlush) {
Modified: trunk/Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm (256735 => 256736)
--- trunk/Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm 2020-02-17 16:40:18 UTC (rev 256735)
+++ trunk/Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm 2020-02-17 16:45:29 UTC (rev 256736)
@@ -59,6 +59,7 @@
#import <pal/spi/cocoa/QuartzCoreSPI.h>
#import <wtf/MachSendRight.h>
#import <wtf/MainThread.h>
+#import <wtf/SystemTracing.h>
#if ENABLE(ASYNC_SCROLLING)
#import <WebCore/AsyncScrollingCoordinator.h>
@@ -176,6 +177,8 @@
if (m_layerTreeStateIsFrozen == layerTreeStateIsFrozen)
return;
+ tracePoint(layerTreeStateIsFrozen ? LayerTreeFreezeStart : LayerTreeFreezeEnd);
+
m_layerTreeStateIsFrozen = layerTreeStateIsFrozen;
if (m_layerTreeStateIsFrozen) {
@@ -936,16 +939,25 @@
void TiledCoreAnimationDrawingArea::layerFlushRunLoopCallback()
{
+ tracePoint(LayerFlushRunLoopObserverEnd, 0);
+
flushLayers();
}
void TiledCoreAnimationDrawingArea::invalidateLayerFlushRunLoopObserver()
{
+ if (!m_layerFlushRunLoopObserver->isScheduled())
+ return;
+
+ tracePoint(LayerFlushRunLoopObserverEnd, 1);
+
m_layerFlushRunLoopObserver->invalidate();
}
void TiledCoreAnimationDrawingArea::scheduleLayerFlushRunLoopObserver()
{
+ tracePoint(LayerFlushRunLoopObserverStart);
+
m_layerFlushRunLoopObserver->schedule(CFRunLoopGetCurrent());
}
Modified: trunk/Tools/ChangeLog (256735 => 256736)
--- trunk/Tools/ChangeLog 2020-02-17 16:40:18 UTC (rev 256735)
+++ trunk/Tools/ChangeLog 2020-02-17 16:45:29 UTC (rev 256736)
@@ -1,3 +1,12 @@
+2020-02-17 Antti Koivisto <[email protected]>
+
+ [macOS] Add trace points for layer flush runloop observer
+ https://bugs.webkit.org/show_bug.cgi?id=207837
+
+ Reviewed by Sam Weinig.
+
+ * Tracing/SystemTracePoints.plist:
+
2020-02-17 Don Olmstead <[email protected]>
[CMake] Use builtin targets
Modified: trunk/Tools/Tracing/SystemTracePoints.plist (256735 => 256736)
--- trunk/Tools/Tracing/SystemTracePoints.plist 2020-02-17 16:40:18 UTC (rev 256735)
+++ trunk/Tools/Tracing/SystemTracePoints.plist 2020-02-17 16:45:29 UTC (rev 256736)
@@ -359,6 +359,30 @@
</dict>
<dict>
<key>Name</key>
+ <string>Layer flush runloop observer</string>
+ <key>Type</key>
+ <string>Interval</string>
+ <key>Component</key>
+ <string>47</string>
+ <key>CodeBegin</key>
+ <string>12011</string>
+ <key>CodeEnd</key>
+ <string>12012</string>
+ </dict>
+ <dict>
+ <key>Name</key>
+ <string>Layer tree frozen</string>
+ <key>Type</key>
+ <string>Interval</string>
+ <key>Component</key>
+ <string>47</string>
+ <key>CodeBegin</key>
+ <string>12013</string>
+ <key>CodeEnd</key>
+ <string>12014</string>
+ </dict>
+ <dict>
+ <key>Name</key>
<string>Commit RemoteLayerTree transaction</string>
<key>Type</key>
<string>Interval</string>