5 <title>WebGL GLES2 difference test.
</title>
6 <script src=
"../../../resources/js-test.js"></script>
7 <script src=
"resources/webgl-test.js"></script>
8 <script src=
"resources/webgl-test-utils.js"></script>
11 <div id=
"description"></div>
12 <div id=
"console"></div>
16 window
.internals
.settings
.setWebGLErrorsToConsoleEnabled(false);
18 var wtu
= WebGLTestUtils
;
19 description("Tests the a few differences between WebGL and GLES2");
21 var gl
= wtu
.create3DContext();
22 var program
= wtu
.loadStandardProgram(gl
);
23 gl
.useProgram(program
);
24 var vertexObject
= gl
.createBuffer();
25 gl
.bindBuffer(gl
.ARRAY_BUFFER
, vertexObject
);
26 gl
.enableVertexAttribArray(0);
27 glErrorShouldBe(gl
, gl
.NO_ERROR
, "Setup should succeed");
30 debug("Verify that constant color and constant alpha cannot be used together as source and destination factors in the blend function");
31 shouldGenerateGLError(gl
, gl
.INVALID_OPERATION
, "gl.blendFunc(gl.CONSTANT_COLOR, gl.CONSTANT_ALPHA)");
32 shouldGenerateGLError(gl
, gl
.INVALID_OPERATION
, "gl.blendFunc(gl.ONE_MINUS_CONSTANT_COLOR, gl.CONSTANT_ALPHA)");
33 shouldGenerateGLError(gl
, gl
.INVALID_OPERATION
, "gl.blendFunc(gl.CONSTANT_COLOR, gl.ONE_MINUS_CONSTANT_ALPHA)");
34 shouldGenerateGLError(gl
, gl
.INVALID_OPERATION
, "gl.blendFunc(gl.ONE_MINUS_CONSTANT_COLOR, gl.ONE_MINUS_CONSTANT_ALPHA)");
35 shouldGenerateGLError(gl
, gl
.INVALID_OPERATION
, "gl.blendFunc(gl.CONSTANT_ALPHA, gl.CONSTANT_COLOR)");
36 shouldGenerateGLError(gl
, gl
.INVALID_OPERATION
, "gl.blendFunc(gl.CONSTANT_ALPHA, gl.ONE_MINUS_CONSTANT_COLOR)");
37 shouldGenerateGLError(gl
, gl
.INVALID_OPERATION
, "gl.blendFunc(gl.ONE_MINUS_CONSTANT_ALPHA, gl.CONSTANT_COLOR)");
38 shouldGenerateGLError(gl
, gl
.INVALID_OPERATION
, "gl.blendFunc(gl.ONE_MINUS_CONSTANT_ALPHA, gl.ONE_MINUS_CONSTANT_COLOR)");
40 shouldGenerateGLError(gl
, gl
.INVALID_OPERATION
, "gl.blendFuncSeparate(gl.CONSTANT_COLOR, gl.CONSTANT_ALPHA, gl.ONE, gl.ZERO)");
41 shouldGenerateGLError(gl
, gl
.INVALID_OPERATION
, "gl.blendFuncSeparate(gl.ONE_MINUS_CONSTANT_COLOR, gl.CONSTANT_ALPHA, gl.ONE, gl.ZERO)");
42 shouldGenerateGLError(gl
, gl
.INVALID_OPERATION
, "gl.blendFuncSeparate(gl.CONSTANT_COLOR, gl.ONE_MINUS_CONSTANT_ALPHA, gl.ONE, gl.ZERO)");
43 shouldGenerateGLError(gl
, gl
.INVALID_OPERATION
, "gl.blendFuncSeparate(gl.ONE_MINUS_CONSTANT_COLOR, gl.ONE_MINUS_CONSTANT_ALPHA, gl.ONE, gl.ZERO)");
44 shouldGenerateGLError(gl
, gl
.INVALID_OPERATION
, "gl.blendFuncSeparate(gl.CONSTANT_ALPHA, gl.CONSTANT_COLOR, gl.ONE, gl.ZERO)");
45 shouldGenerateGLError(gl
, gl
.INVALID_OPERATION
, "gl.blendFuncSeparate(gl.CONSTANT_ALPHA, gl.ONE_MINUS_CONSTANT_COLOR, gl.ONE, gl.ZERO)");
46 shouldGenerateGLError(gl
, gl
.INVALID_OPERATION
, "gl.blendFuncSeparate(gl.ONE_MINUS_CONSTANT_ALPHA, gl.CONSTANT_COLOR, gl.ONE, gl.ZERO)");
47 shouldGenerateGLError(gl
, gl
.INVALID_OPERATION
, "gl.blendFuncSeparate(gl.ONE_MINUS_CONSTANT_ALPHA, gl.ONE_MINUS_CONSTANT_COLOR, gl.ONE, gl.ZERO)");
50 debug("Verify that in depthRange zNear <= zFar");
51 shouldGenerateGLError(gl
, gl
.INVALID_OPERATION
, "gl.depthRange(20, 10)");
54 debug("Verify that front/back settings should be the same for stenclMask and stencilFunc");
55 shouldGenerateGLError(gl
, gl
.NO_ERROR
, "gl.stencilMask(255)");
56 shouldGenerateGLError(gl
, gl
.NO_ERROR
, "gl.drawArrays(gl.TRIANGLES, 0, 0)");
57 shouldGenerateGLError(gl
, gl
.NO_ERROR
, "gl.stencilMaskSeparate(gl.FRONT, 1)");
58 shouldGenerateGLError(gl
, gl
.INVALID_OPERATION
, "gl.drawArrays(gl.TRIANGLES, 0, 0)");
59 shouldGenerateGLError(gl
, gl
.NO_ERROR
, "gl.stencilMaskSeparate(gl.BACK, 1)");
60 shouldGenerateGLError(gl
, gl
.NO_ERROR
, "gl.drawArrays(gl.TRIANGLES, 0, 0)");
62 shouldGenerateGLError(gl
, gl
.NO_ERROR
, "gl.stencilFunc(gl.ALWAYS, 0, 255)");
63 shouldGenerateGLError(gl
, gl
.NO_ERROR
, "gl.drawArrays(gl.TRIANGLES, 0, 0)");
64 shouldGenerateGLError(gl
, gl
.NO_ERROR
, "gl.stencilFuncSeparate(gl.BACK, gl.ALWAYS, 1, 255)");
65 shouldGenerateGLError(gl
, gl
.INVALID_OPERATION
, "gl.drawArrays(gl.TRIANGLES, 0, 0)");
66 shouldGenerateGLError(gl
, gl
.NO_ERROR
, "gl.stencilFuncSeparate(gl.FRONT, gl.ALWAYS, 1, 255)");
67 shouldGenerateGLError(gl
, gl
.NO_ERROR
, "gl.drawArrays(gl.TRIANGLES, 0, 0)");
68 shouldGenerateGLError(gl
, gl
.NO_ERROR
, "gl.stencilFuncSeparate(gl.BACK, gl.ALWAYS, 1, 1)");
69 shouldGenerateGLError(gl
, gl
.INVALID_OPERATION
, "gl.drawArrays(gl.TRIANGLES, 0, 0)");
70 shouldGenerateGLError(gl
, gl
.NO_ERROR
, "gl.stencilFuncSeparate(gl.FRONT, gl.ALWAYS, 1, 1)");
71 shouldGenerateGLError(gl
, gl
.NO_ERROR
, "gl.drawArrays(gl.TRIANGLES, 0, 0)");
74 debug("Verify that *LENGTH are undefined");
75 shouldBeUndefined(gl
.INFO_LOG_LENGTH
);
76 shouldBeUndefined(gl
.SHADER_SOURCE_LENGTH
);
77 shouldBeUndefined(gl
.ACTIVE_UNIFORM_MAX_LENGTH
);
78 shouldBeUndefined(gl
.ACTIVE_ATTRIB_MAX_LENGTH
);
81 debug("Verify that UNPACK_COLORSPACE_CONVERSION_WEBGL is supported");
82 shouldBe("gl.getParameter(gl.UNPACK_COLORSPACE_CONVERSION_WEBGL)", "gl.BROWSER_DEFAULT_WEBGL");
83 gl
.pixelStorei(gl
.UNPACK_COLORSPACE_CONVERSION_WEBGL
, gl
.NONE
);
84 shouldBe("gl.getParameter(gl.UNPACK_COLORSPACE_CONVERSION_WEBGL)", "gl.NONE");
85 glErrorShouldBe(gl
, gl
.NO_ERROR
, "set/get UNPACK_COLORSPACE_CONVERSION_WEBGL should generate no error");
88 debug("Verify that drawingBufferWidth and drawingBufferHeights are implemented");
89 shouldBeTrue("gl.drawingBufferWidth >= 0 && gl.drawingBufferHeight >= 0");
92 debug("Verify that bindAttribLocation rejects names start with webgl_ or _webgl_");
93 shouldGenerateGLError(gl
, gl
.INVALID_OPERATION
, "gl.bindAttribLocation(program, 0, 'webgl_a')");
94 shouldGenerateGLError(gl
, gl
.INVALID_OPERATION
, "gl.bindAttribLocation(program, 0, '_webgl_a')");
96 successfullyParsed
= true;