| Index: chrome/test/data/perf/latency_suite.html
|
| ===================================================================
|
| --- chrome/test/data/perf/latency_suite.html (revision 116201)
|
| +++ chrome/test/data/perf/latency_suite.html (working copy)
|
| @@ -1,152 +0,0 @@
|
| -<html>
|
| -<head>
|
| -<script type="text/javascript">
|
| -/**
|
| - * @fileoverview This page executes various animation behaviors based on URL
|
| - * arguments to test input latency. There are two main modes of
|
| - * operation: webgl and software. Both modes use
|
| - * requestAnimationFrame to drive the update rate. The basic task
|
| - * of the page is to collect mouse input coordinates in the input
|
| - * handler and render with the latest input coordinate in RAF. The
|
| - * latency test will look at the rendering trace data to detect
|
| - * the latest mouse coordinate that affected the frame. For
|
| - * software runs, the pixel at 0,0 on the page must contain the
|
| - * mouse coordinate encoded as a color.
|
| - */
|
| -
|
| -var frameCountWarmup = 5;
|
| -var frameCount = 0;
|
| -var gl = null;
|
| -var mouseX = 0;
|
| -var testParams = {};
|
| -
|
| -function parseParams() {
|
| - var query = window.location.search.substring(1);
|
| - if (!query)
|
| - return;
|
| - var params = query.split('&');
|
| - for (var i = 0, len = params.length; i < len; i++) {
|
| - var pair = params[i].split('=');
|
| - if (pair.length == 1)
|
| - testParams[pair[0]] = true;
|
| - else
|
| - testParams[pair[0]] = pair[1];
|
| - }
|
| -}
|
| -
|
| -function setCoordinates(e) {
|
| - // Ignore mouse events with wrong Y coordinate.
|
| - if (e.clientY != parseInt(testParams.y))
|
| - return;
|
| -
|
| - mouseX = e.clientX;
|
| - if (testParams.inputDirty) {
|
| - document.getElementById('text').firstChild.textContent =
|
| - mouseX.toString();
|
| - }
|
| - if (testParams.inputHeavy) {
|
| - sleep(parseInt(testParams.delayTimeMS));
|
| - }
|
| -}
|
| -
|
| -function init() {
|
| - parseParams();
|
| -
|
| - if (testParams.mode == 'webgl') {
|
| - var canvas = document.getElementById('canvas');
|
| - if (!canvas)
|
| - return false;
|
| - canvas.width = parseInt(testParams.canvasWidth);
|
| - canvas.height = parseInt(testParams.canvasWidth);
|
| - try {
|
| - // Specify antialiasing to ensure that we get a BlitFramebufferEXT in
|
| - // the trace when the compositor consumes a webgl frame.
|
| - gl = canvas.getContext('webgl', { antialias: true });
|
| - } catch (e) {}
|
| - if (!gl) {
|
| - try {
|
| - gl = canvas.getContext('experimental-webgl');
|
| - } catch (e) {
|
| - return false;
|
| - }
|
| - }
|
| - return true;
|
| - } else if (testParams.mode == 'software') {
|
| - var table = document.getElementById('table');
|
| - table.style.backgroundColor = '#ff00ff';
|
| - return true;
|
| - }
|
| -}
|
| -
|
| -function onLoad() {
|
| - if (init())
|
| - window.webkitRequestAnimationFrame(draw);
|
| - else
|
| - endTest();
|
| -}
|
| -
|
| -function sleep(milliseconds) {
|
| - var start = Date.now();
|
| - while(Date.now() - start <= milliseconds);
|
| -}
|
| -
|
| -function draw() {
|
| - if (testParams.rafHeavy) {
|
| - sleep(parseInt(testParams.delayTimeMS));
|
| - }
|
| -
|
| - if (testParams.mode == 'webgl') {
|
| - gl.viewport(0, 0, testParams.canvasWidth, testParams.canvasWidth);
|
| - if (testParams.paintHeavy) {
|
| - gl.clearColor(0, 0, 0.0, 1.0);
|
| - for (var i = 0; i < 1000; ++i)
|
| - gl.clear(gl.COLOR_BUFFER_BIT);
|
| - }
|
| - gl.clearColor(mouseX, testParams.clearColorGreen, 0.0, 1.0);
|
| - gl.clear(gl.COLOR_BUFFER_BIT);
|
| - } else if (testParams.mode == 'software') {
|
| - var table = document.getElementById('table');
|
| - // Encode mouse x value into color channels (support up to 64k x values).
|
| - var g = (mouseX & 0xff00) >> 8;
|
| - var b = (mouseX & 0xff);
|
| - table.style.backgroundColor = 'rgb(0, ' + g + ', ' + b + ')';
|
| - // When no inputs are coming in, the first table won't change. Since we
|
| - // still need to cause a paint, toggle the color of another element:
|
| - var table2 = document.getElementById('table2');
|
| - table2.style.backgroundColor = (frameCount & 1) ? 'gray' : 'silver';
|
| - if (testParams.paintHeavy) {
|
| - var body = document.getElementById('body');
|
| - body.style.backgroundColor = (frameCount & 1) ? 'silver' : 'gray';
|
| - }
|
| - }
|
| -
|
| - frameCount++;
|
| - if (frameCount == parseInt(testParams.numFrames)) {
|
| - if (testParams.mode == 'webgl')
|
| - gl.finish();
|
| - endTest();
|
| - } else {
|
| - window.webkitRequestAnimationFrame(draw);
|
| - }
|
| -}
|
| -
|
| -function endTest() {
|
| - domAutomationController.setAutomationId(1);
|
| - domAutomationController.send('FINISHED');
|
| -}
|
| -</script>
|
| -</head>
|
| -<style>
|
| -#table {
|
| - height: 10px;
|
| - width: 10px;
|
| -}
|
| -</style>
|
| -<body id="body" style="margin:0px" onload="onLoad()"
|
| - onmousemove="setCoordinates(event)">
|
| -<table id="table"><tr/></table>
|
| -<table id="table2"><tr/></table>
|
| -<canvas id="canvas"></canvas>
|
| -<p><b id="text">x</b></p>
|
| -</body>
|
| -</html>
|
|
|