tor-browser

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

clearbuffer-sub-source.html (3722B)


      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>Test clearBuffer functions with optional srcOffset argument</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="20" height="20"> </canvas>
     20 <script>
     21 "use strict";
     22 description("This tests clearBuffer* functions with optional srcOffset argument");
     23 
     24 function verifyOnePixel(readFormat, readType, arrayType, expectedColor) {
     25  var buffer = new arrayType(4);
     26  gl.readPixels(0, 0, 1, 1, readFormat, readType, buffer);
     27  if (buffer[0] == expectedColor[0] &&
     28      buffer[1] == expectedColor[1] &&
     29      buffer[2] == expectedColor[2] &&
     30      buffer[3] == expectedColor[3]) {
     31    testPassed("clearBuffer sets the renderbuffer with the correct data");
     32  } else {
     33    testFailed("clearBuffer fails to work. Expected: " + expectedColor + ", got: " + buffer);
     34  }
     35 }
     36 
     37 function testClearBuffer(func, format, arrayType, readFormat, readType) {
     38  debug("");
     39  debug("Testing " + func);
     40 
     41  var fb = gl.createFramebuffer();
     42  gl.bindFramebuffer(gl.FRAMEBUFFER, fb);
     43 
     44  var renderbuffer = gl.createRenderbuffer();
     45  gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);
     46  gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, renderbuffer);
     47  gl.renderbufferStorage(gl.RENDERBUFFER, format, canvas.width, canvas.height);
     48  shouldBe('gl.checkFramebufferStatus(gl.FRAMEBUFFER)', 'gl.FRAMEBUFFER_COMPLETE');
     49 
     50  var srcData = new arrayType([1, 2, 3, 4, 5, 6]);
     51  gl[func](gl.COLOR, 0, srcData);
     52  wtu.glErrorShouldBe(gl, gl.NO_ERROR, "clearBuffer with no srcOffset should succeed");
     53  verifyOnePixel(readFormat, readType, arrayType, [1,2,3,4]);
     54 
     55  gl[func](gl.COLOR, 0, srcData, 0);
     56  wtu.glErrorShouldBe(gl, gl.NO_ERROR, "clearBuffer with srcOffset = 0 should succeed");
     57  verifyOnePixel(readFormat, readType, arrayType, [1,2,3,4]);
     58 
     59  gl[func](gl.COLOR, 0, srcData, 2);
     60  wtu.glErrorShouldBe(gl, gl.NO_ERROR, "clearBuffer with srcOffset = 2 should succeed");
     61  verifyOnePixel(readFormat, readType, arrayType, [3,4, 5, 6]);
     62 
     63  gl[func](gl.COLOR, 0, srcData, 4);
     64  wtu.glErrorShouldBe(gl, gl.INVALID_VALUE, "clearBuffer with srcOffset = 4 should fail: out of bounds");
     65 
     66  gl.deleteFramebuffer(fb);
     67  gl.deleteRenderbuffer(renderbuffer);
     68 }
     69 
     70 var wtu = WebGLTestUtils;
     71 var canvas = document.getElementById("canvas");
     72 var gl = wtu.create3DContext(canvas, undefined, 2);
     73 if (!gl) {
     74  testFailed("context does not exist");
     75 } else {
     76  testPassed("context exists");
     77 
     78  var testCases = [
     79    {
     80      func: "clearBufferiv", format: gl.RGBA32I, arrayType: Int32Array,
     81      readFormat: gl.RGBA_INTEGER, readType: gl.INT,
     82    },
     83    {
     84      func: "clearBufferuiv", format: gl.RGBA32UI, arrayType: Uint32Array,
     85      readFormat: gl.RGBA_INTEGER, readType: gl.UNSIGNED_INT,
     86    },
     87    {
     88      func: "clearBufferfv", format: gl.RGBA32F, arrayType: Float32Array,
     89      readFormat: gl.RGBA, readType: gl.FLOAT,
     90      extension: "EXT_color_buffer_float",
     91    },
     92  ];
     93 
     94  for (var tt = 0; tt < testCases.length; ++tt) {
     95    var test = testCases[tt];
     96    if (test.extension && !gl.getExtension(test.extension))
     97      continue;
     98    testClearBuffer(test.func, test.format, test.arrayType, test.readFormat, test.readType);
     99  }
    100 }
    101 
    102 debug("");
    103 wtu.glErrorShouldBe(gl, gl.NO_ERROR, "should be no error");
    104 var successfullyParsed = true;
    105 
    106 </script>
    107 <script src="../../js/js-test-post.js"></script>
    108 
    109 </body>
    110 </html>