text: "use strict";
  
  var defined = require("terriajs-cesium/Source/Core/defined").default;
  
  var result;
  
  /**
   * Determines if the current browser supports WebGL.
   * @return {Boolean|String} False if WebGL is not supported at all, 'slow' if WebGL is supported
   *                          but it has a major performance caveat (e.g. software rendering), and True
   *                          if WebGL is available without a major performance caveat.
   */
  function supportsWebGL() {
    if (defined(result)) {
      return result;
    }
  
    //Check for webgl support and if not, then fall back to leaflet
    if (!window.WebGLRenderingContext) {
      // Browser has no idea what WebGL is. Suggest they
      // get a new browser by presenting the user with link to
      // http://get.webgl.org
      result = false;
      return result;
    }
    var canvas = document.createElement("canvas");
  
    var webglOptions = {
      alpha: false,
      stencil: false,
      failIfMajorPerformanceCaveat: true
    };
  
    var gl =
      canvas.getContext("webgl", webglOptions) ||
      canvas.getContext("experimental-webgl", webglOptions);
    if (!gl) {
      // We couldn't get a WebGL context without a major performance caveat.  Let's see if we can get one at all.
      webglOptions.failIfMajorPerformanceCaveat = false;
      gl =
        canvas.getContext("webgl", webglOptions) ||
        canvas.getContext("experimental-webgl", webglOptions);
      if (!gl) {
        // No WebGL at all.
        result = false;
      } else {
        // We can do WebGL, but only with software rendering (or similar).
        result = "slow";
      }
    } else {
      // WebGL is good to go!
      result = true;
    }
  
    return result;
  }
  
  module.exports = supportsWebGL;
  