Index: tools/perf/metrics/timeline.py |
diff --git a/tools/perf/metrics/timeline.py b/tools/perf/metrics/timeline.py |
index 3f46de8b33649c3bf325323c6a3afc49dae88aa1..42af679994b1f9e5a3cd6b9ed52d0503215e72f4 100644 |
--- a/tools/perf/metrics/timeline.py |
+++ b/tools/perf/metrics/timeline.py |
@@ -151,10 +151,7 @@ SilkDetails = MainThread |
# TODO(epenner): Thread names above are likely fairly stable but trace names |
# could change. We should formalize this trace to keep this robust. |
-GpuFrameTraceName = ":RealSwapBuffers" |
-# TODO(epenner): The decoder swap-buffers can be used by several producers. |
-# we need to find the canonical swap buffers on Mac. |
-GpuFrameTraceNameMac = "GLES2DecoderImpl::DoSwapBuffers" |
+CompositorFrameTraceName = "::SwapBuffers" |
def ThreadCategoryName(thread_name): |
thread_category = "other" |
@@ -205,8 +202,8 @@ class ResultsForThread(object): |
def AddResults(self, num_frames, results): |
clock_report_name = ThreadTimeResultName(self.name) |
cpu_report_name = ThreadCpuTimeResultName(self.name) |
- clock_per_frame = float(self.clock_time) / num_frames |
- cpu_per_frame = float(self.cpu_time) / num_frames |
+ clock_per_frame = (float(self.clock_time) / num_frames) if num_frames else 0 |
+ cpu_per_frame = (float(self.cpu_time) / num_frames) if num_frames else 0 |
results.Add(clock_report_name, 'ms', clock_per_frame) |
results.Add(cpu_report_name, 'ms', cpu_per_frame) |
@@ -218,12 +215,12 @@ class ResultsForThread(object): |
for category, slices_in_category in slices_by_category.iteritems(): |
self_time = sum([x.self_time for x in slices_in_category]) |
all_self_times.append(self_time) |
- self_time_result = float(self_time) / num_frames |
+ self_time_result = (float(self_time) / num_frames) if num_frames else 0 |
results.Add(ThreadDetailResultName(self.name, category), |
'ms', self_time_result) |
all_measured_time = sum(all_self_times) |
idle_time = max(0, self.model.bounds.bounds - all_measured_time) |
- idle_time_result = float(idle_time) / num_frames |
+ idle_time_result = (float(idle_time) / num_frames) if num_frames else 0 |
results.Add(ThreadDetailResultName(self.name, "idle"), |
'ms', idle_time_result) |
@@ -260,13 +257,9 @@ class ThreadTimesTimelineMetric(TimelineMetric): |
if ThreadCategoryName(thread.name) in FastPath: |
thread_category_results['total_fast_path'].AppendThreadSlices(thread) |
- # Calculate the number of frames from the GPU thread. |
- gpu_slices = thread_category_results['GPU'].all_slices |
- num_frames = self.CountSlices(gpu_slices, GpuFrameTraceName) |
- if not num_frames: |
- num_frames = self.CountSlices(gpu_slices, GpuFrameTraceNameMac) |
- if not num_frames: |
- raise MissingFramesError() |
+ # Calculate the number of frames from the CC thread. |
+ cc_slices = thread_category_results['renderer_compositor'].all_slices |
+ num_frames = self.CountSlices(cc_slices, CompositorFrameTraceName) |
# Report the desired results and details. |
for thread_results in thread_category_results.values(): |