1*c8dee2aaSAndroid Build Coastguard Worker// When this file is loaded in, the high level object is "Module"; 2*c8dee2aaSAndroid Build Coastguard Workervar WasmGMTests = Module; 3*c8dee2aaSAndroid Build Coastguard WorkerWasmGMTests.onRuntimeInitialized = function() { 4*c8dee2aaSAndroid Build Coastguard Worker 5*c8dee2aaSAndroid Build Coastguard Worker WasmGMTests.GetWebGLContext = function(canvas, webGLVersion) { 6*c8dee2aaSAndroid Build Coastguard Worker if (!canvas) { 7*c8dee2aaSAndroid Build Coastguard Worker throw 'null canvas passed into makeWebGLContext'; 8*c8dee2aaSAndroid Build Coastguard Worker } 9*c8dee2aaSAndroid Build Coastguard Worker if (webGLVersion !== 1 && webGLVersion !== 2 ) { 10*c8dee2aaSAndroid Build Coastguard Worker throw 'invalid webGLVersion'; 11*c8dee2aaSAndroid Build Coastguard Worker } 12*c8dee2aaSAndroid Build Coastguard Worker var contextAttributes = { 13*c8dee2aaSAndroid Build Coastguard Worker 'alpha': 1, 14*c8dee2aaSAndroid Build Coastguard Worker 'depth': 0, // can be 0 because off-screen. 15*c8dee2aaSAndroid Build Coastguard Worker 'stencil': 0, // can be 0 because off-screen. 16*c8dee2aaSAndroid Build Coastguard Worker 'antialias': 0, 17*c8dee2aaSAndroid Build Coastguard Worker 'premultipliedAlpha': 1, 18*c8dee2aaSAndroid Build Coastguard Worker 'preserveDrawingBuffer': 0, 19*c8dee2aaSAndroid Build Coastguard Worker 'preferLowPowerToHighPerformance': 0, 20*c8dee2aaSAndroid Build Coastguard Worker 'failIfMajorPerformanceCaveat': 0, 21*c8dee2aaSAndroid Build Coastguard Worker 'enableExtensionsByDefault': 1, 22*c8dee2aaSAndroid Build Coastguard Worker 'explicitSwapControl': 0, 23*c8dee2aaSAndroid Build Coastguard Worker 'renderViaOffscreenBackBuffer': 0, 24*c8dee2aaSAndroid Build Coastguard Worker 'majorVersion': webGLVersion, 25*c8dee2aaSAndroid Build Coastguard Worker }; 26*c8dee2aaSAndroid Build Coastguard Worker 27*c8dee2aaSAndroid Build Coastguard Worker // Creates a WebGL context and sets it to be the current context. 28*c8dee2aaSAndroid Build Coastguard Worker // These functions are defined in emscripten's library_webgl.js 29*c8dee2aaSAndroid Build Coastguard Worker var handle = GL.createContext(canvas, contextAttributes); 30*c8dee2aaSAndroid Build Coastguard Worker if (!handle) { 31*c8dee2aaSAndroid Build Coastguard Worker return 0; 32*c8dee2aaSAndroid Build Coastguard Worker } 33*c8dee2aaSAndroid Build Coastguard Worker GL.makeContextCurrent(handle); 34*c8dee2aaSAndroid Build Coastguard Worker return handle; 35*c8dee2aaSAndroid Build Coastguard Worker }; 36*c8dee2aaSAndroid Build Coastguard Worker 37*c8dee2aaSAndroid Build Coastguard Worker WasmGMTests.LoadResource = function(name, buffer) { 38*c8dee2aaSAndroid Build Coastguard Worker // The WASM memory will take ownership of this pointer. 39*c8dee2aaSAndroid Build Coastguard Worker var bytePtr = copyArrayBuffer(buffer); 40*c8dee2aaSAndroid Build Coastguard Worker WasmGMTests._LoadResource(name, bytePtr, buffer.byteLength); 41*c8dee2aaSAndroid Build Coastguard Worker } 42*c8dee2aaSAndroid Build Coastguard Worker 43*c8dee2aaSAndroid Build Coastguard Worker function copyArrayBuffer(buffer) { 44*c8dee2aaSAndroid Build Coastguard Worker var ptr = WasmGMTests._malloc(buffer.byteLength); 45*c8dee2aaSAndroid Build Coastguard Worker WasmGMTests.HEAPU8.set(new Uint8Array(buffer), ptr); 46*c8dee2aaSAndroid Build Coastguard Worker return ptr; 47*c8dee2aaSAndroid Build Coastguard Worker } 48*c8dee2aaSAndroid Build Coastguard Worker 49*c8dee2aaSAndroid Build Coastguard Worker} 50