height: 3000px;
}
</style>
+</head>
+<body>
+<!-- Important to put the canvas at the top so that it's always visible even in the test suite runner.
+ Otherwise it just doesn't get composited in Firefox. -->
+<canvas width="20" height="20" style="border: 1px solid blue;" id="c"></canvas>
+<div id="description"></div>
+<div id="console"></div>
<script type="text/javascript">
+"use strict";
-var iter = 0;
-var gl1;
+description("This test ensures WebGL implementations correctly clear the drawing buffer " +
+ "on composite if preserveDrawingBuffer is false.");
+debug("");
var wtu = WebGLTestUtils;
-function timer() {
- if (iter == 0) {
- function init(gl) {
- gl.clearColor(1, 0, 0, 1);
- gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT | gl.STENCIL_BUFFER_BIT);
-
- // enable scissor here, before compositing, to make sure it's correctly
- // ignored and restored
- gl.scissor(0, 10, 10, 10);
- gl.enable(gl.SCISSOR_TEST);
- }
- init(gl1);
- } else if (iter == 1) {
- // some random hacky stuff to make sure that we get a compositing step
- window.scrollBy(0, 10);
- window.scrollBy(0, -10);
- } else if (iter == 2) {
- function clear(gl) {
- // scissor was set earlier
- gl.clearColor(0, 0, 1, 1);
- gl.clear(gl.COLOR_BUFFER_BIT);
+var gl = wtu.create3DContext("c");
+shouldBeTrue("gl != null");
+shouldBeTrue('gl.getContextAttributes().preserveDrawingBuffer == false');
- wtu.checkCanvasRect(gl, 0, 10, 10, 10, [0, 0, 255, 255], "cleared corner should be blue, stencil should be preserved");
- wtu.checkCanvasRect(gl, 0, 0, 10, 10, [0, 0, 0, 0], "remainder of buffer should be cleared");
- }
- clear(gl1);
+gl.clearColor(1, 0, 0, 1);
+gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT | gl.STENCIL_BUFFER_BIT);
- finishTest();
- return;
- }
-
- iter++;
- setTimeout(timer, 500);
-}
+// enable scissor here, before compositing, to make sure it's correctly
+// ignored and restored
+gl.scissor(0, 10, 10, 10);
+gl.enable(gl.SCISSOR_TEST);
-function go() {
- description("This test ensures WebGL implementations correctly clear the drawing buffer on composite if preserveDrawingBuffer is false.");
+function clear() {
+ // scissor was set earlier
+ gl.clearColor(0, 0, 1, 1);
+ gl.clear(gl.COLOR_BUFFER_BIT);
- debug("");
+ wtu.checkCanvasRect(gl, 0, 10, 10, 10, [0, 0, 255, 255],
+ "cleared corner should be blue, stencil should be preserved");
+ wtu.checkCanvasRect(gl, 0, 0, 10, 10, [0, 0, 0, 0],
+ "remainder of buffer should be cleared");
- gl1 = wtu.create3DContext("c");
- if (!gl1) {
- finishTest();
- return;
- }
-
- shouldBeTrue("gl1 != null");
- shouldBeTrue('gl1.getContextAttributes().preserveDrawingBuffer == false');
-
- setTimeout(timer, 500);
+ finishTest();
+ return;
}
-window.addEventListener("load", go, false);
+wtu.waitForComposite(clear);
var successfullyParsed = true;
</script>
-</head>
-<body>
-<!-- Important to put the canvas at the top so that it's always visible even in the test suite runner.
- Otherwise it just doesn't get composited in Firefox. -->
-<canvas width="20" height="20" style="border: 1px solid blue;" id="c"></canvas>
-<div id="description"></div>
-<div id="console"></div>
</body>
</html>