gl-get-calls.html (9451B)
1 <!-- 2 Copyright (c) 2019 The Khronos Group Inc. 3 Use of this source code is governed by an MIT-style license that can be 4 found in the LICENSE.txt file. 5 --> 6 7 <!DOCTYPE html> 8 <html> 9 <head> 10 <meta charset="utf-8"> 11 <title>WebGL gl calls Conformance Tests</title> 12 <link rel="stylesheet" href="../../resources/js-test-style.css"/> 13 <script src="../../js/js-test-pre.js"></script> 14 <script src="../../js/webgl-test-utils.js"></script> 15 </head> 16 <body> 17 <div id="description"></div> 18 <div id="console"></div> 19 <canvas id="canvas" width="2" height="2"> </canvas> 20 <script> 21 "use strict"; 22 description("This test ensures getParameter is working correct with WebGL 2 pnames"); 23 24 debug(""); 25 debug("Canvas.getContext"); 26 27 var minimumRequiredStencilMask = 0; 28 var wtu = WebGLTestUtils; 29 var context = wtu.create3DContext("canvas", null, 2); 30 if (!context) 31 testFailed("context does not exist"); 32 else { 33 testPassed("context exists"); 34 35 debug(""); 36 debug("Context contains getError"); 37 if ("getError" in context) 38 testPassed("context contains getError"); 39 else 40 testFailed("context does not contains getError"); 41 42 debug(""); 43 debug("Check default values"); 44 45 shouldBe('context.getParameter(context.COPY_READ_BUFFER_BINDING)', 'null'); 46 shouldBe('context.getParameter(context.COPY_WRITE_BUFFER_BINDING)', 'null'); 47 shouldBe('context.getParameter(context.DRAW_BUFFER0)', 'context.BACK'); 48 shouldBe('context.getParameter(context.DRAW_FRAMEBUFFER_BINDING)', 'null'); 49 shouldBe('context.getParameter(context.FRAGMENT_SHADER_DERIVATIVE_HINT)', 'context.DONT_CARE'); 50 shouldBe('context.getParameter(context.PACK_ROW_LENGTH)', '0'); 51 shouldBe('context.getParameter(context.PACK_SKIP_PIXELS)', '0'); 52 shouldBe('context.getParameter(context.PACK_SKIP_ROWS)', '0'); 53 shouldBe('context.getParameter(context.PIXEL_PACK_BUFFER_BINDING)', 'null'); 54 55 shouldBe('context.getParameter(context.PIXEL_UNPACK_BUFFER_BINDING)', 'null'); 56 shouldBe('context.getParameter(context.RASTERIZER_DISCARD)', 'false'); 57 shouldBe('context.getParameter(context.READ_BUFFER)', 'context.BACK'); 58 shouldBe('context.getParameter(context.READ_FRAMEBUFFER_BINDING)', 'null'); 59 shouldBe('context.getParameter(context.SAMPLE_ALPHA_TO_COVERAGE)', 'false'); 60 shouldBe('context.getParameter(context.SAMPLE_COVERAGE)', 'false'); 61 shouldBe('context.getParameter(context.SAMPLER_BINDING)', 'null'); 62 shouldBe('context.getParameter(context.TEXTURE_BINDING_2D_ARRAY)', 'null'); 63 shouldBe('context.getParameter(context.TEXTURE_BINDING_3D)', 'null'); 64 shouldBe('context.getParameter(context.TRANSFORM_FEEDBACK_ACTIVE)', 'false'); 65 shouldBe('context.getParameter(context.TRANSFORM_FEEDBACK_BINDING)', 'null'); 66 shouldBe('context.getParameter(context.TRANSFORM_FEEDBACK_BUFFER_BINDING)', 'null'); 67 shouldBe('context.getParameter(context.TRANSFORM_FEEDBACK_PAUSED)', 'false'); 68 shouldBe('context.getParameter(context.UNIFORM_BUFFER_BINDING)', 'null'); 69 70 shouldBe('context.getParameter(context.UNPACK_IMAGE_HEIGHT)', '0'); 71 shouldBe('context.getParameter(context.UNPACK_ROW_LENGTH)', '0'); 72 shouldBe('context.getParameter(context.UNPACK_SKIP_IMAGES)', '0'); 73 shouldBe('context.getParameter(context.UNPACK_SKIP_PIXELS)', '0'); 74 shouldBe('context.getParameter(context.UNPACK_SKIP_ROWS)', '0'); 75 shouldBe('context.getParameter(context.VERTEX_ARRAY_BINDING)', 'null'); 76 77 debug(""); 78 debug("Check minimum values"); 79 80 shouldBeGreaterThanOrEqual('context.getParameter(context.MAX_3D_TEXTURE_SIZE)', '256'); 81 shouldBeType('context.getParameter(context.MAX_3D_TEXTURE_SIZE)', 'Number'); 82 83 shouldBeGreaterThanOrEqual('context.getParameter(context.MAX_ARRAY_TEXTURE_LAYERS)', '256'); 84 shouldBeType('context.getParameter(context.MAX_ARRAY_TEXTURE_LAYERS)', 'Number'); 85 86 shouldBeGreaterThanOrEqual('context.getParameter(context.MAX_CLIENT_WAIT_TIMEOUT_WEBGL)', '0'); 87 shouldBeType('context.getParameter(context.MAX_CLIENT_WAIT_TIMEOUT_WEBGL)', 'Number'); 88 89 shouldBeGreaterThanOrEqual('context.getParameter(context.MAX_COLOR_ATTACHMENTS)', '4'); 90 shouldBeType('context.getParameter(context.MAX_COLOR_ATTACHMENTS)', 'Number'); 91 92 shouldBeGreaterThanOrEqual('context.getParameter(context.MAX_COMBINED_UNIFORM_BLOCKS)', '24'); 93 shouldBeType('context.getParameter(context.MAX_COMBINED_UNIFORM_BLOCKS)', 'Number'); 94 95 shouldBeGreaterThanOrEqual('context.getParameter(context.MAX_DRAW_BUFFERS)', '4'); 96 shouldBeType('context.getParameter(context.MAX_DRAW_BUFFERS)', 'Number'); 97 98 shouldBeGreaterThanOrEqual('context.getParameter(context.MAX_ELEMENT_INDEX)', '16777215'); // 2^24 - 1 99 shouldBeType('context.getParameter(context.MAX_ELEMENT_INDEX)', 'Number'); 100 101 shouldBeType('context.getParameter(context.MAX_ELEMENTS_INDICES)', 'Number'); 102 shouldBeType('context.getParameter(context.MAX_ELEMENTS_VERTICES)', 'Number'); 103 104 shouldBeGreaterThanOrEqual('context.getParameter(context.MAX_FRAGMENT_INPUT_COMPONENTS)', '60'); 105 shouldBeType('context.getParameter(context.MAX_FRAGMENT_INPUT_COMPONENTS)', 'Number'); 106 107 shouldBeGreaterThanOrEqual('context.getParameter(context.MAX_FRAGMENT_UNIFORM_BLOCKS)', '12'); 108 shouldBeType('context.getParameter(context.MAX_FRAGMENT_INPUT_COMPONENTS)', 'Number'); 109 110 shouldBeGreaterThanOrEqual('context.getParameter(context.MAX_FRAGMENT_UNIFORM_COMPONENTS)', '896'); 111 shouldBeType('context.getParameter(context.MAX_FRAGMENT_UNIFORM_COMPONENTS)', 'Number'); 112 113 shouldBeGreaterThanOrEqual('context.getParameter(context.MAX_PROGRAM_TEXEL_OFFSET)', '7'); 114 shouldBeType('context.getParameter(context.MAX_PROGRAM_TEXEL_OFFSET)', 'Number'); 115 116 shouldBeGreaterThanOrEqual('context.getParameter(context.MAX_SAMPLES)', '4'); 117 shouldBeType('context.getParameter(context.MAX_PROGRAM_TEXEL_OFFSET)', 'Number'); 118 119 shouldBeGreaterThanOrEqual('context.getParameter(context.MAX_SERVER_WAIT_TIMEOUT)', '0'); 120 shouldBeType('context.getParameter(context.MAX_SERVER_WAIT_TIMEOUT)', 'Number'); 121 122 shouldBeGreaterThanOrEqual('context.getParameter(context.MAX_TEXTURE_LOD_BIAS)', '2.0'); 123 shouldBeType('context.getParameter(context.MAX_TEXTURE_LOD_BIAS)', 'Number'); 124 125 shouldBeGreaterThanOrEqual('context.getParameter(context.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS)', '64'); 126 shouldBeType('context.getParameter(context.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS)', 'Number'); 127 128 shouldBeGreaterThanOrEqual('context.getParameter(context.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS)', '4'); 129 shouldBeType('context.getParameter(context.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS)', 'Number'); 130 131 shouldBeGreaterThanOrEqual('context.getParameter(context.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS)', '4'); 132 shouldBeType('context.getParameter(context.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS)', 'Number'); 133 134 shouldBeGreaterThanOrEqual('context.getParameter(context.MAX_UNIFORM_BLOCK_SIZE)', '16384'); 135 shouldBeType('context.getParameter(context.MAX_UNIFORM_BLOCK_SIZE)', 'Number'); 136 137 shouldBeGreaterThanOrEqual('context.getParameter(context.MAX_UNIFORM_BUFFER_BINDINGS)', '24'); 138 shouldBeType('context.getParameter(context.MAX_UNIFORM_BUFFER_BINDINGS)', 'Number'); 139 140 shouldBeGreaterThanOrEqual('context.getParameter(context.MAX_VARYING_COMPONENTS)', '60'); 141 shouldBeType('context.getParameter(context.MAX_VARYING_COMPONENTS)', 'Number'); 142 143 shouldBeGreaterThanOrEqual('context.getParameter(context.MAX_VERTEX_OUTPUT_COMPONENTS)', '64'); 144 shouldBeType('context.getParameter(context.MAX_VERTEX_OUTPUT_COMPONENTS)', 'Number'); 145 146 shouldBeGreaterThanOrEqual('context.getParameter(context.MAX_VERTEX_UNIFORM_BLOCKS)', '12'); 147 shouldBeType('context.getParameter(context.MAX_VERTEX_UNIFORM_BLOCKS)', 'Number'); 148 149 shouldBeGreaterThanOrEqual('context.getParameter(context.MAX_VERTEX_UNIFORM_COMPONENTS)', '1024'); 150 shouldBeType('context.getParameter(context.MAX_VERTEX_UNIFORM_COMPONENTS)', 'Number'); 151 152 shouldBeLessThanOrEqual('context.getParameter(context.MIN_PROGRAM_TEXEL_OFFSET)', '-8'); 153 shouldBeType('context.getParameter(context.MIN_PROGRAM_TEXEL_OFFSET)', 'Number'); 154 155 shouldBeGreaterThanOrEqual('context.getParameter(context.UNIFORM_BUFFER_OFFSET_ALIGNMENT)', '1'); 156 shouldBeType('context.getParameter(context.UNIFORM_BUFFER_OFFSET_ALIGNMENT)', 'Number'); 157 158 var minCombinedFragmentUniformComponents = context.getParameter(context.MAX_FRAGMENT_UNIFORM_BLOCKS) * context.getParameter(context.MAX_UNIFORM_BLOCK_SIZE) / 4 + context.getParameter(context.MAX_FRAGMENT_UNIFORM_COMPONENTS); 159 var minCombinedVertexUniformComponents = context.getParameter(context.MAX_VERTEX_UNIFORM_BLOCKS) * context.getParameter(context.MAX_UNIFORM_BLOCK_SIZE) / 4 + context.getParameter(context.MAX_VERTEX_UNIFORM_COMPONENTS); 160 161 shouldBeGreaterThanOrEqual('context.getParameter(context.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS)', minCombinedFragmentUniformComponents + ''); 162 shouldBeType('context.getParameter(context.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS)', 'Number'); 163 164 shouldBeGreaterThanOrEqual('context.getParameter(context.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS)', minCombinedVertexUniformComponents + ''); 165 shouldBeType('context.getParameter(context.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS)', 'Number'); 166 167 shouldBe('context.getError()', 'context.NO_ERROR'); 168 } 169 170 debug(""); 171 var successfullyParsed = true; 172 173 </script> 174 <script src="../../js/js-test-post.js"></script> 175 176 </body> 177 </html>