Index: extra/out-of-vram.html |
=================================================================== |
--- extra/out-of-vram.html (revision 0) |
+++ extra/out-of-vram.html (revision 0) |
@@ -0,0 +1,115 @@ |
+<!-- |
+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> |
Property changes on: extra/out-of-vram.html |
___________________________________________________________________ |
Added: svn:executable |
+ * |
Added: svn:eol-style |
+ LF |