{"version":3,"file":"isWebGLSupported.mjs","sources":["../../../src/utils/browser/isWebGLSupported.ts"],"sourcesContent":["import { DOMAdapter } from '../../environment/adapter';\nimport { AbstractRenderer } from '../../rendering/renderers/shared/system/AbstractRenderer';\n\nlet _isWebGLSupported: boolean | undefined;\n\n/**\n * Helper for checking for WebGL support.\n * @param failIfMajorPerformanceCaveat - whether to fail if there is a major performance caveat, defaults to false\n * @memberof utils\n * @function isWebGLSupported\n * @returns {boolean} Is WebGL supported.\n */\nexport function isWebGLSupported(\n failIfMajorPerformanceCaveat?: boolean\n): boolean\n{\n if (_isWebGLSupported !== undefined) return _isWebGLSupported;\n\n _isWebGLSupported = ((): boolean =>\n {\n const contextOptions = {\n stencil: true,\n failIfMajorPerformanceCaveat:\n failIfMajorPerformanceCaveat\n ?? AbstractRenderer.defaultOptions.failIfMajorPerformanceCaveat,\n };\n\n try\n {\n if (!DOMAdapter.get().getWebGLRenderingContext())\n {\n return false;\n }\n\n const canvas = DOMAdapter.get().createCanvas();\n let gl = canvas.getContext('webgl', contextOptions);\n\n const success = !!gl?.getContextAttributes()?.stencil;\n\n if (gl)\n {\n const loseContext = gl.getExtension('WEBGL_lose_context');\n\n if (loseContext)\n {\n loseContext.loseContext();\n }\n }\n\n gl = null;\n\n return success;\n }\n catch (e)\n {\n return false;\n }\n })();\n\n return _isWebGLSupported;\n}\n"],"names":[],"mappings":";;;;AAGA,IAAI,iBAAA,CAAA;AASG,SAAS,iBACZ,4BAEJ,EAAA;AACI,EAAA,IAAI,iBAAsB,KAAA,KAAA,CAAA;AAAW,IAAO,OAAA,iBAAA,CAAA;AAE5C,EAAA,iBAAA,GAAA,CAAqB,MACrB;AACI,IAAA,MAAM,cAAiB,GAAA;AAAA,MACnB,OAAS,EAAA,IAAA;AAAA,MACT,4BAAA,EACI,4BACG,IAAA,gBAAA,CAAiB,cAAe,CAAA,4BAAA;AAAA,KAC3C,CAAA;AAEA,IACA,IAAA;AACI,MAAA,IAAI,CAAC,UAAA,CAAW,GAAI,EAAA,CAAE,0BACtB,EAAA;AACI,QAAO,OAAA,KAAA,CAAA;AAAA,OACX;AAEA,MAAA,MAAM,MAAS,GAAA,UAAA,CAAW,GAAI,EAAA,CAAE,YAAa,EAAA,CAAA;AAC7C,MAAA,IAAI,EAAK,GAAA,MAAA,CAAO,UAAW,CAAA,OAAA,EAAS,cAAc,CAAA,CAAA;AAElD,MAAA,MAAM,OAAU,GAAA,CAAC,CAAC,EAAA,EAAI,sBAAwB,EAAA,OAAA,CAAA;AAE9C,MAAA,IAAI,EACJ,EAAA;AACI,QAAM,MAAA,WAAA,GAAc,EAAG,CAAA,YAAA,CAAa,oBAAoB,CAAA,CAAA;AAExD,QAAA,IAAI,WACJ,EAAA;AACI,UAAA,WAAA,CAAY,WAAY,EAAA,CAAA;AAAA,SAC5B;AAAA,OACJ;AAEA,MAAK,EAAA,GAAA,IAAA,CAAA;AAEL,MAAO,OAAA,OAAA,CAAA;AAAA,aAEJ,CACP,EAAA;AACI,MAAO,OAAA,KAAA,CAAA;AAAA,KACX;AAAA,GACD,GAAA,CAAA;AAEH,EAAO,OAAA,iBAAA,CAAA;AACX;;;;"}