query-uniform-blocks-after-shader-detach.html (2328B)
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 Uniform Buffers 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 <script id="vshader" type="x-shader/x-vertex">#version 300 es 16 17 in vec4 position; 18 19 uniform localInputs 20 { 21 mat4 projectionModelViewMatrix; 22 }; 23 24 void main () 25 { 26 gl_Position = projectionModelViewMatrix * position; 27 } 28 </script> 29 <script id="fshader" type="x-shader/x-fragment">#version 300 es 30 31 out lowp vec4 resultColor; 32 33 void main() 34 { 35 resultColor = vec4(0,1,0,1); 36 } 37 </script> 38 </head> 39 <body> 40 <div id="description"></div> 41 <canvas id="canvas" style="width: 50px; height: 50px;"> </canvas> 42 <div id="console"></div> 43 <script> 44 // Adopted from the test case provided in crbug.com/735784 45 "use strict"; 46 description("This tests UBO block lookups still work after detaching shaders"); 47 48 debug(""); 49 50 var wtu = WebGLTestUtils; 51 var canvas = document.getElementById("canvas"); 52 var gl = wtu.create3DContext(canvas, null, 2); 53 54 function runTest(gl) { 55 var program = wtu.loadProgramFromScript(gl, "vshader", "fshader"); 56 if (!program) { 57 testFailed("Loading program failed"); 58 return; 59 } 60 61 var shaders = gl.getAttachedShaders(program); 62 if (!shaders || shaders.length != 2) { 63 testFailed("getAttachedShaders failed"); 64 return; 65 } 66 gl.detachShader (program, shaders[0]); 67 gl.detachShader (program, shaders[1]); 68 69 wtu.glErrorShouldBe(gl, gl.NO_ERROR, "No GL error from set up"); 70 71 var index = gl.getUniformBlockIndex(program, "localInputs"); 72 wtu.glErrorShouldBe(gl, gl.NO_ERROR, "No GL error from getUniformBlockIndex"); 73 if (index == gl.INVALID_INDEX) { 74 testFailed("getUniformBlockIndex returns INVALID_INDEX"); 75 } else { 76 testPassed("getUniformBlockIndex returns valid index"); 77 } 78 } 79 80 if (!gl) { 81 testFailed("WebGL context does not exist"); 82 } else { 83 testPassed("WebGL context exists"); 84 runTest(gl); 85 } 86 87 debug(""); 88 var successfullyParsed = true; 89 </script> 90 <script src="../../js/js-test-post.js"></script> 91 92 </body> 93 </html>