• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<!DOCTYPE html>
2<html>
3<body>
4<script src="../resources/runner.js"></script>
5<script src="resources/canvas_runner.js"></script>
6<script>
7
8var sourceCanvas3D = document.createElement('canvas');
9var sourceCtx = sourceCanvas3D.getContext('experimental-webgl');
10var destCanvas3D = document.createElement('canvas');
11var destCtx = destCanvas3D.getContext('experimental-webgl');
12if (!sourceCtx || !destCtx)
13    CanvasRunner.logFatalError("\nWebGL is not supported or enabled on this platform!\n");
14var tex = null;
15
16function setSize(width, height) {
17    sourceCanvas3D.width = width;
18    sourceCanvas3D.height = height;
19    destCanvas3D.width = width;
20    destCanvas3D.height = height;
21}
22
23function rand(range) {
24    return Math.floor(Math.random() * range);
25}
26
27function renderWebGL(gl) {
28    gl.disable(gl.SCISSOR_TEST);
29    gl.clear(gl.COLOR_BUFER_BIT);
30    gl.enable(gl.SCISSOR_TEST);
31    gl.scissor(rand(1024), rand(1024), rand(1024), rand(1024));
32    gl.clearColor(Math.random(), Math.random(), Math.random(), 1);
33    gl.clear(gl.COLOR_BUFFER_BIT);
34}
35
36function preRun() {
37    tex = destCtx.createTexture();
38    destCtx.bindTexture(destCtx.TEXTURE_2D, tex);
39}
40
41function doRun() {
42    destCtx.texImage2D(destCtx.TEXTURE_2D, 0, destCtx.RGBA, destCtx.RGBA, destCtx.UNSIGNED_BYTE, sourceCanvas3D);
43}
44
45function ensureComplete() {
46    destCtx.readPixels(0, 0, 1, 1, sourceCtx.RGBA, sourceCtx.UNSIGNED_BYTE, new Uint8Array(4));
47}
48
49function postRun() {
50    destCtx.deleteTexture(tex);
51}
52
53window.onload = function () {
54    setSize(1024, 1024);
55    renderWebGL(sourceCtx);
56    CanvasRunner.start({
57        description: "This benchmark checks the speed on uploading WebGL(1024x1024) to WebGL Texture(1024x1024).",
58        preRun: preRun,
59        doRun: doRun,
60        ensureComplete: ensureComplete,
61        postRun: postRun});
62}
63
64</script>
65</body>
66</html>
67