content/canvas/test/reftest/webgl-utils.js

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/content/canvas/test/reftest/webgl-utils.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,83 @@
     1.4 +"use strict";
     1.5 +
     1.6 +function parseArgs() {
     1.7 +  var query = window.location.search.substring(1);
     1.8 +
     1.9 +  var split = query.split("&");
    1.10 +
    1.11 +  var args = {}
    1.12 +  for (var i = 0; i < split.length; i++) {
    1.13 +    var pair = split[i].split("=");
    1.14 +
    1.15 +    var key = pair[0];
    1.16 +    var value = true;
    1.17 +    if (pair.length >= 2) {
    1.18 +      eval("value = " + decodeURIComponent(pair[1]) + ";");
    1.19 +    }
    1.20 +
    1.21 +    args[key] = value;
    1.22 +  }
    1.23 +
    1.24 +  return args;
    1.25 +}
    1.26 +
    1.27 +var gArgs = null;
    1.28 +function arg(key) {
    1.29 +  if (gArgs === null) {
    1.30 +    gArgs = parseArgs();
    1.31 +  }
    1.32 +
    1.33 +  var ret = gArgs[key];
    1.34 +  if (ret === undefined)
    1.35 +    ret = false;
    1.36 +
    1.37 +  return ret;
    1.38 +}
    1.39 +
    1.40 +function initGL(canvas) {
    1.41 +  if (arg("nogl"))
    1.42 +    return null;
    1.43 +
    1.44 +  var gl = null;
    1.45 +
    1.46 +  var withAA = arg("aa");
    1.47 +  var withAlpha = arg("alpha");
    1.48 +  var withDepth = arg("depth");
    1.49 +  var withPremult = arg("premult");
    1.50 +  var withPreserve = arg("preserve");
    1.51 +  var withStencil = arg("stencil");
    1.52 +
    1.53 +  try {
    1.54 +    var argDict = {
    1.55 +      alpha: withAlpha,
    1.56 +      depth: withDepth,
    1.57 +      stencil: withStencil,
    1.58 +      antialias: withAA,
    1.59 +      premultipliedAlpha: withPremult,
    1.60 +      preserveDrawingBuffer: withPreserve,
    1.61 +    };
    1.62 +    gl = canvas.getContext("experimental-webgl", argDict);
    1.63 +  } catch(e) {}
    1.64 +
    1.65 +  return gl;
    1.66 +}
    1.67 +
    1.68 +function rAF(func) {
    1.69 +  var raf = window.requestAnimationFrame || window.mozRequestAnimationFrame;
    1.70 +  raf(func);
    1.71 +}
    1.72 +
    1.73 +var MAX_WAIT_FOR_COMPOSITE_DELAY_MS = 500;
    1.74 +
    1.75 +function waitForComposite(func) {
    1.76 +  var isDone = false;
    1.77 +  var doneFunc = function () {
    1.78 +    if (isDone)
    1.79 +      return;
    1.80 +    isDone = true;
    1.81 +    func();
    1.82 +  };
    1.83 +
    1.84 +  rAF(doneFunc);
    1.85 +  setTimeout(doneFunc, MAX_WAIT_FOR_COMPOSITE_DELAY_MS);
    1.86 +}

mercurial