1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
   26
   27
   28
   29
   30
   31
   32
   33
   34
   35
   36
   37
   38
   39
   40
   41
   42
   43
   44
   45
   46
   47
   48
   49
   50
   51
   52
   53
   54
   55
   56
   57
   58
   59
   60
   61
   62
   63
   64
   65
   66
   67
   68
   69
   70
   71
   72
   73
   74
   75
   76
   77
   78
   79
   80
   81
   82
   83
   84
   85
   86
   87
   88

content / test / data / gpu / pixel_canvas_low_latency_webgl_alpha_false.html [blame]

<!DOCTYPE HTML>
<html>
<head>
<title>Low Latency Alpha False WebGL Canvas Test: Should render an opaque green box</title>
<style type="text/css">
.nomargin {
  margin: 0px auto;
}
</style>
<script>
// For debugging.
if (!domAutomationController) {
  var domAutomationController = {send : function(msg) { console.log(msg); }};
}

let g_swapsBeforeAck = 15;
let g_canvas;
let g_gl;

function main() {
  g_canvas = document.getElementById("c");
  g_gl = g_canvas.getContext("webgl2", {
    desynchronized : true,
    alpha : false,
    antialias : false
  });
  requestAnimationFrame(draw);
}

function draw() {
  let gl = g_gl;
  let w = g_canvas.width;
  let h = g_canvas.height;

  // Clear default framebuffer to red.
  gl.clearColor(1, 0, 0, 1);
  gl.clear(g_gl.COLOR_BUFFER_BIT);

  // Create a framebuffer with a multisampled RGB8 renderbuffer.
  let samples =
      gl.getInternalformatParameter(gl.RENDERBUFFER, gl.RGB8, gl.SAMPLES);
  console.assert(samples && samples.length > 0);

  let rb = gl.createRenderbuffer();
  gl.bindRenderbuffer(gl.RENDERBUFFER, rb);
  gl.renderbufferStorageMultisample(gl.RENDERBUFFER, samples[0], gl.RGB8, w, h);

  let fb = gl.createFramebuffer();
  gl.bindFramebuffer(gl.FRAMEBUFFER, fb);
  gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0,
                             gl.RENDERBUFFER, rb);

  console.assert(gl.checkFramebufferStatus(gl.FRAMEBUFFER) ==
                 gl.FRAMEBUFFER_COMPLETE);

  // Clear render buffer to green.
  gl.clearColor(0, 1, 0, 1);
  gl.clear(gl.COLOR_BUFFER_BIT);

  // Bind default framebuffer for draw.
  gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, null);

  // Resolving RGB8 multisampled renderbuffer to alpha: false context should not
  // fail.
  gl.blitFramebuffer(0, 0, w, h, 0, 0, w, h, gl.COLOR_BUFFER_BIT, gl.NEAREST);

  gl.deleteFramebuffer(fb);
  gl.deleteRenderbuffer(rb);

  waitForFinish();
}

function waitForFinish() {
  if (g_swapsBeforeAck == 0) {
    domAutomationController.send("SUCCESS");
  } else {
    g_swapsBeforeAck--;
    window.requestAnimationFrame(waitForFinish);
  }
}
</script>
</head>
<body onload="main()">
<div id="container" style="position:absolute; top:0px; left:0px">
<canvas id="c" width="100" height="100" class="nomargin" style="background-color:black"></canvas>
</div>
</body>
</html>