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

Side by Side Diff: conformance/textures/tex-input-validation.html

Issue 8342021: Add webgl conformance tests r15841. (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/webgl/sdk/tests/
Patch Set: Created 9 years, 2 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 <!--
2 Copyright (c) 2011 The Chromium Authors. All rights reserved.
3 Use of this source code is governed by a BSD-style license that can be
4 found in the LICENSE file.
5 -->
6 <!DOCTYPE html>
7 <html>
8 <head>
9 <meta charset="utf-8">
10 <link rel="stylesheet" href="../../resources/js-test-style.css"/>
11 <script src="../../resources/js-test-pre.js"></script>
12 <script src="../resources/webgl-test.js"></script>
13 <script src="../resources/webgl-test-utils.js"></script>
14 </head>
15 <body>
16 <div id="description"></div>
17 <div id="console"></div>
18
19 <script>
20 var wtu = WebGLTestUtils;
21 var gl = null;
22 var tex = null;
23 var error = 0;
24
25 function enumToString(value) {
26 return wtu.glEnumToString(gl, value);
27 }
28
29 function testTexImage2D(testCase)
30 {
31 var level = 0;
32 var width = 16;
33 var height = 16;
34 var msg = "" +
35 " internalFormat: " + enumToString(testCase.internalFormat) +
36 " target: " + enumToString(testCase.target) +
37 " format: " + enumToString(testCase.format) +
38 " type: " + enumToString(testCase.type) +
39 " border: " + testCase.border;
40
41 gl.texImage2D(testCase.target, level, testCase.internalFormat, width, height , testCase.border, testCase.format, testCase.type, null);
42 error = testCase.expectedError;
43 glErrorShouldBe(gl, error, msg);
44 }
45
46 function testTexSubImage2D(testCase)
47 {
48 var level = 0;
49 var xoffset = 0;
50 var yoffset = 0;
51 var width = 16;
52 var height = 16;
53 var msg = ""+
54 " format: " + enumToString(testCase.format) +
55 " type: " + enumToString(testCase.type);
56 var array = new Uint8Array(width * height * 4);
57 gl.texSubImage2D(testCase.target, level, xoffset, yoffset, width, height, te stCase.format, testCase.type, array);
58 error = testCase.expectedError;
59 glErrorShouldBe(gl, error, msg);
60 }
61
62 function testTexParameter(testCase)
63 {
64 var msg = "paramName: " + enumToString(testCase.pname);
65 error = testCase.expectedError;
66 gl.texParameteri(testCase.target, testCase.pname, testCase.param);
67 glErrorShouldBe(gl, error, msg);
68 gl.texParameterf(testCase.target, testCase.pname, testCase.param);
69 glErrorShouldBe(gl, error, msg);
70 }
71
72 function testGetTexParameter(testCase)
73 {
74 var msg = "paramName: " + enumToString(testCase.pname);
75 error = testCase.expectedError;
76 gl.getTexParameter(testCase.target, testCase.pname);
77 glErrorShouldBe(gl, error, msg);
78 }
79
80 function testCopyTexImage2D(testCase)
81 {
82 var level = 0;
83 var x = 0;
84 var y = 0;
85 var width = 16;
86 var height = 16;
87
88 var msg = "" +
89 " colorBufferFormat: " + enumToString(testCase.colorBufferFormat) +
90 " internalFormat: " + enumToString(testCase.internalFormat) +
91 " target: " + enumToString(testCase.target) +
92 " border: " + testCase.border;
93
94 gl.renderbufferStorage(gl.RENDERBUFFER, testCase.colorBufferFormat, width, h eight);
95 glErrorShouldBe(gl, gl.NO_ERROR);
96 shouldBe("gl.checkFramebufferStatus(gl.FRAMEBUFFER)", "gl.FRAMEBUFFER_COMPLE TE");
97
98 gl.copyTexImage2D(testCase.target, level, testCase.internalFormat, x, y, wid th, height, testCase.border);
99 error = testCase.expectedError;
100 glErrorShouldBe(gl, error, msg);
101 }
102
103 function testCopyTexSubImage2D(testCase)
104 {
105 var level = 0;
106 var x = 0;
107 var y = 0;
108 var width = 16;
109 var height = 16;
110 var xoffset = 0;
111 var yoffset = 0;
112 var border = 0;
113 var type = gl.UNSIGNED_BYTE;
114 var msg = "" +
115 " colorBufferFormat: " + enumToString(testCase.colorBufferFormat) +
116 " internalFormat: " + enumToString(testCase.internalFormat) +
117 " target: " + enumToString(testCase.target);
118
119 gl.renderbufferStorage(gl.RENDERBUFFER, testCase.colorBufferFormat, width, h eight);
120 glErrorShouldBe(gl, gl.NO_ERROR);
121 shouldBe("gl.checkFramebufferStatus(gl.FRAMEBUFFER)", "gl.FRAMEBUFFER_COMPLE TE");
122
123 gl.texImage2D(testCase.target, level, testCase.internalFormat, xoffset + wid th, yoffset + height, border, testCase.internalFormat, type, null);
124 glErrorShouldBe(gl, gl.NO_ERROR);
125
126 gl.copyTexSubImage2D(testCase.target, level, xoffset, yoffset, x, y, width, height);
127 error = testCase.expectedError;
128 glErrorShouldBe(gl, error, msg);
129 }
130
131 function testCopyFromInternalFBO(testCase)
132 {
133 var target = gl.TEXTURE_2D;
134 var level = 0;
135 var x = 0;
136 var y = 0;
137 var width = 16;
138 var height = 16;
139 var xoffset = 0;
140 var yoffset = 0;
141 var border = 0;
142 var type = gl.UNSIGNED_BYTE;
143 var msg = "" +
144 " colorBufferFormat: " + enumToString(testCase.contextAlpha ? gl.RGBA : gl .RGB) +
145 " internalFormat: " + enumToString(testCase.internalFormat);
146
147 if (testCase.contextAlpha)
148 gl = create3DContext(null, { alpha: true });
149 else
150 gl = create3DContext(null, { alpha: false });
151 shouldBeNonNull("gl");
152 shouldBeNonNull("tex = gl.createTexture()");
153 gl.bindTexture(target, tex);
154 if (testCase.subImage) {
155 gl.texImage2D(target, level, testCase.internalFormat, xoffset + width, y offset + height, border, testCase.internalFormat, type, null);
156 glErrorShouldBe(gl, gl.NO_ERROR);
157 gl.copyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, heigh t);
158 } else {
159 glErrorShouldBe(gl, gl.NO_ERROR);
160 gl.copyTexImage2D(target, level, testCase.internalFormat, x, y, width, h eight, border);
161 }
162 error = testCase.expectedError;
163 glErrorShouldBe(gl, error, msg);
164 }
165
166 description("Validate tex functions input parameters");
167
168 shouldBeNonNull("gl = create3DContext()");
169 shouldBeNonNull("tex = gl.createTexture()");
170 gl.bindTexture(gl.TEXTURE_2D, tex);
171 glErrorShouldBe(gl, gl.NO_ERROR);
172
173 debug("");
174 debug("Checking TexImage2D: a set of inputs that are valid in GL but invalid in GLES2");
175
176 var testCases =
177 [ {target: 0x8064, // GL_PROXY_TEXTURE_2D
178 internalFormat: gl.RGBA,
179 border: 0,
180 format: gl.RGBA,
181 type: gl.UNSIGNED_BYTE,
182 expectedError: gl.INVALID_ENUM},
183 {target: gl.TEXTURE_2D,
184 internalFormat: 0x1903, // GL_RED
185 border: 0,
186 format: 0x1903, // GL_RED
187 type: gl.UNSIGNED_BYTE,
188 expectedError: gl.INVALID_ENUM},
189 {target: gl.TEXTURE_2D,
190 internalFormat: gl.RGBA,
191 border: 1,
192 format: gl.RGBA,
193 type: gl.UNSIGNED_BYTE,
194 expectedError: gl.INVALID_VALUE},
195 {target: gl.TEXTURE_2D,
196 internalFormat: gl.RGBA,
197 border: 0,
198 format: gl.RGB,
199 type: gl.UNSIGNED_BYTE,
200 expectedError: gl.INVALID_OPERATION},
201 {target: gl.TEXTURE_2D,
202 internalFormat: gl.RGBA,
203 border: 0,
204 format: gl.RGBA,
205 type: gl.BYTE,
206 expectedError: gl.INVALID_ENUM},
207 {target: gl.TEXTURE_2D,
208 internalFormat: gl.RGBA,
209 border: 0,
210 format: gl.RGBA,
211 type: gl.UNSIGNED_BYTE,
212 expectedError: gl.NO_ERROR} ];
213
214 for (var ii = 0; ii < testCases.length; ++ii)
215 testTexImage2D(testCases[ii]);
216
217 debug("");
218 debug("Checking TexSubImage2D: a set of inputs that are valid in GL but invalid in GLES2");
219
220 testCases =
221 [ {target: gl.TEXTURE_2D,
222 format: 0x1903, // GL_RED
223 type: gl.UNSIGNED_BYTE,
224 expectedError: gl.INVALID_ENUM},
225 {target: gl.TEXTURE_2D,
226 format: gl.RGBA,
227 type: gl.BYTE,
228 expectedError: gl.INVALID_ENUM},
229 {target: gl.TEXTURE_2D,
230 format: gl.RGBA,
231 type: gl.UNSIGNED_BYTE,
232 expectedError: gl.NO_ERROR} ];
233
234 for (var ii = 0; ii < testCases.length; ++ii)
235 testTexSubImage2D(testCases[ii]);
236
237 debug("");
238 debug("Checking TexParameter: a set of inputs that are valid in GL but invalid i n GLES2");
239
240 testCases =
241 [ {target: 0x0DE0, // GL_TEXTURE_1D
242 pname: gl.TEXTURE_WRAP_T,
243 param: gl.REPEAT,
244 expectedError: gl.INVALID_ENUM},
245 {target: gl.TEXTURE_2D,
246 pname: 0x813A, // GL_TEXTURE_MIN_LOD
247 param: 0,
248 expectedError: gl.INVALID_ENUM},
249 {target: gl.TEXTURE_2D,
250 pname: gl.TEXTURE_WRAP_T,
251 param: 0x2900, // GL_CLAMP
252 expectedError: gl.INVALID_ENUM},
253 {target: gl.TEXTURE_2D,
254 pname: gl.TEXTURE_WRAP_T,
255 param: gl.REPEAT,
256 expectedError: gl.NO_ERROR} ];
257
258 for (var ii = 0; ii < testCases.length; ++ii)
259 testTexParameter(testCases[ii]);
260
261 debug("");
262 debug("Checking GetTexParameter: a set of inputs that are valid in GL but invali d in GLES2");
263
264 testCases =
265 [ {target: 0x0DE0, // GL_TEXTURE_1D
266 pname: gl.TEXTURE_WRAP_T,
267 expectedError: gl.INVALID_ENUM},
268 {target: gl.TEXTURE_2D,
269 pname: 0x813A, // GL_TEXTURE_MIN_LOD
270 expectedError: gl.INVALID_ENUM},
271 {target: gl.TEXTURE_2D,
272 pname: gl.TEXTURE_WRAP_T,
273 expectedError: gl.NO_ERROR} ];
274
275 for (var ii = 0; ii < testCases.length; ++ii)
276 testGetTexParameter(testCases[ii]);
277
278 debug("");
279 debug("Checking CopyTexImage2D: a set of inputs that are valid in GL but invalid in GLES2");
280
281 var colorBuffer = null;
282 var fbo = null;
283
284 shouldBeNonNull("fbo = gl.createFramebuffer()");
285 gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);
286 shouldBeNonNull("colorBuffer = gl.createRenderbuffer()");
287 gl.bindRenderbuffer(gl.RENDERBUFFER, colorBuffer);
288 gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER , colorBuffer);
289 glErrorShouldBe(gl, gl.NO_ERROR);
290
291 testCases =
292 [ {target: gl.TEXTURE_2D,
293 colorBufferFormat: gl.RGB565,
294 internalFormat: 0x8054, // GL_RGB16
295 border: 0,
296 expectedError: gl.INVALID_ENUM},
297 {target: gl.TEXTURE_2D,
298 colorBufferFormat: gl.RGB565,
299 internalFormat: gl.RGBA,
300 border: 1,
301 expectedError: gl.INVALID_VALUE},
302 {target: gl.TEXTURE_2D,
303 colorBufferFormat: gl.RGB565,
304 internalFormat: gl.RGBA,
305 border: 0,
306 expectedError: gl.INVALID_OPERATION},
307 {target: gl.TEXTURE_2D,
308 colorBufferFormat: gl.RGB565,
309 internalFormat: gl.RGB,
310 border: 0,
311 expectedError: gl.NO_ERROR} ];
312
313 for (var ii = 0; ii < testCases.length; ++ii)
314 testCopyTexImage2D(testCases[ii]);
315
316 debug("");
317 debug("Checking CopyTexSubImage2D: a set of inputs that are valid in GL but inva lid in GLES2");
318
319 testCases =
320 [ {target: gl.TEXTURE_2D,
321 colorBufferFormat: gl.RGB5_A1,
322 internalFormat: gl.RGBA,
323 expectedError: gl.NO_ERROR},
324 {target: gl.TEXTURE_2D,
325 colorBufferFormat: gl.RGB565,
326 internalFormat: gl.RGBA,
327 expectedError: gl.INVALID_OPERATION} ];
328
329 for (var ii = 0; ii < testCases.length; ++ii)
330 testCopyTexSubImage2D(testCases[ii]);
331
332 debug("");
333 debug("Checking CopyTex{Sub}Image2D: copy from WebGL internal framebuffer");
334
335 testCases =
336 [ {contextAlpha: true,
337 internalFormat: gl.RGBA,
338 subImage: false,
339 expectedError: gl.NO_ERROR},
340 {contextAlpha: false,
341 internalFormat: gl.RGBA,
342 subImage: false,
343 expectedError: gl.INVALID_OPERATION},
344 {contextAlpha: true,
345 internalFormat: gl.RGBA,
346 subImage: true,
347 expectedError: gl.NO_ERROR},
348 {contextAlpha: false,
349 internalFormat: gl.RGBA,
350 subImage: true,
351 expectedError: gl.INVALID_OPERATION} ];
352
353 for (var ii = 0; ii < testCases.length; ++ii)
354 testCopyFromInternalFBO(testCases[ii]);
355
356 successfullyParsed = true;
357 </script>
358
359 <script src="../../resources/js-test-post.js"></script>
360 </body>
361 </html>
OLDNEW
« no previous file with comments | « conformance/textures/tex-image-with-invalid-data.html ('k') | conformance/textures/tex-sub-image-2d.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698