The 1.0.1 release is really close, and upgrading now allows us to give feedback and make sure that all tests are passable. The canonical URL for this test suite is https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/sdk/tests/webgl-conformance-tests.html
116 lines
2.7 KiB
HTML
116 lines
2.7 KiB
HTML
<!--
|
|
Copyright (c) 2009 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.
|
|
-->
|
|
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>WebGL Out Of VRAM Test</title>
|
|
<link rel="stylesheet" href="../resources/js-test-style.css"/>
|
|
<script src="../resources/desktop-gl-constants.js" type="text/javascript"></script>
|
|
<script src="../resources/js-test-pre.js"></script>
|
|
<script src="../conformance/resources/webgl-test.js"></script>
|
|
<script src="../conformance/resources/webgl-test-utils.js"></script>
|
|
</head>
|
|
<body>
|
|
<div id="description"></div>
|
|
<div id="console"></div>
|
|
<canvas id="canvas" width="2" height="2"> </canvas>
|
|
<script>
|
|
debug("This tests WebGL running out of vram.");
|
|
|
|
debug("");
|
|
debug("Canvas.getContext");
|
|
|
|
var wtu = WebGLTestUtils;
|
|
var canvas = document.getElementById("canvas");
|
|
try {
|
|
var gl = create3DContext(canvas);
|
|
} catch(e) {
|
|
}
|
|
if (!gl) {
|
|
testFailed("could not create context");
|
|
} else {
|
|
testPassed("context exists");
|
|
|
|
var args = wtu.getUrlArguments();
|
|
|
|
canvas.addEventListener('webglcontextlost', contextLost, false);
|
|
|
|
function contextLost(e) {
|
|
e.preventDefault();
|
|
debug("***context lost***");
|
|
}
|
|
|
|
function contextRestored(e) {
|
|
debug("***context restored***");
|
|
}
|
|
|
|
debug("");
|
|
debug("Allocating textures.");
|
|
|
|
var intervalId;
|
|
var count = 0;
|
|
var textureMem = 0;
|
|
var textures = [];
|
|
var size = 2048;
|
|
var limit = (args.limit ? args.limit : 8192) * 1024 * 1024;
|
|
|
|
debug("limit: " + InMB(limit))
|
|
|
|
function InMB(v) {
|
|
return "" + Math.floor(v / 1024 / 1024) + "MB";
|
|
}
|
|
|
|
function makeTexture() {
|
|
if (gl.isContextLost()) {
|
|
stop("out of memory");
|
|
return;
|
|
}
|
|
++count;
|
|
textureMem += size * size * 4;
|
|
if (textureMem > limit) {
|
|
stop("reached limit");
|
|
return;
|
|
}
|
|
debug ("creating texture #" + count + " mem = " + InMB(textureMem));
|
|
var texture = gl.createTexture();
|
|
textures.push(texture);
|
|
gl.bindTexture(gl.TEXTURE_2D, texture);
|
|
gl.texImage2D(gl.TEXTURE_2D,
|
|
0, // level
|
|
gl.RGBA, // internalFormat
|
|
size, // width
|
|
size, // height
|
|
0, // border
|
|
gl.RGBA, // format
|
|
gl.UNSIGNED_BYTE, // type
|
|
null); // data
|
|
var err = gl.getError();
|
|
if (err != gl.NO_ERROR) {
|
|
stop("out of memory");
|
|
return;
|
|
}
|
|
}
|
|
|
|
intervalId = window.setInterval(makeTexture, 1000 / 15);
|
|
|
|
}
|
|
|
|
function stop(msg) {
|
|
window.clearInterval(intervalId);
|
|
testPassed(msg);
|
|
finish();
|
|
}
|
|
|
|
function finish() {
|
|
debug("");
|
|
successfullyParsed = true;
|
|
}
|
|
|
|
</script>
|
|
</body>
|
|
</html>
|