xref: /aosp_15_r20/external/skia/modules/canvaskit/gm.js (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
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