1 # Copyright 2013 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
5 """Scirra WebGL and Canvas2D rendering benchmark suite.
7 The Scirra WebGL performance test measures the number of 2D triangles
8 represented onscreen when the animation reaches the 30 FPS threshold.
13 from telemetry
import benchmark
14 from telemetry
.page
import page_set
15 from telemetry
.page
import page_test
16 from telemetry
.value
import scalar
19 class _ScirraMeasurement(page_test
.PageTest
):
21 def WillNavigateToPage(self
, page
, tab
):
22 page
.script_to_evaluate_on_commit
= 'window.sprites = 0;'
24 def ValidateAndMeasurePage(self
, _
, tab
, results
):
25 object_count
= '$objectcount$'
27 tickcount
= '$tickcount$'
28 # For http://www.scirra.com/labs/renderperf3/, JavaScript generated by
29 # Construct 2 has different variables for Objects, fps and tickcount.
30 if 'renderperf3' in tab
.url
:
35 # Updates object count variable, when the FPS reaches 30 threshold and
36 # tickcounts to reach value greater than 500(just to stablize frames).
38 var IsTestDone = function() {
39 if (window.cr_getC2Runtime().%(tickcount)s > 500 &&
40 window.cr_getC2Runtime().%(fps)s == 30) {
41 window.sprites = window.cr_getC2Runtime().%(object_count)s;
48 """ % {'tickcount': tickcount
, 'fps': fps
, 'object_count': object_count
}
49 tab
.WaitForJavaScriptExpression(js_is_done
, 300)
50 total
= int(tab
.EvaluateJavaScript('window.sprites'))
51 results
.AddValue(scalar
.ScalarValue(
52 results
.current_page
, 'Count', 'count', total
))
55 class ScirraBenchmark(benchmark
.Benchmark
):
56 """WebGL and Canvas2D rendering benchmark suite."""
57 test
= _ScirraMeasurement
58 def CreatePageSet(self
, options
):
59 ps
= page_set
.PageSet(
60 archive_data_file
='../page_sets/data/scirra.json',
61 make_javascript_deterministic
=False,
62 file_path
=os
.path
.abspath(__file__
))
63 for url
in ('http://www.scirra.com/labs/renderperf3/',
64 'http://www.scirra.com/demos/c2/renderperfgl/',
65 'http://www.scirra.com/demos/c2/renderperf2d/'):
66 ps
.AddPageWithDefaultRunNavigate(url
)