| Index: tools/perf/perf_tools/smoothness_benchmark.py
|
| diff --git a/tools/perf/perf_tools/scrolling_benchmark.py b/tools/perf/perf_tools/smoothness_benchmark.py
|
| similarity index 62%
|
| copy from tools/perf/perf_tools/scrolling_benchmark.py
|
| copy to tools/perf/perf_tools/smoothness_benchmark.py
|
| index 736703320cb6299f27323435ef0f4c3923b6e85c..fa668db9328677921fe007c5923a15641a0becd1 100644
|
| --- a/tools/perf/perf_tools/scrolling_benchmark.py
|
| +++ b/tools/perf/perf_tools/smoothness_benchmark.py
|
| @@ -2,6 +2,7 @@
|
| # Use of this source code is governed by a BSD-style license that can be
|
| # found in the LICENSE file.
|
| from telemetry import multi_page_benchmark
|
| +from telemetry import util
|
|
|
| class DidNotScrollException(multi_page_benchmark.MeasurementFailure):
|
| def __init__(self):
|
| @@ -28,7 +29,12 @@ def CalcScrollResults(rendering_stats_deltas, results):
|
| rendering_stats_deltas['droppedFrameCount'] /
|
| float(num_frames_sent_to_screen))
|
|
|
| + results.Add('mean_frame_time', 'ms', round(mean_frame_time_seconds * 1000, 3))
|
| + results.Add('dropped_percent', '%', round(dropped_percent * 100, 1),
|
| + data_type='unimportant')
|
| +
|
|
|
| +def CalcPaintingResults(rendering_stats_deltas, results):
|
| totalPaintTime = GetOrZero('totalPaintTimeInSeconds',
|
| rendering_stats_deltas)
|
|
|
| @@ -41,29 +47,62 @@ def CalcScrollResults(rendering_stats_deltas, results):
|
| totalPixelsRasterized = GetOrZero('totalPixelsRasterized',
|
| rendering_stats_deltas)
|
|
|
| -
|
| megapixelsPaintedPerSecond = DivideIfPossibleOrZero(
|
| (totalPixelsPainted / 1000000.0), totalPaintTime)
|
|
|
| megapixelsRasterizedPerSecond = DivideIfPossibleOrZero(
|
| (totalPixelsRasterized / 1000000.0), totalRasterizeTime)
|
|
|
| - results.Add('mean_frame_time', 'ms', round(mean_frame_time_seconds * 1000, 3))
|
| - results.Add('dropped_percent', '%', round(dropped_percent * 100, 1))
|
| -
|
| results.Add('total_paint_time', 'seconds', totalPaintTime)
|
| - results.Add('total_rasterize_time', 'seconds', totalRasterizeTime)
|
| - results.Add('total_pixels_painted', '', totalPixelsPainted)
|
| - results.Add('total_pixels_rasterized', '', totalPixelsRasterized)
|
| - results.Add('megapixels_painted_per_second', '', megapixelsPaintedPerSecond)
|
| + results.Add('total_rasterize_time', 'seconds', totalRasterizeTime,
|
| + data_type='unimportant')
|
| + results.Add('total_pixels_painted', '', totalPixelsPainted,
|
| + data_type='unimportant')
|
| + results.Add('total_pixels_rasterized', '', totalPixelsRasterized,
|
| + data_type='unimportant')
|
| + results.Add('megapixels_painted_per_second', '', megapixelsPaintedPerSecond,
|
| + data_type='unimportant')
|
| results.Add('megapixels_rasterized_per_second', '',
|
| - megapixelsRasterizedPerSecond)
|
| + megapixelsRasterizedPerSecond, data_type='unimportant')
|
| results.Add('total_paint_and_rasterize_time', 'seconds', totalPaintTime +
|
| - totalRasterizeTime)
|
| -
|
| -class ScrollingBenchmark(multi_page_benchmark.MultiPageBenchmark):
|
| + totalRasterizeTime, data_type='unimportant')
|
| +
|
| +def CalcTextureUploadResults(rendering_stats_deltas, results):
|
| + if (('totalCommitCount' not in rendering_stats_deltas)
|
| + or rendering_stats_deltas['totalCommitCount'] == 0) :
|
| + averageCommitTimeMs = 0
|
| + else :
|
| + averageCommitTimeMs = (
|
| + 1000 * rendering_stats_deltas['totalCommitTimeInSeconds'] /
|
| + rendering_stats_deltas['totalCommitCount'])
|
| +
|
| + results.Add('texture_upload_count', 'count',
|
| + GetOrZero('textureUploadCount', rendering_stats_deltas))
|
| + results.Add('average_commit_time', 'ms', averageCommitTimeMs,
|
| + data_type='unimportant')
|
| +
|
| +def CalcFirstPaintTimeResults(results, tab):
|
| + if tab.browser.is_content_shell:
|
| + results.Add('first_paint', 'ms', 'unsupported')
|
| + return
|
| +
|
| + tab.runtime.Execute("""
|
| + window.__rafFired = false;
|
| + window.webkitRequestAnimationFrame(function() {
|
| + window.__rafFired = true;
|
| + });
|
| + """)
|
| + util.WaitFor(lambda: tab.runtime.Evaluate('window.__rafFired'), 60)
|
| +
|
| + first_paint_secs = tab.runtime.Evaluate(
|
| + 'window.chrome.loadTimes().firstPaintTime - ' +
|
| + 'window.chrome.loadTimes().requestTime')
|
| +
|
| + results.Add('first_paint', 'ms', round(first_paint_secs * 1000, 1))
|
| +
|
| +class SmoothnessBenchmark(multi_page_benchmark.MultiPageBenchmark):
|
| def __init__(self):
|
| - super(ScrollingBenchmark, self).__init__('scrolling')
|
| + super(SmoothnessBenchmark, self).__init__('scrolling')
|
|
|
| def AddCommandLineOptions(self, parser):
|
| parser.add_option('--no-gpu-benchmarking-extension', action='store_true',
|
| @@ -87,7 +126,11 @@ class ScrollingBenchmark(multi_page_benchmark.MultiPageBenchmark):
|
| if not (rendering_stats_deltas['numFramesSentToScreen'] > 0):
|
| raise DidNotScrollException()
|
|
|
| + CalcFirstPaintTimeResults(results, tab)
|
| CalcScrollResults(rendering_stats_deltas, results)
|
| + CalcPaintingResults(rendering_stats_deltas, results)
|
| + CalcTextureUploadResults(rendering_stats_deltas, results)
|
| +
|
| if self.options.report_all_results:
|
| for k, v in rendering_stats_deltas.iteritems():
|
| results.Add(k, '', v)
|
|
|