tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

bound-buffer-size-change-test.html (5415B)


      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 buffer size change test for bindBufferBase/bindBufferRange</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 <script>
     20 "use strict";
     21 description("WebGL buffer size change for bindings through bindBufferBase/bindBufferRange");
     22 
     23 // This test verifies the ES3 behavior, that the bound buffer range (offset, size) is not
     24 // limited by the actual buffer size, and the driver is responsible that no out-of-range
     25 // access may happen.
     26 
     27 var wtu = WebGLTestUtils;
     28 
     29 var gl = wtu.create3DContext(undefined, undefined, 2);
     30 
     31 debug("");
     32 debug("bindBufferBase with TRANSFORM_FEEDBACK_BUFFER target");
     33 var buffer1 = gl.createBuffer();
     34 gl.bindBufferBase(gl.TRANSFORM_FEEDBACK_BUFFER, 0, buffer1);
     35 wtu.glErrorShouldBe(gl, gl.NO_ERROR,
     36    "Calling bindBufferBase on a buffer where no storage is allocated should succeed.");
     37 shouldBe("gl.getParameter(gl.TRANSFORM_FEEDBACK_BUFFER_BINDING)", "buffer1");
     38 shouldBe("gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_BINDING, 0)", "buffer1");
     39 shouldBe("gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_SIZE, 0)", "0");
     40 shouldBe("gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_START, 0)", "0");
     41 
     42 gl.bufferData(gl.TRANSFORM_FEEDBACK_BUFFER, 4, gl.STATIC_DRAW);
     43 shouldBe("gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_BINDING, 0)", "buffer1");
     44 shouldBe("gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_SIZE, 0)", "0");
     45 shouldBe("gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_START, 0)", "0");
     46 
     47 wtu.glErrorShouldBe(gl, gl.NO_ERROR);
     48 
     49 debug("");
     50 debug("bindBufferBase with UNIFORM_BUFFER target");
     51 var buffer2 = gl.createBuffer();
     52 gl.bindBufferBase(gl.UNIFORM_BUFFER, 1, buffer2);
     53 wtu.glErrorShouldBe(gl, gl.NO_ERROR,
     54    "Calling bindBufferBase on a buffer where no storage is allocated should succeed.");
     55 shouldBe("gl.getParameter(gl.UNIFORM_BUFFER_BINDING)", "buffer2");
     56 shouldBe("gl.getIndexedParameter(gl.UNIFORM_BUFFER_BINDING, 1)", "buffer2");
     57 shouldBe("gl.getIndexedParameter(gl.UNIFORM_BUFFER_SIZE, 1)", "0");
     58 shouldBe("gl.getIndexedParameter(gl.UNIFORM_BUFFER_START, 1)", "0");
     59 
     60 gl.bufferData(gl.UNIFORM_BUFFER, 8, gl.STATIC_DRAW);
     61 shouldBe("gl.getIndexedParameter(gl.UNIFORM_BUFFER_BINDING, 1)", "buffer2");
     62 shouldBe("gl.getIndexedParameter(gl.UNIFORM_BUFFER_SIZE, 1)", "0");
     63 shouldBe("gl.getIndexedParameter(gl.UNIFORM_BUFFER_START, 1)", "0");
     64 
     65 wtu.glErrorShouldBe(gl, gl.NO_ERROR);
     66 
     67 debug("");
     68 debug("bindBufferRange with TRANSFORM_FEEDBACK_BUFFER target");
     69 var buffer3 = gl.createBuffer();
     70 gl.bindBufferRange(gl.TRANSFORM_FEEDBACK_BUFFER, 0, buffer3, 4, 8);
     71 wtu.glErrorShouldBe(gl, gl.NO_ERROR,
     72    "Calling bindBufferRange on a buffer where no storage is allocated should succeed.");
     73 shouldBe("gl.getParameter(gl.TRANSFORM_FEEDBACK_BUFFER_BINDING)", "buffer3");
     74 shouldBe("gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_BINDING, 0)", "buffer3");
     75 shouldBe("gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_SIZE, 0)", "8");
     76 shouldBe("gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_START, 0)", "4");
     77 
     78 gl.bufferData(gl.TRANSFORM_FEEDBACK_BUFFER, 4, gl.STATIC_DRAW);
     79 shouldBe("gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_BINDING, 0)", "buffer3");
     80 shouldBe("gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_SIZE, 0)", "8");
     81 shouldBe("gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_START, 0)", "4");
     82 
     83 gl.bufferData(gl.TRANSFORM_FEEDBACK_BUFFER, 12, gl.STATIC_DRAW);
     84 shouldBe("gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_BINDING, 0)", "buffer3");
     85 shouldBe("gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_SIZE, 0)", "8");
     86 shouldBe("gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_START, 0)", "4");
     87 
     88 wtu.glErrorShouldBe(gl, gl.NO_ERROR);
     89 
     90 debug("");
     91 debug("bindBufferRange with UNIFORM_BUFFER target");
     92 var buffer4 = gl.createBuffer();
     93 var offset = gl.getParameter(gl.UNIFORM_BUFFER_OFFSET_ALIGNMENT);
     94 gl.bindBufferRange(gl.UNIFORM_BUFFER, 1, buffer4, offset, 12);
     95 wtu.glErrorShouldBe(gl, gl.NO_ERROR,
     96    "Calling bindBufferRange on a buffer where no storage is allocated should succeed.");
     97 shouldBe("gl.getParameter(gl.UNIFORM_BUFFER_BINDING)", "buffer4");
     98 shouldBe("gl.getIndexedParameter(gl.UNIFORM_BUFFER_BINDING, 1)", "buffer4");
     99 shouldBe("gl.getIndexedParameter(gl.UNIFORM_BUFFER_SIZE, 1)", "12");
    100 shouldBe("gl.getIndexedParameter(gl.UNIFORM_BUFFER_START, 1)", "offset");
    101 
    102 gl.bufferData(gl.UNIFORM_BUFFER, offset + 8, gl.STATIC_DRAW);
    103 shouldBe("gl.getIndexedParameter(gl.UNIFORM_BUFFER_BINDING, 1)", "buffer4");
    104 shouldBe("gl.getIndexedParameter(gl.UNIFORM_BUFFER_SIZE, 1)", "12");
    105 shouldBe("gl.getIndexedParameter(gl.UNIFORM_BUFFER_START, 1)", "offset");
    106 
    107 gl.bufferData(gl.UNIFORM_BUFFER, offset + 12, gl.STATIC_DRAW);
    108 shouldBe("gl.getIndexedParameter(gl.UNIFORM_BUFFER_BINDING, 1)", "buffer4");
    109 shouldBe("gl.getIndexedParameter(gl.UNIFORM_BUFFER_SIZE, 1)", "12");
    110 shouldBe("gl.getIndexedParameter(gl.UNIFORM_BUFFER_START, 1)", "offset");
    111 
    112 wtu.glErrorShouldBe(gl, gl.NO_ERROR);
    113 
    114 debug("");
    115 var successfullyParsed = true;
    116 </script>
    117 <script src="../../js/js-test-post.js"></script>
    118 </body>
    119 </html>