Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / third_party / webgl / src / sdk / tests / conformance / state / gl-get-calls.html
1 <!--
2
3 /*
4 ** Copyright (c) 2012 The Khronos Group Inc.
5 **
6 ** Permission is hereby granted, free of charge, to any person obtaining a
7 ** copy of this software and/or associated documentation files (the
8 ** "Materials"), to deal in the Materials without restriction, including
9 ** without limitation the rights to use, copy, modify, merge, publish,
10 ** distribute, sublicense, and/or sell copies of the Materials, and to
11 ** permit persons to whom the Materials are furnished to do so, subject to
12 ** the following conditions:
13 **
14 ** The above copyright notice and this permission notice shall be included
15 ** in all copies or substantial portions of the Materials.
16 **
17 ** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18 ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19 ** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
20 ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
21 ** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
22 ** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
23 ** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
24 */
25
26 -->
27
28 <!DOCTYPE html>
29 <html>
30 <head>
31 <meta charset="utf-8">
32 <title>WebGL gl calls Conformance Tests</title>
33 <link rel="stylesheet" href="../../resources/js-test-style.css"/>
34 <script src="../../resources/js-test-pre.js"></script>
35 <script src="../resources/webgl-test-utils.js"></script>
36 </head>
37 <body>
38 <div id="description"></div>
39 <div id="console"></div>
40 <canvas id="canvas" width="2" height="2"> </canvas>
41 <script>
42 "use strict";
43 description("This test ensures basic functionality of the underlying graphics library");
44
45 debug("");
46 debug("Canvas.getContext");
47
48 var minimumRequiredStencilMask = 0;
49 var wtu = WebGLTestUtils;
50 var context = wtu.create3DContext("canvas");
51 if (!context)
52     testFailed("context does not exist");
53 else {
54     testPassed("context exists");
55
56     debug("");
57     debug("Context contains getError");
58     if ("getError" in context)
59       testPassed("context contains getError");
60     else
61       testFailed("context does not contains getError");
62
63     debug("");
64     debug("Check default values");
65     shouldBe('context.getParameter(context.ACTIVE_TEXTURE)', 'context.TEXTURE0');
66     shouldBe('(context.getParameter(context.ALIASED_LINE_WIDTH_RANGE)[0] <= 1) && (context.getParameter(context.ALIASED_LINE_WIDTH_RANGE)[0] > 0) && (context.getParameter(context.ALIASED_LINE_WIDTH_RANGE)[1] >= 1)', 'true');
67     shouldBe('(context.getParameter(context.ALIASED_POINT_SIZE_RANGE)[0] <= 1) && (context.getParameter(context.ALIASED_POINT_SIZE_RANGE)[0] > 0) && (context.getParameter(context.ALIASED_POINT_SIZE_RANGE)[1] >= 1)', 'true');
68     shouldBeType('context.getParameter(context.ALIASED_LINE_WIDTH_RANGE)', 'Float32Array');
69     shouldBeType('context.getParameter(context.ALIASED_POINT_SIZE_RANGE)', 'Float32Array');
70     shouldBe('context.getParameter(context.ARRAY_BUFFER_BINDING)', 'null');
71     shouldBe('context.getParameter(context.BLEND)', 'false');
72     shouldBe('context.getParameter(context.BLEND_COLOR)', '[0, 0, 0, 0]');
73     shouldBeType('context.getParameter(context.BLEND_COLOR)', 'Float32Array');
74     shouldBe('context.getParameter(context.BLEND_DST_ALPHA)', '0');
75     shouldBe('context.getParameter(context.BLEND_DST_RGB)', '0');
76     shouldBe('context.getParameter(context.BLEND_EQUATION_ALPHA)', 'context.FUNC_ADD');
77     shouldBe('context.getParameter(context.BLEND_EQUATION_RGB)', 'context.FUNC_ADD');
78     shouldBe('context.getParameter(context.BLEND_SRC_ALPHA)', '1');
79     shouldBe('context.getParameter(context.BLEND_SRC_RGB)', '1');
80     shouldBe('context.getParameter(context.COLOR_CLEAR_VALUE)', '[0, 0, 0, 0]');
81     shouldBeType('context.getParameter(context.COLOR_CLEAR_VALUE)', 'Float32Array');
82     shouldBe('context.getParameter(context.COLOR_WRITEMASK)', '[true, true, true, true]');
83     shouldBeType('context.getParameter(context.COMPRESSED_TEXTURE_FORMATS)', 'Uint32Array');
84     shouldBe('context.getParameter(context.CULL_FACE)', 'false');
85     shouldBe('context.getParameter(context.CULL_FACE_MODE)', 'context.BACK');
86     shouldBe('context.getParameter(context.CURRENT_PROGRAM)', 'null');
87     shouldBe('context.getParameter(context.DEPTH_CLEAR_VALUE)', '1');
88     shouldBe('context.getParameter(context.DEPTH_FUNC)', 'context.LESS');
89     shouldBe('context.getParameter(context.DEPTH_RANGE)', '[0, 1]');
90     shouldBeType('context.getParameter(context.DEPTH_RANGE)', 'Float32Array');
91     shouldBe('context.getParameter(context.DEPTH_TEST)', 'false');
92     shouldBe('context.getParameter(context.DEPTH_WRITEMASK)', 'true');
93     shouldBe('context.getParameter(context.DITHER)', 'true');
94     shouldBe('context.getParameter(context.ELEMENT_ARRAY_BUFFER_BINDING)', 'null');
95     shouldBe('context.getParameter(context.FRONT_FACE)', 'context.CCW');
96     shouldBe('context.getParameter(context.GENERATE_MIPMAP_HINT)', 'context.DONT_CARE');
97     shouldBe('context.getParameter(context.LINE_WIDTH)', '1');
98     shouldBe('context.getParameter(context.PACK_ALIGNMENT)', '4');
99     shouldBe('context.getParameter(context.POLYGON_OFFSET_FACTOR)', '0');
100     shouldBe('context.getParameter(context.POLYGON_OFFSET_FILL)', 'false');
101     shouldBe('context.getParameter(context.POLYGON_OFFSET_UNITS)', '0');
102     shouldBe('context.getParameter(context.RENDERBUFFER_BINDING)', 'null');
103     shouldBe('context.getParameter(context.SAMPLE_COVERAGE_INVERT)', 'false');
104     shouldBe('context.getParameter(context.SAMPLE_COVERAGE_VALUE)', '1');
105     shouldBe('context.getParameter(context.SCISSOR_BOX)[0]', '0');
106     shouldBe('context.getParameter(context.SCISSOR_BOX)[1]', '0');
107     shouldBe('context.getParameter(context.SCISSOR_BOX)[2]', 'context.getParameter(context.VIEWPORT)[2]');
108     shouldBe('context.getParameter(context.SCISSOR_BOX)[3]', 'context.getParameter(context.VIEWPORT)[3]');
109     shouldBeType('context.getParameter(context.SCISSOR_BOX)', Int32Array);
110     shouldBe('context.getParameter(context.SCISSOR_TEST)', 'false');
111     shouldBe('context.getParameter(context.STENCIL_BACK_FAIL)', 'context.KEEP');
112     shouldBe('context.getParameter(context.STENCIL_BACK_FUNC)', 'context.ALWAYS');
113     shouldBe('context.getParameter(context.STENCIL_BACK_PASS_DEPTH_FAIL)', 'context.KEEP');
114     shouldBe('context.getParameter(context.STENCIL_BACK_PASS_DEPTH_PASS)', 'context.KEEP');
115     shouldBe('context.getParameter(context.STENCIL_BACK_REF)', '0');
116
117     // WebGL 1.0.2 - 5.14.3 types / ES 2.0.25 - 6.2 State tables - 6.18 page 152
118     shouldBeType('context.getParameter(context.SUBPIXEL_BITS)', 'Number');
119     shouldBeGreaterThanOrEqual('context.getParameter(context.SUBPIXEL_BITS)', '4');
120     
121     shouldBeType('context.getParameter(context.SAMPLE_BUFFERS)', 'Number');
122     shouldBeGreaterThanOrEqual('context.getParameter(context.SAMPLE_BUFFERS)', '0');
123     
124     shouldBeType('context.getParameter(context.SAMPLES)', 'Number');
125     shouldBeGreaterThanOrEqual('context.getParameter(context.SAMPLES)', '0');
126     
127     shouldBeType('context.getParameter(context.DEPTH_BITS)', 'Number');
128     shouldBeGreaterThanOrEqual('context.getParameter(context.DEPTH_BITS)', '0');
129     shouldBeType('context.getParameter(context.RED_BITS)', 'Number');
130     shouldBeGreaterThanOrEqual('context.getParameter(context.RED_BITS)', '0');
131     shouldBeType('context.getParameter(context.GREEN_BITS)', 'Number');
132     shouldBeGreaterThanOrEqual('context.getParameter(context.GREEN_BITS)', '0');
133     shouldBeType('context.getParameter(context.BLUE_BITS)', 'Number');
134     shouldBeGreaterThanOrEqual('context.getParameter(context.BLUE_BITS)', '0');
135     shouldBeType('context.getParameter(context.ALPHA_BITS)', 'Number');
136     shouldBeGreaterThanOrEqual('context.getParameter(context.ALPHA_BITS)', '0');
137     shouldBeType('context.getParameter(context.STENCIL_BITS)', 'Number');
138     
139     var stencilBits = context.getParameter(context.STENCIL_BITS);
140     minimumRequiredStencilMask = (1 << stencilBits) - 1;
141
142     shouldBe('context.getParameter(context.STENCIL_BACK_VALUE_MASK) & minimumRequiredStencilMask', 'minimumRequiredStencilMask');
143     shouldBe('context.getParameter(context.STENCIL_BACK_WRITEMASK) & minimumRequiredStencilMask', 'minimumRequiredStencilMask');
144
145     // If EXT_packed_depth_stencil is supported, STENCIL_BITS > 0; otherwise, STENCIL_BITS == 0.
146     shouldBe('context.getParameter(context.STENCIL_BITS) >= 0', 'true');
147     shouldBe('context.getParameter(context.STENCIL_CLEAR_VALUE)', '0');
148     shouldBe('context.getParameter(context.STENCIL_FAIL)', 'context.KEEP');
149     shouldBe('context.getParameter(context.STENCIL_FUNC)', 'context.ALWAYS');
150     shouldBe('context.getParameter(context.STENCIL_PASS_DEPTH_FAIL)', 'context.KEEP');
151     shouldBe('context.getParameter(context.STENCIL_PASS_DEPTH_PASS)', 'context.KEEP');
152     shouldBe('context.getParameter(context.STENCIL_REF)', '0');
153     shouldBe('context.getParameter(context.STENCIL_TEST)', 'false');
154
155     shouldBe('context.getParameter(context.STENCIL_VALUE_MASK) & minimumRequiredStencilMask', 'minimumRequiredStencilMask');
156     shouldBe('context.getParameter(context.STENCIL_WRITEMASK) & minimumRequiredStencilMask', 'minimumRequiredStencilMask');
157
158     shouldBe('context.getParameter(context.TEXTURE_BINDING_2D)', 'null');
159     shouldBe('context.getParameter(context.TEXTURE_BINDING_CUBE_MAP)', 'null');
160     shouldBe('context.getParameter(context.UNPACK_ALIGNMENT)', '4');
161     shouldBe('context.getParameter(context.UNPACK_FLIP_Y_WEBGL)', 'false');
162     shouldBe('context.getParameter(context.UNPACK_PREMULTIPLY_ALPHA_WEBGL)', 'false');
163     shouldBe('context.getParameter(context.VIEWPORT)', '[0, 0, 2, 2]');
164     shouldBeType('context.getParameter(context.VIEWPORT)', 'Int32Array');
165
166     shouldBeGreaterThanOrEqual('context.getParameter(context.MAX_COMBINED_TEXTURE_IMAGE_UNITS)', '8');
167     shouldBeGreaterThanOrEqual('context.getParameter(context.MAX_CUBE_MAP_TEXTURE_SIZE)', '16');
168     shouldBeGreaterThanOrEqual('context.getParameter(context.MAX_FRAGMENT_UNIFORM_VECTORS)', '16');
169     shouldBeGreaterThanOrEqual('context.getParameter(context.MAX_RENDERBUFFER_SIZE)', '1');
170     shouldBeGreaterThanOrEqual('context.getParameter(context.MAX_TEXTURE_IMAGE_UNITS)', '8');
171     shouldBeGreaterThanOrEqual('context.getParameter(context.MAX_TEXTURE_SIZE)', '64');
172     shouldBeGreaterThanOrEqual('context.getParameter(context.MAX_VARYING_VECTORS)', '8');
173     shouldBeGreaterThanOrEqual('context.getParameter(context.MAX_VERTEX_ATTRIBS)', '8');
174     shouldBeGreaterThanOrEqual('context.getParameter(context.MAX_VERTEX_TEXTURE_IMAGE_UNITS)', '0');
175     shouldBeGreaterThanOrEqual('context.getParameter(context.MAX_VERTEX_UNIFORM_VECTORS)', '128');
176     // Note: This requirement should be removed from the spec IMO. Many impelementations
177     // will be based on FBOs and FBOs might have a restriction smaller than the current screen size.
178     // especially if there are multiple screens.
179     shouldBeTrue('context.getParameter(context.MAX_VIEWPORT_DIMS)[0] >= window.screen.width');
180     shouldBeTrue('context.getParameter(context.MAX_VIEWPORT_DIMS)[1] >= window.screen.height');
181     shouldBeType('context.getParameter(context.MAX_VIEWPORT_DIMS)', 'Int32Array');
182
183     debug("");
184     debug("check texture values");
185     var maxTextures = context.getParameter(context.MAX_TEXTURE_IMAGE_UNITS);
186     for (var ii = 0; ii < maxTextures; ++ii) {
187       context.activeTexture(context.TEXTURE0 + ii);
188       debug("check texture unit: " + ii);
189       shouldBe('context.getParameter(context.TEXTURE_BINDING_2D)', 'null');
190       shouldBe('context.getParameter(context.TEXTURE_BINDING_CUBE_MAP)', 'null');
191     }
192
193     debug("");
194     debug("check attrib values");
195     var maxAttribs = context.getParameter(context.MAX_VERTEX_ATTRIBS);
196     for (var ii = 0; ii < maxAttribs; ++ii) {
197       debug("check attrib: " + ii);
198       shouldBe('context.getVertexAttrib(ii, context.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING)', 'null');
199       shouldBe('context.getVertexAttrib(ii, context.VERTEX_ATTRIB_ARRAY_ENABLED)', 'false');
200       shouldBe('context.getVertexAttrib(ii, context.VERTEX_ATTRIB_ARRAY_SIZE)', '4');
201       shouldBe('context.getVertexAttrib(ii, context.VERTEX_ATTRIB_ARRAY_STRIDE)', '0');
202       shouldBe('context.getVertexAttrib(ii, context.VERTEX_ATTRIB_ARRAY_TYPE)', 'context.FLOAT');
203       shouldBe('context.getVertexAttrib(ii, context.VERTEX_ATTRIB_ARRAY_NORMALIZED)', 'false');
204       shouldBe('context.getVertexAttrib(ii, context.CURRENT_VERTEX_ATTRIB)', '[0, 0, 0, 1]');
205       shouldBeType('context.getVertexAttrib(ii, context.CURRENT_VERTEX_ATTRIB)', 'Float32Array');
206       shouldBe('context.getVertexAttribOffset(ii, context.VERTEX_ATTRIB_ARRAY_POINTER)', '0');
207     }
208
209     shouldBe('context.getError()', 'context.NO_ERROR');
210 }
211
212 debug("");
213 var successfullyParsed = true;
214
215 </script>
216 <script src="../../resources/js-test-post.js"></script>
217
218 </body>
219 </html>