diff options
author | zmo@chromium.org <zmo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-06 19:01:44 +0000 |
---|---|---|
committer | zmo@chromium.org <zmo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-06 19:01:44 +0000 |
commit | 88509b5f4f36af9ffae787c73b49e10e87e22c4d (patch) | |
tree | 45f95aa9b5dabed28dca34f3e027426f47e66ba6 /content/test | |
parent | c79d19707a104adbed7989b4b22b588a3fa4c1ae (diff) | |
download | chromium_src-88509b5f4f36af9ffae787c73b49e10e87e22c4d.zip chromium_src-88509b5f4f36af9ffae787c73b49e10e87e22c4d.tar.gz chromium_src-88509b5f4f36af9ffae787c73b49e10e87e22c4d.tar.bz2 |
Move gpu pixel tests from chrome to content.
Also some cleanup: remove the browser resize step, as it adds flakiness, and totally not necessary.
This CL does not remove or turn off the chrome side test, because we need to config the build bots for the content side pixel tests once they are checked in. After everyting rungs smoothly, I'll remove the duplicated tests on chrome side.
BUG=111506
TEST=gpu waterfall
Review URL: https://codereview.chromium.org/12211024
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@181013 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/test')
-rw-r--r-- | content/test/data/gpu/pixel_canvas2d.html | 48 | ||||
-rw-r--r-- | content/test/data/gpu/pixel_css3d.html | 54 | ||||
-rw-r--r-- | content/test/data/gpu/pixel_webgl.html | 137 |
3 files changed, 239 insertions, 0 deletions
diff --git a/content/test/data/gpu/pixel_canvas2d.html b/content/test/data/gpu/pixel_canvas2d.html new file mode 100644 index 0000000..1df3d4b --- /dev/null +++ b/content/test/data/gpu/pixel_canvas2d.html @@ -0,0 +1,48 @@ +<!DOCTYPE HTML> +<html> +<head> +<title>Canvas 2D Test: Red Box over Black Background</title> +<style type="text/css"> +.nomargin { + margin: 0px auto; +} +</style> +<script> +var g_swapsBeforeAck = 15; + +function main() +{ + draw(); + waitForFinish(); +} + +function draw() +{ + var canvas = document.getElementById("c"); + var c2d = canvas.getContext("2d"); + c2d.clearRect(0, 0, canvas.width, canvas.height); + c2d.fillStyle = "rgba(255, 0, 0, 0.5)"; + c2d.fillRect(50, 50, 100, 100); +} + +function waitForFinish() +{ + if (g_swapsBeforeAck == 0) { + domAutomationController.setAutomationId(1); + domAutomationController.send("SUCCESS"); + } else { + g_swapsBeforeAck--; + document.getElementById('container').style.zIndex = g_swapsBeforeAck + 1; + window.webkitRequestAnimationFrame(waitForFinish); + } +} +</script> +</head> +<body onload="main()"> +<div style="position:relative; width:200px; height:200px; background-color:black"> +</div> +<div id="container" style="position:absolute; top:0px; left:0px"> +<canvas id="c" width="200" height="200" class="nomargin"></canvas> +</div> +</body> +</html> diff --git a/content/test/data/gpu/pixel_css3d.html b/content/test/data/gpu/pixel_css3d.html new file mode 100644 index 0000000..ca49d9a --- /dev/null +++ b/content/test/data/gpu/pixel_css3d.html @@ -0,0 +1,54 @@ +<!DOCTYPE HTML> +<html> +<head> +<title>CSS 3D Test: Projected Blue Box over Black Background</title> +<style type="text/css"> +.nomargin { + margin: 0px auto; +} + +#container { + -webkit-perspective: 500; +} + +#container > div { + position: relative; + margin: 50px; + width: 125px; + height: 75px; +} + +#container > :first-child { + background-color: blue; + -webkit-transform: rotateY(45deg); +} +</style> +<script> +var g_swapsBeforeAck = 15; + +function main() +{ + waitForFinish(); +} + +function waitForFinish() +{ + if (g_swapsBeforeAck == 0) { + domAutomationController.setAutomationId(1); + domAutomationController.send("SUCCESS"); + } else { + g_swapsBeforeAck--; + document.getElementById('blue_box').style.zIndex = g_swapsBeforeAck + 1; + window.webkitRequestAnimationFrame(waitForFinish); + } +} +</script> +</head> +<body onload="main()"> +<div style="position:relative; width:200px; height:200px; background-color:black; zindex-0"> +</div> +<div id="container" style="position:absolute; top:0px; left:0px"> + <div id="blue_box"></div> +</div> +</body> +</html> diff --git a/content/test/data/gpu/pixel_webgl.html b/content/test/data/gpu/pixel_webgl.html new file mode 100644 index 0000000..40240f9 --- /dev/null +++ b/content/test/data/gpu/pixel_webgl.html @@ -0,0 +1,137 @@ +<!DOCTYPE HTML> +<html> +<head> +<title>WebGL Test: Green Triangle over Black Background</title> +<style type="text/css"> +.nomargin { + margin: 0px auto; +} +</style> + +<script id="shader-vs" type="x-shader/x-vertex"> +attribute vec3 pos; +void main(void) +{ + gl_Position = vec4(pos, 1.0); +} +</script> + +<script id="shader-fs" type="x-shader/x-fragment"> +precision mediump float; +void main(void) +{ + gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0); +} +</script> + +<script> +var g_swapsBeforeAck = 15; +var gl; + +function main() +{ + var canvas = document.getElementById("c"); + gl = initGL(canvas); + if (gl && setup(gl)) { + drawSomeFrames(); + } else { + domAutomationController.setAutomationId(1); + domAutomationController.send("FAILURE"); + } +} + +function drawSomeFrames() +{ + if (g_swapsBeforeAck == 0) { + domAutomationController.setAutomationId(1); + domAutomationController.send("SUCCESS"); + } else { + g_swapsBeforeAck--; + draw(gl); + window.webkitRequestAnimationFrame(drawSomeFrames); + } +} + +function initGL(canvas) +{ + var gl = null; + try { + gl = canvas.getContext("experimental-webgl"); + } catch (e) {} + if (!gl) { + try { + gl = canvas.getContext("webgl"); + } catch (e) { } + } + return gl; +} + +function setupShader(gl, source, type) { + var shader = gl.createShader(type); + gl.shaderSource(shader, source); + gl.compileShader(shader); + if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) + return null; + return shader; +} + +function setupProgram(gl, vs_id, fs_id) { + var vs_node = document.getElementById(vs_id); + var fs_node = document.getElementById(fs_id); + if (!vs_node || !fs_node) + return null; + var vs = setupShader(gl, vs_node.text, gl.VERTEX_SHADER); + var fs = setupShader(gl, fs_node.text, gl.FRAGMENT_SHADER); + if (!vs || !fs) + return null; + var program = gl.createProgram(); + gl.attachShader(program, vs); + gl.attachShader(program, fs); + gl.linkProgram(program); + if (!gl.getProgramParameter(program, gl.LINK_STATUS)) + return null; + gl.useProgram(program); + return program; +} + +function setupBuffer(gl) { + var buffer = gl.createBuffer(); + gl.bindBuffer(gl.ARRAY_BUFFER, buffer); + var vertexData = [ + 0.0, 0.6, 0.0, // Vertex 1 position + -0.6, -0.6, 0.0, // Vertex 2 position + 0.6, -0.6, 0.0, // Vertex 3 position + ]; + gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertexData), gl.STATIC_DRAW); +} + +function setup(gl) { + var program = setupProgram(gl, "shader-vs", "shader-fs"); + if (!program) + return false; + var posAttr = gl.getAttribLocation(program, "pos"); + gl.enableVertexAttribArray(posAttr); + setupBuffer(gl); + var stride = 3 * Float32Array.BYTES_PER_ELEMENT; + gl.vertexAttribPointer(posAttr, 3, gl.FLOAT, false, stride, 0); + gl.clearColor(0.0, 0.0, 0.0, 0.0); + gl.viewport(0, 0, 200, 200); + gl.disable(gl.DEPTH_TEST); + if (gl.getError() != gl.NO_ERROR) + return false; + return true; +} + +function draw(gl) { + gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); + gl.drawArrays(gl.TRIANGLES, 0, 3); +} +</script> +</head> +<body onload="main()"> +<div style="position:relative; width:200px; height:200px; background-color:black"></div> +<div style="position:absolute; top:0px; left:0px"> +<canvas id="c" width="200" height="200" class="nomargin"></canvas> +</div> +</body> +</html> |