Index: tools/telemetry/telemetry/web_perf/metrics/rendering_stats.py |
diff --git a/tools/telemetry/telemetry/web_perf/metrics/rendering_stats.py b/tools/telemetry/telemetry/web_perf/metrics/rendering_stats.py |
index 2dd9819b70c8a3daecb3c0318e4b5f46974ef066..5f9278d5ccfc98efcd9bf2f930e83fd57619ae4f 100644 |
--- a/tools/telemetry/telemetry/web_perf/metrics/rendering_stats.py |
+++ b/tools/telemetry/telemetry/web_perf/metrics/rendering_stats.py |
@@ -108,14 +108,19 @@ |
def GetTimestampEventName(process): |
""" Returns the name of the events used to count frame timestamps. """ |
+ if process.name == 'SurfaceFlinger': |
+ return 'vsync_before' |
+ |
event_name = 'BenchmarkInstrumentation::DisplayRenderingStats' |
for event in process.IterAllSlicesOfName(event_name): |
if 'data' in event.args and event.args['data']['frame_count'] == 1: |
return event_name |
+ |
return 'BenchmarkInstrumentation::ImplThreadRenderingStats' |
class RenderingStats(object): |
- def __init__(self, renderer_process, browser_process, timeline_ranges): |
+ def __init__(self, renderer_process, browser_process, surface_flinger_process, |
+ timeline_ranges): |
""" |
Utility class for extracting rendering statistics from the timeline (or |
other loggin facilities), and providing them in a common format to classes |
@@ -127,8 +132,13 @@ |
All *_time values are measured in milliseconds. |
""" |
assert len(timeline_ranges) > 0 |
+ self.refresh_period = None |
+ |
# Find the top level process with rendering stats (browser or renderer). |
- if HasRenderingStats(browser_process): |
+ if surface_flinger_process: |
+ timestamp_process = surface_flinger_process |
+ self._GetRefreshPeriodFromSurfaceFlingerProcess(surface_flinger_process) |
+ elif HasRenderingStats(browser_process): |
timestamp_process = browser_process |
else: |
timestamp_process = renderer_process |
@@ -170,6 +180,11 @@ |
browser_process, renderer_process, timeline_range) |
self._InitFrameQueueingDurationsFromTimeline( |
renderer_process, timeline_range) |
+ |
+ def _GetRefreshPeriodFromSurfaceFlingerProcess(self, surface_flinger_process): |
+ for event in surface_flinger_process.IterAllEventsOfName('vsync_before'): |
+ self.refresh_period = event.args['data']['refresh_period'] |
+ return |
def _InitInputLatencyStatsFromTimeline( |
self, browser_process, renderer_process, timeline_range): |