tor-browser

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

test_depth_readpixels.html (1701B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <head>
      4 <title>WebGL test: Check for error on ReadPixels from a depth-only FB.</title>
      5 <script src="/tests/SimpleTest/SimpleTest.js"></script>
      6 <link rel="stylesheet" href="/tests/SimpleTest/test.css">
      7 <script src="webgl-util.js"></script>
      8 <script src="driver-info.js"></script>
      9 </head>
     10 <body>
     11 <canvas id="c"></canvas>
     12 <script>
     13 "use strict";
     14 
     15 (function() {
     16  var gl = c.getContext('webgl');
     17  if (!gl) {
     18    todo(gl, 'Get GL working here first.');
     19    return;
     20  }
     21 
     22  var rb = gl.createRenderbuffer();
     23  gl.bindRenderbuffer(gl.RENDERBUFFER, rb);
     24  gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_COMPONENT16, 4, 4);
     25 
     26  var fb = gl.createFramebuffer();
     27  gl.bindFramebuffer(gl.FRAMEBUFFER, fb);
     28  gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT,
     29                             gl.RENDERBUFFER, rb);
     30 
     31  if (gl.checkFramebufferStatus(gl.FRAMEBUFFER) != gl.FRAMEBUFFER_COMPLETE) {
     32    todo(false, 'Depth-only FB incomplete. This is valid.');
     33    return;
     34  }
     35 
     36  ok(!gl.getError(), 'Should have no errors after constructing FB.');
     37 
     38  var pixels = new Uint8Array([1, 2, 3, 4]);
     39  gl.readPixels(0, 0, // x,y
     40                1, 1, // w,h
     41                gl.RGBA, gl.UNSIGNED_BYTE, pixels);
     42 
     43  ok(gl.getError() == gl.INVALID_OPERATION,
     44     '1x1 color read from a depth FB should generated INVALID_OP.');
     45  console.log('Data after 1x1 color-from-depth readpixels:');
     46  console.log(pixels);
     47 
     48  gl.readPixels(0, 0, // x,y
     49                0, 0, // w,h
     50                gl.RGBA, gl.UNSIGNED_BYTE, pixels);
     51 
     52  ok(gl.getError() == gl.INVALID_OPERATION,
     53     '0x0 color read from a depth FB should generated INVALID_OP.');
     54 })();
     55 
     56 ok(true, 'Test complete.');
     57 
     58 </script>
     59 </body>
     60 </html>