| Index: tools/telemetry/telemetry/timeline/model.py
|
| diff --git a/tools/telemetry/telemetry/timeline/model.py b/tools/telemetry/telemetry/timeline/model.py
|
| index 945a072dac457ec4a00d2040119bac6a42c5c7ca..540ca4262bdb07fa339452c34fd8d4b134e28c4b 100644
|
| --- a/tools/telemetry/telemetry/timeline/model.py
|
| +++ b/tools/telemetry/telemetry/timeline/model.py
|
| @@ -17,6 +17,7 @@ from telemetry.timeline import empty_timeline_data_importer
|
| from telemetry.timeline import event_container
|
| from telemetry.timeline import inspector_importer
|
| from telemetry.timeline import trace_event_importer
|
| +from telemetry.core.platform.profiler import perfvis_profiler
|
|
|
| # Register importers for data
|
|
|
| @@ -62,6 +63,8 @@ class TimelineModel(event_container.TimelineEventContainer):
|
| self.import_errors = []
|
| self.metadata = []
|
| self.flow_events = []
|
| + self.time_shift = 0.0
|
| +
|
| if timeline_data is not None:
|
| self.ImportTraces(timeline_data, shift_world_to_zero=shift_world_to_zero)
|
|
|
| @@ -143,11 +146,39 @@ class TimelineModel(event_container.TimelineEventContainer):
|
| # to prevent the timeline from from being modified.
|
| self._frozen = True
|
|
|
| + # Dirty hack... save frame trace information for perfvis_profiler use.
|
| + comp_thread = [t for t in self.GetAllThreads() if t.name == 'Compositor']
|
| + if len(comp_thread) > 0:
|
| + slices = [
|
| + s for s in comp_thread[0].all_slices if '::SwapBuffers' in s.name]
|
| +
|
| + if len(slices) > 2:
|
| + # Skip first last frames that may have one time costs.
|
| + num_frames = len(slices) - 2
|
| + min_time = slices[1].start - self.time_shift
|
| + max_time = slices[-2].end - self.time_shift
|
| +
|
| + perfvis_profiler.timeline_metadata = {}
|
| + perfvis_profiler.timeline_metadata['num_frames'] = num_frames
|
| + perfvis_profiler.timeline_metadata['start_ts'] = min_time
|
| + perfvis_profiler.timeline_metadata['end_ts'] = max_time
|
| +
|
| + perfvis_profiler.timeline_metadata['pid'] = {}
|
| + for process in self._processes.values():
|
| + perfvis_profiler.timeline_metadata['pid'][process.pid] = process.name
|
| +
|
| + perfvis_profiler.timeline_metadata['tid'] = {}
|
| + for thread in self.GetAllThreads():
|
| + perfvis_profiler.timeline_metadata['tid'][thread.tid] = thread.name
|
| + print "### TimelineModel: num_frames: %d, start %0.3f end %0.3f ###" % (
|
| + num_frames, min_time, max_time)
|
| +
|
| def ShiftWorldToZero(self):
|
| self.UpdateBounds()
|
| if self._bounds.is_empty:
|
| return
|
| shift_amount = self._bounds.min
|
| + self.time_shift -= shift_amount
|
| for event in self.IterAllEvents():
|
| event.start -= shift_amount
|
|
|
|
|