Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Side by Side Diff: third_party/webgl/sdk/tests/conformance/context/context-lost.html

Issue 9373009: Check in webgl conformance tests r16844 from khronos. (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/
Patch Set: Created 8 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
Property Changes:
Added: svn:eol-style
+ LF
OLDNEW
(Empty)
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <link rel="stylesheet" href="../../resources/js-test-style.css"/>
5 <script src="../../resources/js-test-pre.js"></script>
6 <script src="../resources/webgl-test.js"></script>
7 <script src="../resources/webgl-test-utils.js"></script>
8 <script>
9 var wtu;
10 var canvas;
11 var gl;
12 var shouldGenerateGLError;
13 var extensionNames = [
14 "WEBKIT_WEBGL_lose_context",
15 "MOZ_WEBGL_lose_context",
16 ];
17 var extensionName;
18 var extension;
19
20 var buffer;
21 var framebuffer;
22 var program;
23 var renderbuffer;
24 var shader;
25 var texture;
26 var uniformLocation;
27 var arrayBuffer;
28 var arrayBufferView
29 var image;
30 var video;
31 var canvas2d;
32 var ctx2d;
33 var imageData;
34 var float32array;
35 var int32array;
36
37 function init()
38 {
39 wtu = WebGLTestUtils;
40 canvas = document.getElementById("canvas");
41 gl = wtu.create3DContext(canvas);
42 shouldGenerateGLError = wtu.shouldGenerateGLError;
43
44 description("Tests behavior under a lost context");
45
46 if (window.initNonKhronosFramework) {
47 window.initNonKhronosFramework(true);
48 }
49
50 // call testValidContext() before checking for the extension, because this i s where we check
51 // for the isContextLost() method, which we want to do regardless of the ext ension's presence.
52 testValidContext();
53
54 for (var ii = 0; ii < extensionNames.length; ++ii) {
55 extension = gl.getExtension(extensionNames[ii]);
56 if (extension) {
57 extensionName = extensionNames[ii];
58 break;
59 }
60 }
61 if (!extension) {
62 debug("Could not find lose_context extension under the following names: " + extensionNames.join(" "));
63 finishTest();
64 return false;
65 }
66
67 canvas.addEventListener("webglcontextlost", testLostContext, false);
68
69 loseContext();
70 }
71
72 function loseContext()
73 {
74 debug("");
75 debug("Lose context");
76
77 // Note: this will cause the context to be lost, but the
78 // webglcontextlost event listener to be queued.
79 extension.loseContext();
80 debug("");
81 }
82
83 function testValidContext()
84 {
85 debug("Test valid context");
86
87 shouldBeFalse("gl.isContextLost()");
88
89 arrayBuffer = new ArrayBuffer(4);
90 arrayBufferView = new Int8Array(arrayBuffer);
91
92 // Generate resources for testing.
93 buffer = gl.createBuffer();
94 gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
95 framebuffer = gl.createFramebuffer();
96 gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
97 program = wtu.setupSimpleTextureProgram(gl);
98 renderbuffer = gl.createRenderbuffer();
99 gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);
100 shader = gl.createShader(gl.VERTEX_SHADER);
101 texture = gl.createTexture();
102 gl.bindTexture(gl.TEXTURE_2D, texture);
103 shouldBe("gl.getError()", "gl.NO_ERROR");
104
105 // Test is queries that will later be false
106 shouldGenerateGLError(gl, gl.NO_ERROR, "gl.enable(gl.BLEND)");
107 shouldBeTrue("gl.isBuffer(buffer)");
108 shouldBeTrue("gl.isEnabled(gl.BLEND)");
109 shouldBeTrue("gl.isFramebuffer(framebuffer)");
110 shouldBeTrue("gl.isProgram(program)");
111 shouldBeTrue("gl.isRenderbuffer(renderbuffer)");
112 shouldBeTrue("gl.isShader(shader)");
113 shouldBeTrue("gl.isTexture(texture)");
114 }
115
116 function testLostContext()
117 {
118 debug("Test lost context");
119
120 // Functions with special return values.
121 shouldBeTrue("gl.isContextLost()");
122 shouldBe("gl.getError()", "gl.CONTEXT_LOST_WEBGL");
123 shouldBe("gl.getError()", "gl.NO_ERROR");
124 shouldBe("gl.checkFramebufferStatus(gl.FRAMEBUFFER)", "gl.FRAMEBUFFER_UNSUPP ORTED");
125 shouldBe("gl.getAttribLocation(program, 'u_modelViewProjMatrix')", "-1");
126 shouldBe("gl.getVertexAttribOffset(0, gl.VERTEX_ATTRIB_ARRAY_POINTER)", "0") ;
127
128 // Test the extension itself.
129 shouldGenerateGLError(gl, gl.INVALID_OPERATION, "extension.loseContext()");
130
131 image = document.createElement("image");
132 video = document.createElement("video");
133 canvas2d = document.createElement("canvas");
134 ctx2d = canvas2d.getContext("2d");
135 imageData = ctx2d.createImageData(1, 1);
136 float32array = new Float32Array(1);
137 int32array = new Int32Array(1);
138
139 // Functions returning void should return immediately.
140 // This is untestable, but we can at least be sure they cause no errors
141 // and the codepaths are exercised.
142 var voidTests = [
143 "gl.activeTexture(gl.TEXTURE0)",
144 "gl.attachShader(program, shader)",
145 "gl.bindBuffer(gl.ARRAY_BUFFER, buffer)",
146 "gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer)",
147 "gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer)",
148 "gl.bindTexture(gl.TEXTURE_2D, texture)",
149 "gl.blendColor(1.0, 1.0, 1.0, 1.0)",
150 "gl.blendEquation(gl.FUNC_ADD)",
151 "gl.blendEquationSeparate(gl.FUNC_ADD, gl.FUNC_ADD)",
152 "gl.blendFunc(gl.ONE, gl.ONE)",
153 "gl.blendFuncSeparate(gl.ONE, gl.ONE, gl.ONE, gl.ONE)",
154 "gl.bufferData(gl.ARRAY_BUFFER, 0, gl.STATIC_DRAW)",
155 "gl.bufferData(gl.ARRAY_BUFFER, arrayBufferView, gl.STATIC_DRAW)",
156 "gl.bufferData(gl.ARRAY_BUFFER, arrayBuffer, gl.STATIC_DRAW)",
157 "gl.bufferSubData(gl.ARRAY_BUFFRE, 0, arrayBufferView)",
158 "gl.bufferSubData(gl.ARRAY_BUFFRE, 0, arrayBuffer)",
159 "gl.clear(gl.COLOR_BUFFER_BIT)",
160 "gl.clearColor(1, 1, 1, 1)",
161 "gl.clearDepth(1)",
162 "gl.clearStencil(0)",
163 "gl.colorMask(1, 1, 1, 1)",
164 "gl.compileShader(shader)",
165 "gl.copyTexImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 0, 0, 0, 0, 0)",
166 "gl.copyTexSubImage2D(gl.TEXTURE_2D, 0, 0, 0, 0, 0, 0, 0)",
167 "gl.cullFace(gl.FRONT)",
168 "gl.deleteBuffer(buffer)",
169 "gl.deleteFramebuffer(framebuffer)",
170 "gl.deleteProgram(program)",
171 "gl.deleteRenderbuffer(renderbuffer)",
172 "gl.deleteShader(shader)",
173 "gl.deleteTexture(texture)",
174 "gl.depthFunc(gl.NEVER)",
175 "gl.depthMask(0)",
176 "gl.depthRange(0, 1)",
177 "gl.detachShader(program, shader)",
178 "gl.disable(gl.BLEND)",
179 "gl.disableVertexAttribArray(0)",
180 "gl.drawArrays(gl.POINTS, 0, 0)",
181 "gl.drawElements(gl.POINTS, 0, gl.UNSIGNED_SHORT, 0)",
182 "gl.enable(gl.BLEND)",
183 "gl.enableVertexAttribArray(0)",
184 "gl.finish()",
185 "gl.flush()",
186 "gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.REN DERBUFFER, renderbuffer)",
187 "gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTUR E_2D, texture, 0)",
188 "gl.frontFace(gl.CW)",
189 "gl.generateMipmap(gl.TEXTURE_2D)",
190 "gl.hint(gl.GENERATE_MIPMAP_HINT, gl.FASTEST)",
191 "gl.lineWidth(0)",
192 "gl.linkProgram(program)",
193 "gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, 0)",
194 "gl.polygonOffset(0, 0)",
195 "gl.readPixels(0, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, arrayBufferView)",
196 "gl.renderbufferStorage(gl.RENDERBUFFER, gl.RGBA4, 0, 0)",
197 "gl.sampleCoverage(0, 0)",
198 "gl.scissor(0, 0, 0, 0)",
199 "gl.shaderSource(shader, '')",
200 "gl.stencilFunc(gl.NEVER, 0, 0)",
201 "gl.stencilFuncSeparate(gl.FRONT, gl.NEVER, 0, 0)",
202 "gl.stencilMask(0)",
203 "gl.stencilMaskSeparate(gl.FRONT, 0)",
204 "gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP)",
205 "gl.stencilOpSeparate(gl.FRONT, gl.KEEP, gl.KEEP, gl.KEEP)",
206 "gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 0, 0, 0, gl.RGBA, gl.UNSIGNED_ BYTE, arrayBufferView)",
207 "gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, ima geData)",
208 "gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, ima ge)",
209 "gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, can vas)",
210 "gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, vid eo)",
211 "gl.texParameterf(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST)",
212 "gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST)",
213 "gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYT E, arrayBufferView)",
214 "gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, ima geData)",
215 "gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, ima ge)",
216 "gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, can vas)",
217 "gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, vid eo)",
218 "gl.uniform1f(uniformLocation, 0)",
219 "gl.uniform1fv(uniformLocation, float32array)",
220 "gl.uniform1fv(uniformLocation, [0])",
221 "gl.uniform1i(uniformLocation, 0)",
222 "gl.uniform1iv(uniformLocation, int32array)",
223 "gl.uniform1iv(uniformLocation, [0])",
224 "gl.uniform2f(uniformLocation, 0, 0)",
225 "gl.uniform2fv(uniformLocation, float32array)",
226 "gl.uniform2fv(uniformLocation, [0, 0])",
227 "gl.uniform2i(uniformLocation, 0, 0)",
228 "gl.uniform2iv(uniformLocation, int32array)",
229 "gl.uniform2iv(uniformLocation, [0, 0])",
230 "gl.uniform3f(uniformLocation, 0, 0, 0)",
231 "gl.uniform3fv(uniformLocation, float32array)",
232 "gl.uniform3fv(uniformLocation, [0, 0, 0])",
233 "gl.uniform3i(uniformLocation, 0, 0, 0)",
234 "gl.uniform3iv(uniformLocation, int32array)",
235 "gl.uniform3iv(uniformLocation, [0, 0, 0])",
236 "gl.uniform4f(uniformLocation, 0, 0, 0, 0)",
237 "gl.uniform4fv(uniformLocation, float32array)",
238 "gl.uniform4fv(uniformLocation, [0, 0, 0, 0])",
239 "gl.uniform4i(uniformLocation, 0, 0, 0, 0)",
240 "gl.uniform4iv(uniformLocation, int32array)",
241 "gl.uniform4iv(uniformLocation, [0, 0, 0, 0])",
242 "gl.uniformMatrix2fv(uniformLocation, false, float32array)",
243 "gl.uniformMatrix2fv(uniformLocation, false, [0, 0, 0, 0])",
244 "gl.uniformMatrix3fv(uniformLocation, false, float32array)",
245 "gl.uniformMatrix3fv(uniformLocation, false, [0, 0, 0, 0, 0, 0, 0, 0, 0] )",
246 "gl.uniformMatrix4fv(uniformLocation, false, float32array)",
247 "gl.uniformMatrix4fv(uniformLocation, false, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])",
248 "gl.useProgram(program)",
249 "gl.validateProgram(program)",
250 "gl.vertexAttrib1f(0, 0)",
251 "gl.vertexAttrib1fv(0, float32array)",
252 "gl.vertexAttrib1fv(0, [0])",
253 "gl.vertexAttrib2f(0, 0, 0)",
254 "gl.vertexAttrib2fv(0, float32array)",
255 "gl.vertexAttrib2fv(0, [0, 0])",
256 "gl.vertexAttrib3f(0, 0, 0, 0)",
257 "gl.vertexAttrib3fv(0, float32array)",
258 "gl.vertexAttrib3fv(0, [0, 0, 0])",
259 "gl.vertexAttrib4f(0, 0, 0, 0, 0)",
260 "gl.vertexAttrib4fv(0, float32array)",
261 "gl.vertexAttrib4fv(0, [0, 0, 0, 0])",
262 "gl.vertexAttribPointer(0, 0, gl.FLOAT, false, 0, 0)",
263 "gl.viewport(0, 0, 0, 0)",
264 ];
265 for (var i = 0; i < voidTests.length; ++i) {
266 shouldGenerateGLError(gl, gl.NO_ERROR, voidTests[i]);
267 }
268
269 // Functions return nullable values should all return null.
270 var nullTests = [
271 "gl.createBuffer()",
272 "gl.createFramebuffer()",
273 "gl.createProgram()",
274 "gl.createRenderbuffer()",
275 "gl.createShader(gl.GL_VERTEX_SHADER)",
276 "gl.createTexture()",
277 "gl.getActiveAttrib(program, 0)",
278 "gl.getActiveUniform(program, 0)",
279 "gl.getAttachedShaders(program)",
280 "gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_SIZE)",
281 "gl.getContextAttributes()",
282 "gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMEN T0, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME)",
283 "gl.getParameter(gl.CURRENT_PROGRAM)",
284 "gl.getProgramInfoLog(program)",
285 "gl.getProgramParameter(program, gl.LINK_STATUS)",
286 "gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_WIDTH)",
287 "gl.getShaderInfoLog(shader)",
288 "gl.getShaderParameter(shader, gl.SHADER_TYPE)",
289 "gl.getShaderSource(shader)",
290 "gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S)",
291 "gl.getUniform(program, uniformLocation)",
292 "gl.getUniformLocation(program, 'vPosition')",
293 "gl.getVertexAttrib(0, gl.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING)",
294 "gl.getSupportedExtensions()",
295 "gl.getExtension('" + extensionName + "')",
296 ];
297 for (var i = 0; i < nullTests.length; ++i) {
298 shouldBeNull(nullTests[i]);
299 }
300
301 // "Is" queries should all return false.
302 shouldBeFalse("gl.isBuffer(buffer)");
303 shouldBeFalse("gl.isEnabled(gl.BLEND)");
304 shouldBeFalse("gl.isFramebuffer(framebuffer)");
305 shouldBeFalse("gl.isProgram(program)");
306 shouldBeFalse("gl.isRenderbuffer(renderbuffer)");
307 shouldBeFalse("gl.isShader(shader)");
308 shouldBeFalse("gl.isTexture(texture)");
309
310 shouldBe("gl.getError()", "gl.NO_ERROR");
311
312 debug("");
313
314 finishTest();
315 }
316
317 </script>
318 </head>
319 <body onload="init()">
320 <div id="description"></div>
321 <div id="console"></div>
322 <canvas id="canvas">
323 </body>
324 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698