| # Copyright 2013 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import time |
| |
| from measurements import smoothness |
| from telemetry.page import page_measurement |
| |
| class RecordPerArea(page_measurement.PageMeasurement): |
| def __init__(self): |
| super(RecordPerArea, self).__init__('', True) |
| |
| def AddCommandLineArgs(self, parser): |
| parser.add_option('--start-wait-time', type='float', |
| default=2, |
| help='Wait time before the benchmark is started ' |
| '(must be long enought to load all content)') |
| |
| def CustomizeBrowserOptions(self, options): |
| smoothness.Smoothness.CustomizeBrowserOptions(options) |
| options.AppendExtraBrowserArgs([ |
| '--enable-impl-side-painting', |
| '--force-compositing-mode', |
| '--enable-threaded-compositing', |
| '--enable-gpu-benchmarking' |
| ]) |
| |
| def MeasurePage(self, page, tab, results): |
| # Wait until the page has loaded and come to a somewhat steady state. |
| # Needs to be adjusted for every device (~2 seconds for workstation). |
| time.sleep(self.options.start_wait_time) |
| |
| # Enqueue benchmark |
| tab.ExecuteJavaScript(""" |
| window.benchmark_results = {}; |
| window.benchmark_results.done = false; |
| chrome.gpuBenchmarking.runMicroBenchmark( |
| "picture_record_benchmark", |
| function(value) { |
| window.benchmark_results.done = true; |
| window.benchmark_results.results = value; |
| }, [{width: 1, height: 1}, |
| {width: 250, height: 250}, |
| {width: 500, height: 500}, |
| {width: 750, height: 750}, |
| {width: 1000, height: 1000}, |
| {width: 256, height: 1024}, |
| {width: 1024, height: 256}]); |
| """) |
| |
| tab.WaitForJavaScriptExpression('window.benchmark_results.done', 300) |
| |
| all_data = tab.EvaluateJavaScript('window.benchmark_results.results') |
| for data in all_data: |
| width = data['width'] |
| height = data['height'] |
| area = width * height |
| time_ms = data['time_ms'] |
| |
| results.Add('area_%07d_%dx%d' % (area, width, height), 'ms', time_ms) |
| |