From 570922b177780bf8efff6d2da9a645d4e23ba06b Mon Sep 17 00:00:00 2001 From: Kai Ninomiya Date: Fri, 14 Jun 2024 13:46:01 -0700 Subject: [PATCH] release and debug builds --- .gitignore | 9 +- CMakeLists.txt | 30 +- README.md | 2 +- index.html | 5 +- out/web/hello.html | 1294 --------------- out/web/hello.js | 3266 ------------------------------------- out/web/hello.wasm | Bin 461601 -> 0 bytes out/web/hello.wasm.map | 1 - out/webdbg/hello.html | 201 +++ out/webdbg/hello.js | 3216 ++++++++++++++++++++++++++++++++++++ out/webdbg/hello.wasm | Bin 0 -> 487774 bytes out/webdbg/hello.wasm.map | 1 + out/webrel/hello.html | 1 + out/webrel/hello.js | 63 + out/webrel/hello.wasm | Bin 0 -> 19758 bytes 15 files changed, 3514 insertions(+), 4575 deletions(-) delete mode 100644 out/web/hello.html delete mode 100644 out/web/hello.js delete mode 100755 out/web/hello.wasm delete mode 100644 out/web/hello.wasm.map create mode 100644 out/webdbg/hello.html create mode 100644 out/webdbg/hello.js create mode 100755 out/webdbg/hello.wasm create mode 100644 out/webdbg/hello.wasm.map create mode 100644 out/webrel/hello.html create mode 100644 out/webrel/hello.js create mode 100755 out/webrel/hello.wasm diff --git a/.gitignore b/.gitignore index aac302b..92579dc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,9 @@ -/out/ +/out/*/* +!/out/webdbg/hello.html +!/out/webdbg/hello.js +!/out/webdbg/hello.wasm +!/out/webdbg/hello.wasm.map +!/out/webrel/hello.html +!/out/webrel/hello.js +!/out/webrel/hello.wasm /third_party/dawn/ diff --git a/CMakeLists.txt b/CMakeLists.txt index 34afe27..10a59c8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,7 +34,11 @@ if(NOT EMSCRIPTEN) endif() if(EMSCRIPTEN) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -Wall") + add_compile_options( + "-Wall" + "-Wextra" + "$<$:-flto>" + ) endif() add_executable(hello @@ -45,15 +49,21 @@ if(EMSCRIPTEN) set_target_properties(hello PROPERTIES SUFFIX ".html") target_link_options(hello - # To enable DWARF debugging, remove -gsource-map and follow: - # https://developer.chrome.com/blog/wasm-debugging-2020/ - PRIVATE "-gsource-map" - #PRIVATE "--source-map-base=./" - PRIVATE "-sUSE_WEBGPU=1" - PRIVATE "-sASSERTIONS=1" - PRIVATE "-sSAFE_HEAP=1" - #PRIVATE "--closure=1" - #PRIVATE "-sVERBOSE=1" + PRIVATE + # To enable DWARF debugging, remove -gsource-map and follow: + # https://developer.chrome.com/blog/wasm-debugging-2020/ + "$<$:-gsource-map>" + #"$<$:--source-map-base=./>" + + "-sUSE_WEBGPU=1" + + "$<$:-sASSERTIONS=1>" + "$<$:-sSAFE_HEAP=1>" + "$<$:-flto>" + "$<$:--closure=1>" + + # Verbose compilation output + #"-sVERBOSE=1" ) else() target_link_libraries(hello diff --git a/README.md b/README.md index 3132ae1..757633e 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ but that is a goal. **Check the [issues](https://github.com/kainino0x/webgpu-cross-platform-demo/issues) tab for known issues.** -**Please note the `webgpu.h` and `webgpu_cpp.h` APIs (implemented by Dawn/wgpu-native/Emscripten) are not yet stabilized.** +**Please note the `webgpu.h` API (implemented by Dawn/wgpu-native/Emscripten) and `webgpu_cpp.h` bindings (from Dawn) are not yet stabilized.** ## Open pre-installed VSCode in Browser [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/kainino0x/webgpu-cross-platform-demo) diff --git a/index.html b/index.html index 2a6047d..60fe385 100644 --- a/index.html +++ b/index.html @@ -2,9 +2,10 @@ - - + webgpu-cross-platform-demo +

Release build

+

Debug build

diff --git a/out/web/hello.html b/out/web/hello.html deleted file mode 100644 index bb39825..0000000 --- a/out/web/hello.html +++ /dev/null @@ -1,1294 +0,0 @@ - - - - - - Emscripten-Generated Code - - - - - image/svg+xml - - -
-
Downloading...
- - - Resize canvas - Lock/hide mouse pointer     - - - - -
- -
- - -
- -
- - - - - - diff --git a/out/web/hello.js b/out/web/hello.js deleted file mode 100644 index b11bd8f..0000000 --- a/out/web/hello.js +++ /dev/null @@ -1,3266 +0,0 @@ -var Module = typeof Module != "undefined" ? Module : {}; - -var moduleOverrides = Object.assign({}, Module); - -var arguments_ = []; - -var thisProgram = "./this.program"; - -var quit_ = (status, toThrow) => { - throw toThrow; -}; - -var ENVIRONMENT_IS_WEB = typeof window == "object"; - -var ENVIRONMENT_IS_WORKER = typeof importScripts == "function"; - -var ENVIRONMENT_IS_NODE = typeof process == "object" && typeof process.versions == "object" && typeof process.versions.node == "string"; - -var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; - -if (Module["ENVIRONMENT"]) { - throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)"); -} - -var scriptDirectory = ""; - -function locateFile(path) { - if (Module["locateFile"]) { - return Module["locateFile"](path, scriptDirectory); - } - return scriptDirectory + path; -} - -var read_, readAsync, readBinary, setWindowTitle; - -if (ENVIRONMENT_IS_NODE) { - if (typeof process == "undefined" || !process.release || process.release.name !== "node") throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)"); - var nodeVersion = process.versions.node; - var numericVersion = nodeVersion.split(".").slice(0, 3); - numericVersion = numericVersion[0] * 1e4 + numericVersion[1] * 100 + numericVersion[2].split("-")[0] * 1; - var minVersion = 16e4; - if (numericVersion < 16e4) { - throw new Error("This emscripten-generated code requires node v16.0.0 (detected v" + nodeVersion + ")"); - } - var fs = require("fs"); - var nodePath = require("path"); - if (ENVIRONMENT_IS_WORKER) { - scriptDirectory = nodePath.dirname(scriptDirectory) + "/"; - } else { - scriptDirectory = __dirname + "/"; - } - read_ = (filename, binary) => { - filename = isFileURI(filename) ? new URL(filename) : nodePath.normalize(filename); - return fs.readFileSync(filename, binary ? undefined : "utf8"); - }; - readBinary = filename => { - var ret = read_(filename, true); - if (!ret.buffer) { - ret = new Uint8Array(ret); - } - assert(ret.buffer); - return ret; - }; - readAsync = (filename, onload, onerror, binary = true) => { - filename = isFileURI(filename) ? new URL(filename) : nodePath.normalize(filename); - fs.readFile(filename, binary ? undefined : "utf8", (err, data) => { - if (err) onerror(err); else onload(binary ? data.buffer : data); - }); - }; - if (!Module["thisProgram"] && process.argv.length > 1) { - thisProgram = process.argv[1].replace(/\\/g, "/"); - } - arguments_ = process.argv.slice(2); - if (typeof module != "undefined") { - module["exports"] = Module; - } - process.on("uncaughtException", ex => { - if (ex !== "unwind" && !(ex instanceof ExitStatus) && !(ex.context instanceof ExitStatus)) { - throw ex; - } - }); - quit_ = (status, toThrow) => { - process.exitCode = status; - throw toThrow; - }; - Module["inspect"] = () => "[Emscripten Module object]"; -} else if (ENVIRONMENT_IS_SHELL) { - if (typeof process == "object" && typeof require === "function" || typeof window == "object" || typeof importScripts == "function") throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)"); - if (typeof read != "undefined") { - read_ = read; - } - readBinary = f => { - if (typeof readbuffer == "function") { - return new Uint8Array(readbuffer(f)); - } - let data = read(f, "binary"); - assert(typeof data == "object"); - return data; - }; - readAsync = (f, onload, onerror) => { - setTimeout(() => onload(readBinary(f))); - }; - if (typeof clearTimeout == "undefined") { - globalThis.clearTimeout = id => {}; - } - if (typeof setTimeout == "undefined") { - globalThis.setTimeout = f => typeof f == "function" ? f() : abort(); - } - if (typeof scriptArgs != "undefined") { - arguments_ = scriptArgs; - } else if (typeof arguments != "undefined") { - arguments_ = arguments; - } - if (typeof quit == "function") { - quit_ = (status, toThrow) => { - setTimeout(() => { - if (!(toThrow instanceof ExitStatus)) { - let toLog = toThrow; - if (toThrow && typeof toThrow == "object" && toThrow.stack) { - toLog = [ toThrow, toThrow.stack ]; - } - err(`exiting due to exception: ${toLog}`); - } - quit(status); - }); - throw toThrow; - }; - } - if (typeof print != "undefined") { - if (typeof console == "undefined") console = {}; - console.log = print; - console.warn = console.error = typeof printErr != "undefined" ? printErr : print; - } -} else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { - if (ENVIRONMENT_IS_WORKER) { - scriptDirectory = self.location.href; - } else if (typeof document != "undefined" && document.currentScript) { - scriptDirectory = document.currentScript.src; - } - if (scriptDirectory.indexOf("blob:") !== 0) { - scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, "").lastIndexOf("/") + 1); - } else { - scriptDirectory = ""; - } - if (!(typeof window == "object" || typeof importScripts == "function")) throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)"); - { - read_ = url => { - var xhr = new XMLHttpRequest; - xhr.open("GET", url, false); - xhr.send(null); - return xhr.responseText; - }; - if (ENVIRONMENT_IS_WORKER) { - readBinary = url => { - var xhr = new XMLHttpRequest; - xhr.open("GET", url, false); - xhr.responseType = "arraybuffer"; - xhr.send(null); - return new Uint8Array(xhr.response); - }; - } - readAsync = (url, onload, onerror) => { - var xhr = new XMLHttpRequest; - xhr.open("GET", url, true); - xhr.responseType = "arraybuffer"; - xhr.onload = () => { - if (xhr.status == 200 || xhr.status == 0 && xhr.response) { - onload(xhr.response); - return; - } - onerror(); - }; - xhr.onerror = onerror; - xhr.send(null); - }; - } - setWindowTitle = title => document.title = title; -} else { - throw new Error("environment detection error"); -} - -var out = Module["print"] || console.log.bind(console); - -var err = Module["printErr"] || console.error.bind(console); - -Object.assign(Module, moduleOverrides); - -moduleOverrides = null; - -checkIncomingModuleAPI(); - -if (Module["arguments"]) arguments_ = Module["arguments"]; - -legacyModuleProp("arguments", "arguments_"); - -if (Module["thisProgram"]) thisProgram = Module["thisProgram"]; - -legacyModuleProp("thisProgram", "thisProgram"); - -if (Module["quit"]) quit_ = Module["quit"]; - -legacyModuleProp("quit", "quit_"); - -assert(typeof Module["memoryInitializerPrefixURL"] == "undefined", "Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"); - -assert(typeof Module["pthreadMainPrefixURL"] == "undefined", "Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"); - -assert(typeof Module["cdInitializerPrefixURL"] == "undefined", "Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"); - -assert(typeof Module["filePackagePrefixURL"] == "undefined", "Module.filePackagePrefixURL option was removed, use Module.locateFile instead"); - -assert(typeof Module["read"] == "undefined", "Module.read option was removed (modify read_ in JS)"); - -assert(typeof Module["readAsync"] == "undefined", "Module.readAsync option was removed (modify readAsync in JS)"); - -assert(typeof Module["readBinary"] == "undefined", "Module.readBinary option was removed (modify readBinary in JS)"); - -assert(typeof Module["setWindowTitle"] == "undefined", "Module.setWindowTitle option was removed (modify setWindowTitle in JS)"); - -assert(typeof Module["TOTAL_MEMORY"] == "undefined", "Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY"); - -legacyModuleProp("asm", "wasmExports"); - -legacyModuleProp("read", "read_"); - -legacyModuleProp("readAsync", "readAsync"); - -legacyModuleProp("readBinary", "readBinary"); - -legacyModuleProp("setWindowTitle", "setWindowTitle"); - -var IDBFS = "IDBFS is no longer included by default; build with -lidbfs.js"; - -var PROXYFS = "PROXYFS is no longer included by default; build with -lproxyfs.js"; - -var WORKERFS = "WORKERFS is no longer included by default; build with -lworkerfs.js"; - -var NODEFS = "NODEFS is no longer included by default; build with -lnodefs.js"; - -assert(!ENVIRONMENT_IS_SHELL, "shell environment detected but not enabled at build time. Add 'shell' to `-sENVIRONMENT` to enable."); - -var wasmBinary; - -if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"]; - -legacyModuleProp("wasmBinary", "wasmBinary"); - -var noExitRuntime = Module["noExitRuntime"] || true; - -legacyModuleProp("noExitRuntime", "noExitRuntime"); - -if (typeof WebAssembly != "object") { - abort("no native wasm support detected"); -} - -function getSafeHeapType(bytes, isFloat) { - switch (bytes) { - case 1: - return "i8"; - - case 2: - return "i16"; - - case 4: - return isFloat ? "float" : "i32"; - - case 8: - return isFloat ? "double" : "i64"; - - default: - assert(0, `getSafeHeapType() invalid bytes=${bytes}`); - } -} - -function SAFE_HEAP_STORE(dest, value, bytes, isFloat) { - if (dest <= 0) abort(`segmentation fault storing ${bytes} bytes to address ${dest}`); - if (dest % bytes !== 0) abort(`alignment error storing to address ${dest}, which was expected to be aligned to a multiple of ${bytes}`); - if (runtimeInitialized) { - var brk = _sbrk(0); - if (dest + bytes > brk) abort(`segmentation fault, exceeded the top of the available dynamic heap when storing ${bytes} bytes to address ${dest}. DYNAMICTOP=${brk}`); - assert(brk >= _emscripten_stack_get_base(), `brk >= _emscripten_stack_get_base() (brk=${brk}, _emscripten_stack_get_base()=${_emscripten_stack_get_base()})`); - assert(brk <= wasmMemory.buffer.byteLength, `brk <= wasmMemory.buffer.byteLength (brk=${brk}, wasmMemory.buffer.byteLength=${wasmMemory.buffer.byteLength})`); - } - setValue_safe(dest, value, getSafeHeapType(bytes, isFloat)); - return value; -} - -function SAFE_HEAP_STORE_D(dest, value, bytes) { - return SAFE_HEAP_STORE(dest, value, bytes, true); -} - -function SAFE_HEAP_LOAD(dest, bytes, unsigned, isFloat) { - if (dest <= 0) abort(`segmentation fault loading ${bytes} bytes from address ${dest}`); - if (dest % bytes !== 0) abort(`alignment error loading from address ${dest}, which was expected to be aligned to a multiple of ${bytes}`); - if (runtimeInitialized) { - var brk = _sbrk(0); - if (dest + bytes > brk) abort(`segmentation fault, exceeded the top of the available dynamic heap when loading ${bytes} bytes from address ${dest}. DYNAMICTOP=${brk}`); - assert(brk >= _emscripten_stack_get_base(), `brk >= _emscripten_stack_get_base() (brk=${brk}, _emscripten_stack_get_base()=${_emscripten_stack_get_base()})`); - assert(brk <= wasmMemory.buffer.byteLength, `brk <= wasmMemory.buffer.byteLength (brk=${brk}, wasmMemory.buffer.byteLength=${wasmMemory.buffer.byteLength})`); - } - var type = getSafeHeapType(bytes, isFloat); - var ret = getValue_safe(dest, type); - if (unsigned) ret = unSign(ret, parseInt(type.substr(1), 10)); - return ret; -} - -function SAFE_HEAP_LOAD_D(dest, bytes, unsigned) { - return SAFE_HEAP_LOAD(dest, bytes, unsigned, true); -} - -function SAFE_FT_MASK(value, mask) { - var ret = value & mask; - if (ret !== value) { - abort(`Function table mask error: function pointer is ${value} which is masked by ${mask}, the likely cause of this is that the function pointer is being called by the wrong type.`); - } - return ret; -} - -function segfault() { - abort("segmentation fault"); -} - -function alignfault() { - abort("alignment fault"); -} - -var wasmMemory; - -var ABORT = false; - -var EXITSTATUS; - -function assert(condition, text) { - if (!condition) { - abort("Assertion failed" + (text ? ": " + text : "")); - } -} - -function _malloc() { - abort("malloc() called but not included in the build - add '_malloc' to EXPORTED_FUNCTIONS"); -} - -var HEAP, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; - -function updateMemoryViews() { - var b = wasmMemory.buffer; - Module["HEAP8"] = HEAP8 = new Int8Array(b); - Module["HEAP16"] = HEAP16 = new Int16Array(b); - Module["HEAPU8"] = HEAPU8 = new Uint8Array(b); - Module["HEAPU16"] = HEAPU16 = new Uint16Array(b); - Module["HEAP32"] = HEAP32 = new Int32Array(b); - Module["HEAPU32"] = HEAPU32 = new Uint32Array(b); - Module["HEAPF32"] = HEAPF32 = new Float32Array(b); - Module["HEAPF64"] = HEAPF64 = new Float64Array(b); -} - -assert(!Module["STACK_SIZE"], "STACK_SIZE can no longer be set at runtime. Use -sSTACK_SIZE at link time"); - -assert(typeof Int32Array != "undefined" && typeof Float64Array !== "undefined" && Int32Array.prototype.subarray != undefined && Int32Array.prototype.set != undefined, "JS engine does not provide full typed array support"); - -assert(!Module["wasmMemory"], "Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally"); - -assert(!Module["INITIAL_MEMORY"], "Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically"); - -var wasmTable; - -function writeStackCookie() { - var max = _emscripten_stack_get_end(); - assert((max & 3) == 0); - if (max == 0) { - max += 4; - } - SAFE_HEAP_STORE((max >> 2) * 4, 34821223, 4); - SAFE_HEAP_STORE((max + 4 >> 2) * 4, 2310721022, 4); -} - -function checkStackCookie() { - if (ABORT) return; - var max = _emscripten_stack_get_end(); - if (max == 0) { - max += 4; - } - var cookie1 = SAFE_HEAP_LOAD((max >> 2) * 4, 4, 1); - var cookie2 = SAFE_HEAP_LOAD((max + 4 >> 2) * 4, 4, 1); - if (cookie1 != 34821223 || cookie2 != 2310721022) { - abort(`Stack overflow! Stack cookie has been overwritten at ${ptrToString(max)}, expected hex dwords 0x89BACDFE and 0x2135467, but received ${ptrToString(cookie2)} ${ptrToString(cookie1)}`); - } -} - -(function() { - var h16 = new Int16Array(1); - var h8 = new Int8Array(h16.buffer); - h16[0] = 25459; - if (h8[0] !== 115 || h8[1] !== 99) throw "Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)"; -})(); - -var __ATPRERUN__ = []; - -var __ATINIT__ = []; - -var __ATMAIN__ = []; - -var __ATEXIT__ = []; - -var __ATPOSTRUN__ = []; - -var runtimeInitialized = false; - -var runtimeKeepaliveCounter = 0; - -function keepRuntimeAlive() { - return noExitRuntime || runtimeKeepaliveCounter > 0; -} - -function preRun() { - if (Module["preRun"]) { - if (typeof Module["preRun"] == "function") Module["preRun"] = [ Module["preRun"] ]; - while (Module["preRun"].length) { - addOnPreRun(Module["preRun"].shift()); - } - } - callRuntimeCallbacks(__ATPRERUN__); -} - -function initRuntime() { - assert(!runtimeInitialized); - runtimeInitialized = true; - checkStackCookie(); - callRuntimeCallbacks(__ATINIT__); -} - -function preMain() { - checkStackCookie(); - callRuntimeCallbacks(__ATMAIN__); -} - -function postRun() { - checkStackCookie(); - if (Module["postRun"]) { - if (typeof Module["postRun"] == "function") Module["postRun"] = [ Module["postRun"] ]; - while (Module["postRun"].length) { - addOnPostRun(Module["postRun"].shift()); - } - } - callRuntimeCallbacks(__ATPOSTRUN__); -} - -function addOnPreRun(cb) { - __ATPRERUN__.unshift(cb); -} - -function addOnInit(cb) { - __ATINIT__.unshift(cb); -} - -function addOnPreMain(cb) { - __ATMAIN__.unshift(cb); -} - -function addOnExit(cb) {} - -function addOnPostRun(cb) { - __ATPOSTRUN__.unshift(cb); -} - -assert(Math.imul, "This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"); - -assert(Math.fround, "This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"); - -assert(Math.clz32, "This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"); - -assert(Math.trunc, "This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"); - -var runDependencies = 0; - -var runDependencyWatcher = null; - -var dependenciesFulfilled = null; - -var runDependencyTracking = {}; - -function getUniqueRunDependency(id) { - var orig = id; - while (1) { - if (!runDependencyTracking[id]) return id; - id = orig + Math.random(); - } -} - -function addRunDependency(id) { - runDependencies++; - if (Module["monitorRunDependencies"]) { - Module["monitorRunDependencies"](runDependencies); - } - if (id) { - assert(!runDependencyTracking[id]); - runDependencyTracking[id] = 1; - if (runDependencyWatcher === null && typeof setInterval != "undefined") { - runDependencyWatcher = setInterval(() => { - if (ABORT) { - clearInterval(runDependencyWatcher); - runDependencyWatcher = null; - return; - } - var shown = false; - for (var dep in runDependencyTracking) { - if (!shown) { - shown = true; - err("still waiting on run dependencies:"); - } - err("dependency: " + dep); - } - if (shown) { - err("(end of list)"); - } - }, 1e4); - } - } else { - err("warning: run dependency added without ID"); - } -} - -function removeRunDependency(id) { - runDependencies--; - if (Module["monitorRunDependencies"]) { - Module["monitorRunDependencies"](runDependencies); - } - if (id) { - assert(runDependencyTracking[id]); - delete runDependencyTracking[id]; - } else { - err("warning: run dependency removed without ID"); - } - if (runDependencies == 0) { - if (runDependencyWatcher !== null) { - clearInterval(runDependencyWatcher); - runDependencyWatcher = null; - } - if (dependenciesFulfilled) { - var callback = dependenciesFulfilled; - dependenciesFulfilled = null; - callback(); - } - } -} - -function abort(what) { - if (Module["onAbort"]) { - Module["onAbort"](what); - } - what = "Aborted(" + what + ")"; - err(what); - ABORT = true; - EXITSTATUS = 1; - var e = new WebAssembly.RuntimeError(what); - throw e; -} - -var FS = { - error() { - abort("Filesystem support (FS) was not included. The problem is that you are using files from JS, but files were not used from C/C++, so filesystem support was not auto-included. You can force-include filesystem support with -sFORCE_FILESYSTEM"); - }, - init() { - FS.error(); - }, - createDataFile() { - FS.error(); - }, - createPreloadedFile() { - FS.error(); - }, - createLazyFile() { - FS.error(); - }, - open() { - FS.error(); - }, - mkdev() { - FS.error(); - }, - registerDevice() { - FS.error(); - }, - analyzePath() { - FS.error(); - }, - ErrnoError() { - FS.error(); - } -}; - -Module["FS_createDataFile"] = FS.createDataFile; - -Module["FS_createPreloadedFile"] = FS.createPreloadedFile; - -var dataURIPrefix = "data:application/octet-stream;base64,"; - -function isDataURI(filename) { - return filename.startsWith(dataURIPrefix); -} - -function isFileURI(filename) { - return filename.startsWith("file://"); -} - -function createExportWrapper(name) { - return function() { - assert(runtimeInitialized, `native function \`${name}\` called before runtime initialization`); - var f = wasmExports[name]; - assert(f, `exported native function \`${name}\` not found`); - return f.apply(null, arguments); - }; -} - -var wasmBinaryFile; - -wasmBinaryFile = "hello.wasm"; - -if (!isDataURI(wasmBinaryFile)) { - wasmBinaryFile = locateFile(wasmBinaryFile); -} - -function getBinarySync(file) { - if (file == wasmBinaryFile && wasmBinary) { - return new Uint8Array(wasmBinary); - } - if (readBinary) { - return readBinary(file); - } - throw "both async and sync fetching of the wasm failed"; -} - -function getBinaryPromise(binaryFile) { - if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) { - if (typeof fetch == "function" && !isFileURI(binaryFile)) { - return fetch(binaryFile, { - credentials: "same-origin" - }).then(response => { - if (!response["ok"]) { - throw "failed to load wasm binary file at '" + binaryFile + "'"; - } - return response["arrayBuffer"](); - }).catch(() => getBinarySync(binaryFile)); - } else if (readAsync) { - return new Promise((resolve, reject) => { - readAsync(binaryFile, response => resolve(new Uint8Array(response)), reject); - }); - } - } - return Promise.resolve().then(() => getBinarySync(binaryFile)); -} - -function instantiateArrayBuffer(binaryFile, imports, receiver) { - return getBinaryPromise(binaryFile).then(binary => WebAssembly.instantiate(binary, imports)).then(instance => instance).then(receiver, reason => { - err("failed to asynchronously prepare wasm: " + reason); - if (isFileURI(wasmBinaryFile)) { - err("warning: Loading from a file URI (" + wasmBinaryFile + ") is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing"); - } - abort(reason); - }); -} - -function instantiateAsync(binary, binaryFile, imports, callback) { - if (!binary && typeof WebAssembly.instantiateStreaming == "function" && !isDataURI(binaryFile) && !isFileURI(binaryFile) && !ENVIRONMENT_IS_NODE && typeof fetch == "function") { - return fetch(binaryFile, { - credentials: "same-origin" - }).then(response => { - var result = WebAssembly.instantiateStreaming(response, imports); - return result.then(callback, function(reason) { - err("wasm streaming compile failed: " + reason); - err("falling back to ArrayBuffer instantiation"); - return instantiateArrayBuffer(binaryFile, imports, callback); - }); - }); - } - return instantiateArrayBuffer(binaryFile, imports, callback); -} - -function createWasm() { - var info = { - "env": wasmImports, - "wasi_snapshot_preview1": wasmImports - }; - function receiveInstance(instance, module) { - var exports = instance.exports; - wasmExports = exports; - wasmMemory = wasmExports["memory"]; - assert(wasmMemory, "memory not found in wasm exports"); - updateMemoryViews(); - wasmTable = wasmExports["__indirect_function_table"]; - assert(wasmTable, "table not found in wasm exports"); - addOnInit(wasmExports["__wasm_call_ctors"]); - removeRunDependency("wasm-instantiate"); - return exports; - } - addRunDependency("wasm-instantiate"); - var trueModule = Module; - function receiveInstantiationResult(result) { - assert(Module === trueModule, "the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"); - trueModule = null; - receiveInstance(result["instance"]); - } - if (Module["instantiateWasm"]) { - try { - return Module["instantiateWasm"](info, receiveInstance); - } catch (e) { - err("Module.instantiateWasm callback failed with error: " + e); - return false; - } - } - instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult); - return {}; -} - -var tempDouble; - -var tempI64; - -function legacyModuleProp(prop, newName, incomming = true) { - if (!Object.getOwnPropertyDescriptor(Module, prop)) { - Object.defineProperty(Module, prop, { - configurable: true, - get() { - let extra = incomming ? " (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)" : ""; - abort(`\`Module.${prop}\` has been replaced by \`${newName}\`` + extra); - } - }); - } -} - -function ignoredModuleProp(prop) { - if (Object.getOwnPropertyDescriptor(Module, prop)) { - abort(`\`Module.${prop}\` was supplied but \`${prop}\` not included in INCOMING_MODULE_JS_API`); - } -} - -function isExportedByForceFilesystem(name) { - return name === "FS_createPath" || name === "FS_createDataFile" || name === "FS_createPreloadedFile" || name === "FS_unlink" || name === "addRunDependency" || name === "FS_createLazyFile" || name === "FS_createDevice" || name === "removeRunDependency"; -} - -function missingGlobal(sym, msg) { - if (typeof globalThis !== "undefined") { - Object.defineProperty(globalThis, sym, { - configurable: true, - get() { - warnOnce("`" + sym + "` is not longer defined by emscripten. " + msg); - return undefined; - } - }); - } -} - -missingGlobal("buffer", "Please use HEAP8.buffer or wasmMemory.buffer"); - -missingGlobal("asm", "Please use wasmExports instead"); - -function missingLibrarySymbol(sym) { - if (typeof globalThis !== "undefined" && !Object.getOwnPropertyDescriptor(globalThis, sym)) { - Object.defineProperty(globalThis, sym, { - configurable: true, - get() { - var msg = "`" + sym + "` is a library symbol and not included by default; add it to your library.js __deps or to DEFAULT_LIBRARY_FUNCS_TO_INCLUDE on the command line"; - var librarySymbol = sym; - if (!librarySymbol.startsWith("_")) { - librarySymbol = "$" + sym; - } - msg += " (e.g. -sDEFAULT_LIBRARY_FUNCS_TO_INCLUDE='" + librarySymbol + "')"; - if (isExportedByForceFilesystem(sym)) { - msg += ". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"; - } - warnOnce(msg); - return undefined; - } - }); - } - unexportedRuntimeSymbol(sym); -} - -function unexportedRuntimeSymbol(sym) { - if (!Object.getOwnPropertyDescriptor(Module, sym)) { - Object.defineProperty(Module, sym, { - configurable: true, - get() { - var msg = "'" + sym + "' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the Emscripten FAQ)"; - if (isExportedByForceFilesystem(sym)) { - msg += ". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"; - } - abort(msg); - } - }); - } -} - -function dbg(text) { - console.warn.apply(console, arguments); -} - -function ExitStatus(status) { - this.name = "ExitStatus"; - this.message = `Program terminated with exit(${status})`; - this.status = status; -} - -var callRuntimeCallbacks = callbacks => { - while (callbacks.length > 0) { - callbacks.shift()(Module); - } -}; - -function getValue(ptr, type = "i8") { - if (type.endsWith("*")) type = "*"; - switch (type) { - case "i1": - return SAFE_HEAP_LOAD(ptr >> 0, 1, 0); - - case "i8": - return SAFE_HEAP_LOAD(ptr >> 0, 1, 0); - - case "i16": - return SAFE_HEAP_LOAD((ptr >> 1) * 2, 2, 0); - - case "i32": - return SAFE_HEAP_LOAD((ptr >> 2) * 4, 4, 0); - - case "i64": - abort("to do getValue(i64) use WASM_BIGINT"); - - case "float": - return SAFE_HEAP_LOAD_D((ptr >> 2) * 4, 4, 0); - - case "double": - return SAFE_HEAP_LOAD_D((ptr >> 3) * 8, 8, 0); - - case "*": - return SAFE_HEAP_LOAD((ptr >> 2) * 4, 4, 1); - - default: - abort(`invalid type for getValue: ${type}`); - } -} - -function getValue_safe(ptr, type = "i8") { - if (type.endsWith("*")) type = "*"; - switch (type) { - case "i1": - return HEAP8[ptr >> 0]; - - case "i8": - return HEAP8[ptr >> 0]; - - case "i16": - return HEAP16[ptr >> 1]; - - case "i32": - return HEAP32[ptr >> 2]; - - case "i64": - abort("to do getValue(i64) use WASM_BIGINT"); - - case "float": - return HEAPF32[ptr >> 2]; - - case "double": - return HEAPF64[ptr >> 3]; - - case "*": - return HEAPU32[ptr >> 2]; - - default: - abort(`invalid type for getValue: ${type}`); - } -} - -var ptrToString = ptr => { - assert(typeof ptr === "number"); - ptr >>>= 0; - return "0x" + ptr.toString(16).padStart(8, "0"); -}; - -function setValue(ptr, value, type = "i8") { - if (type.endsWith("*")) type = "*"; - switch (type) { - case "i1": - SAFE_HEAP_STORE(ptr >> 0, value, 1); - break; - - case "i8": - SAFE_HEAP_STORE(ptr >> 0, value, 1); - break; - - case "i16": - SAFE_HEAP_STORE((ptr >> 1) * 2, value, 2); - break; - - case "i32": - SAFE_HEAP_STORE((ptr >> 2) * 4, value, 4); - break; - - case "i64": - abort("to do setValue(i64) use WASM_BIGINT"); - - case "float": - SAFE_HEAP_STORE_D((ptr >> 2) * 4, value, 4); - break; - - case "double": - SAFE_HEAP_STORE_D((ptr >> 3) * 8, value, 8); - break; - - case "*": - SAFE_HEAP_STORE((ptr >> 2) * 4, value, 4); - break; - - default: - abort(`invalid type for setValue: ${type}`); - } -} - -function setValue_safe(ptr, value, type = "i8") { - if (type.endsWith("*")) type = "*"; - switch (type) { - case "i1": - HEAP8[ptr >> 0] = value; - break; - - case "i8": - HEAP8[ptr >> 0] = value; - break; - - case "i16": - HEAP16[ptr >> 1] = value; - break; - - case "i32": - HEAP32[ptr >> 2] = value; - break; - - case "i64": - abort("to do setValue(i64) use WASM_BIGINT"); - - case "float": - HEAPF32[ptr >> 2] = value; - break; - - case "double": - HEAPF64[ptr >> 3] = value; - break; - - case "*": - HEAPU32[ptr >> 2] = value; - break; - - default: - abort(`invalid type for setValue: ${type}`); - } -} - -function unSign(value, bits) { - if (value >= 0) { - return value; - } - return bits <= 32 ? 2 * Math.abs(1 << bits - 1) + value : Math.pow(2, bits) + value; -} - -var warnOnce = text => { - if (!warnOnce.shown) warnOnce.shown = {}; - if (!warnOnce.shown[text]) { - warnOnce.shown[text] = 1; - if (ENVIRONMENT_IS_NODE) text = "warning: " + text; - err(text); - } -}; - -var UTF8Decoder = typeof TextDecoder != "undefined" ? new TextDecoder("utf8") : undefined; - -var UTF8ArrayToString = (heapOrArray, idx, maxBytesToRead) => { - var endIdx = idx + maxBytesToRead; - var endPtr = idx; - while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr; - if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) { - return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr)); - } - var str = ""; - while (idx < endPtr) { - var u0 = heapOrArray[idx++]; - if (!(u0 & 128)) { - str += String.fromCharCode(u0); - continue; - } - var u1 = heapOrArray[idx++] & 63; - if ((u0 & 224) == 192) { - str += String.fromCharCode((u0 & 31) << 6 | u1); - continue; - } - var u2 = heapOrArray[idx++] & 63; - if ((u0 & 240) == 224) { - u0 = (u0 & 15) << 12 | u1 << 6 | u2; - } else { - if ((u0 & 248) != 240) warnOnce("Invalid UTF-8 leading byte " + ptrToString(u0) + " encountered when deserializing a UTF-8 string in wasm memory to a JS string!"); - u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heapOrArray[idx++] & 63; - } - if (u0 < 65536) { - str += String.fromCharCode(u0); - } else { - var ch = u0 - 65536; - str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023); - } - } - return str; -}; - -var UTF8ToString = (ptr, maxBytesToRead) => { - assert(typeof ptr == "number"); - return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : ""; -}; - -var ___assert_fail = (condition, filename, line, func) => { - abort(`Assertion failed: ${UTF8ToString(condition)}, at: ` + [ filename ? UTF8ToString(filename) : "unknown filename", line, func ? UTF8ToString(func) : "unknown function" ]); -}; - -var _abort = () => { - abort("native code called abort()"); -}; - -function _emscripten_set_main_loop_timing(mode, value) { - Browser.mainLoop.timingMode = mode; - Browser.mainLoop.timingValue = value; - if (!Browser.mainLoop.func) { - err("emscripten_set_main_loop_timing: Cannot set timing mode for main loop since a main loop does not exist! Call emscripten_set_main_loop first to set one up."); - return 1; - } - if (!Browser.mainLoop.running) { - Browser.mainLoop.running = true; - } - if (mode == 0) { - Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_setTimeout() { - var timeUntilNextTick = Math.max(0, Browser.mainLoop.tickStartTime + value - _emscripten_get_now()) | 0; - setTimeout(Browser.mainLoop.runner, timeUntilNextTick); - }; - Browser.mainLoop.method = "timeout"; - } else if (mode == 1) { - Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_rAF() { - Browser.requestAnimationFrame(Browser.mainLoop.runner); - }; - Browser.mainLoop.method = "rAF"; - } else if (mode == 2) { - if (typeof setImmediate == "undefined") { - var setImmediates = []; - var emscriptenMainLoopMessageId = "setimmediate"; - var Browser_setImmediate_messageHandler = event => { - if (event.data === emscriptenMainLoopMessageId || event.data.target === emscriptenMainLoopMessageId) { - event.stopPropagation(); - setImmediates.shift()(); - } - }; - addEventListener("message", Browser_setImmediate_messageHandler, true); - setImmediate = function Browser_emulated_setImmediate(func) { - setImmediates.push(func); - if (ENVIRONMENT_IS_WORKER) { - if (Module["setImmediates"] === undefined) Module["setImmediates"] = []; - Module["setImmediates"].push(func); - postMessage({ - target: emscriptenMainLoopMessageId - }); - } else postMessage(emscriptenMainLoopMessageId, "*"); - }; - } - Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_setImmediate() { - setImmediate(Browser.mainLoop.runner); - }; - Browser.mainLoop.method = "immediate"; - } - return 0; -} - -var _emscripten_get_now; - -_emscripten_get_now = () => performance.now(); - -function setMainLoop(browserIterationFunc, fps, simulateInfiniteLoop, arg, noSetTiming) { - assert(!Browser.mainLoop.func, "emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters."); - Browser.mainLoop.func = browserIterationFunc; - Browser.mainLoop.arg = arg; - var thisMainLoopId = Browser.mainLoop.currentlyRunningMainloop; - function checkIsRunning() { - if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) { - return false; - } - return true; - } - Browser.mainLoop.running = false; - Browser.mainLoop.runner = function Browser_mainLoop_runner() { - if (ABORT) return; - if (Browser.mainLoop.queue.length > 0) { - var start = Date.now(); - var blocker = Browser.mainLoop.queue.shift(); - blocker.func(blocker.arg); - if (Browser.mainLoop.remainingBlockers) { - var remaining = Browser.mainLoop.remainingBlockers; - var next = remaining % 1 == 0 ? remaining - 1 : Math.floor(remaining); - if (blocker.counted) { - Browser.mainLoop.remainingBlockers = next; - } else { - next = next + .5; - Browser.mainLoop.remainingBlockers = (8 * remaining + next) / 9; - } - } - out('main loop blocker "' + blocker.name + '" took ' + (Date.now() - start) + " ms"); - Browser.mainLoop.updateStatus(); - if (!checkIsRunning()) return; - setTimeout(Browser.mainLoop.runner, 0); - return; - } - if (!checkIsRunning()) return; - Browser.mainLoop.currentFrameNumber = Browser.mainLoop.currentFrameNumber + 1 | 0; - if (Browser.mainLoop.timingMode == 1 && Browser.mainLoop.timingValue > 1 && Browser.mainLoop.currentFrameNumber % Browser.mainLoop.timingValue != 0) { - Browser.mainLoop.scheduler(); - return; - } else if (Browser.mainLoop.timingMode == 0) { - Browser.mainLoop.tickStartTime = _emscripten_get_now(); - } - if (Browser.mainLoop.method === "timeout" && Module.ctx) { - warnOnce("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!"); - Browser.mainLoop.method = ""; - } - Browser.mainLoop.runIter(browserIterationFunc); - checkStackCookie(); - if (!checkIsRunning()) return; - if (typeof SDL == "object" && SDL.audio && SDL.audio.queueNewAudioData) SDL.audio.queueNewAudioData(); - Browser.mainLoop.scheduler(); - }; - if (!noSetTiming) { - if (fps && fps > 0) { - _emscripten_set_main_loop_timing(0, 1e3 / fps); - } else { - _emscripten_set_main_loop_timing(1, 1); - } - Browser.mainLoop.scheduler(); - } - if (simulateInfiniteLoop) { - throw "unwind"; - } -} - -var handleException = e => { - if (e instanceof ExitStatus || e == "unwind") { - return EXITSTATUS; - } - checkStackCookie(); - if (e instanceof WebAssembly.RuntimeError) { - if (_emscripten_stack_get_current() <= 0) { - err("Stack overflow detected. You can try increasing -sSTACK_SIZE (currently set to 65536)"); - } - } - quit_(1, e); -}; - -var SYSCALLS = { - varargs: undefined, - get() { - assert(SYSCALLS.varargs != undefined); - SYSCALLS.varargs += 4; - var ret = SAFE_HEAP_LOAD((SYSCALLS.varargs - 4 >> 2) * 4, 4, 0); - return ret; - }, - getStr(ptr) { - var ret = UTF8ToString(ptr); - return ret; - } -}; - -var _proc_exit = code => { - EXITSTATUS = code; - if (!keepRuntimeAlive()) { - if (Module["onExit"]) Module["onExit"](code); - ABORT = true; - } - quit_(code, new ExitStatus(code)); -}; - -var exitJS = (status, implicit) => { - EXITSTATUS = status; - checkUnflushedContent(); - if (keepRuntimeAlive() && !implicit) { - var msg = `program exited (with status: ${status}), but keepRuntimeAlive() is set (counter=${runtimeKeepaliveCounter}) due to an async operation, so halting execution but not exiting the runtime or preventing further async execution (you can use emscripten_force_exit, if you want to force a true shutdown)`; - err(msg); - } - _proc_exit(status); -}; - -var _exit = exitJS; - -var maybeExit = () => { - if (!keepRuntimeAlive()) { - try { - _exit(EXITSTATUS); - } catch (e) { - handleException(e); - } - } -}; - -var callUserCallback = func => { - if (ABORT) { - err("user callback triggered after runtime exited or application aborted. Ignoring."); - return; - } - try { - func(); - maybeExit(); - } catch (e) { - handleException(e); - } -}; - -var safeSetTimeout = (func, timeout) => setTimeout(() => { - callUserCallback(func); -}, timeout); - -var preloadPlugins = Module["preloadPlugins"] || []; - -var Browser = { - mainLoop: { - running: false, - scheduler: null, - method: "", - currentlyRunningMainloop: 0, - func: null, - arg: 0, - timingMode: 0, - timingValue: 0, - currentFrameNumber: 0, - queue: [], - pause: function() { - Browser.mainLoop.scheduler = null; - Browser.mainLoop.currentlyRunningMainloop++; - }, - resume: function() { - Browser.mainLoop.currentlyRunningMainloop++; - var timingMode = Browser.mainLoop.timingMode; - var timingValue = Browser.mainLoop.timingValue; - var func = Browser.mainLoop.func; - Browser.mainLoop.func = null; - setMainLoop(func, 0, false, Browser.mainLoop.arg, true); - _emscripten_set_main_loop_timing(timingMode, timingValue); - Browser.mainLoop.scheduler(); - }, - updateStatus: function() { - if (Module["setStatus"]) { - var message = Module["statusMessage"] || "Please wait..."; - var remaining = Browser.mainLoop.remainingBlockers; - var expected = Browser.mainLoop.expectedBlockers; - if (remaining) { - if (remaining < expected) { - Module["setStatus"](message + " (" + (expected - remaining) + "/" + expected + ")"); - } else { - Module["setStatus"](message); - } - } else { - Module["setStatus"](""); - } - } - }, - runIter: function(func) { - if (ABORT) return; - if (Module["preMainLoop"]) { - var preRet = Module["preMainLoop"](); - if (preRet === false) { - return; - } - } - callUserCallback(func); - if (Module["postMainLoop"]) Module["postMainLoop"](); - } - }, - isFullscreen: false, - pointerLock: false, - moduleContextCreatedCallbacks: [], - workers: [], - init: function() { - if (Browser.initted) return; - Browser.initted = true; - var imagePlugin = {}; - imagePlugin["canHandle"] = function imagePlugin_canHandle(name) { - return !Module.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/i.test(name); - }; - imagePlugin["handle"] = function imagePlugin_handle(byteArray, name, onload, onerror) { - var b = new Blob([ byteArray ], { - type: Browser.getMimetype(name) - }); - if (b.size !== byteArray.length) { - b = new Blob([ new Uint8Array(byteArray).buffer ], { - type: Browser.getMimetype(name) - }); - } - var url = URL.createObjectURL(b); - assert(typeof url == "string", "createObjectURL must return a url as a string"); - var img = new Image; - img.onload = () => { - assert(img.complete, "Image " + name + " could not be decoded"); - var canvas = document.createElement("canvas"); - canvas.width = img.width; - canvas.height = img.height; - var ctx = canvas.getContext("2d"); - ctx.drawImage(img, 0, 0); - preloadedImages[name] = canvas; - URL.revokeObjectURL(url); - if (onload) onload(byteArray); - }; - img.onerror = event => { - out("Image " + url + " could not be decoded"); - if (onerror) onerror(); - }; - img.src = url; - }; - preloadPlugins.push(imagePlugin); - var audioPlugin = {}; - audioPlugin["canHandle"] = function audioPlugin_canHandle(name) { - return !Module.noAudioDecoding && name.substr(-4) in { - ".ogg": 1, - ".wav": 1, - ".mp3": 1 - }; - }; - audioPlugin["handle"] = function audioPlugin_handle(byteArray, name, onload, onerror) { - var done = false; - function finish(audio) { - if (done) return; - done = true; - preloadedAudios[name] = audio; - if (onload) onload(byteArray); - } - function fail() { - if (done) return; - done = true; - preloadedAudios[name] = new Audio; - if (onerror) onerror(); - } - var b = new Blob([ byteArray ], { - type: Browser.getMimetype(name) - }); - var url = URL.createObjectURL(b); - assert(typeof url == "string", "createObjectURL must return a url as a string"); - var audio = new Audio; - audio.addEventListener("canplaythrough", () => finish(audio), false); - audio.onerror = function audio_onerror(event) { - if (done) return; - err("warning: browser could not fully decode audio " + name + ", trying slower base64 approach"); - function encode64(data) { - var BASE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - var PAD = "="; - var ret = ""; - var leftchar = 0; - var leftbits = 0; - for (var i = 0; i < data.length; i++) { - leftchar = leftchar << 8 | data[i]; - leftbits += 8; - while (leftbits >= 6) { - var curr = leftchar >> leftbits - 6 & 63; - leftbits -= 6; - ret += BASE[curr]; - } - } - if (leftbits == 2) { - ret += BASE[(leftchar & 3) << 4]; - ret += PAD + PAD; - } else if (leftbits == 4) { - ret += BASE[(leftchar & 15) << 2]; - ret += PAD; - } - return ret; - } - audio.src = "data:audio/x-" + name.substr(-3) + ";base64," + encode64(byteArray); - finish(audio); - }; - audio.src = url; - safeSetTimeout(() => { - finish(audio); - }, 1e4); - }; - preloadPlugins.push(audioPlugin); - function pointerLockChange() { - Browser.pointerLock = document["pointerLockElement"] === Module["canvas"] || document["mozPointerLockElement"] === Module["canvas"] || document["webkitPointerLockElement"] === Module["canvas"] || document["msPointerLockElement"] === Module["canvas"]; - } - var canvas = Module["canvas"]; - if (canvas) { - canvas.requestPointerLock = canvas["requestPointerLock"] || canvas["mozRequestPointerLock"] || canvas["webkitRequestPointerLock"] || canvas["msRequestPointerLock"] || (() => {}); - canvas.exitPointerLock = document["exitPointerLock"] || document["mozExitPointerLock"] || document["webkitExitPointerLock"] || document["msExitPointerLock"] || (() => {}); - canvas.exitPointerLock = canvas.exitPointerLock.bind(document); - document.addEventListener("pointerlockchange", pointerLockChange, false); - document.addEventListener("mozpointerlockchange", pointerLockChange, false); - document.addEventListener("webkitpointerlockchange", pointerLockChange, false); - document.addEventListener("mspointerlockchange", pointerLockChange, false); - if (Module["elementPointerLock"]) { - canvas.addEventListener("click", ev => { - if (!Browser.pointerLock && Module["canvas"].requestPointerLock) { - Module["canvas"].requestPointerLock(); - ev.preventDefault(); - } - }, false); - } - } - }, - createContext: function(canvas, useWebGL, setInModule, webGLContextAttributes) { - if (useWebGL && Module.ctx && canvas == Module.canvas) return Module.ctx; - var ctx; - var contextHandle; - if (useWebGL) { - var contextAttributes = { - antialias: false, - alpha: false, - majorVersion: 1 - }; - if (webGLContextAttributes) { - for (var attribute in webGLContextAttributes) { - contextAttributes[attribute] = webGLContextAttributes[attribute]; - } - } - if (typeof GL != "undefined") { - contextHandle = GL.createContext(canvas, contextAttributes); - if (contextHandle) { - ctx = GL.getContext(contextHandle).GLctx; - } - } - } else { - ctx = canvas.getContext("2d"); - } - if (!ctx) return null; - if (setInModule) { - if (!useWebGL) assert(typeof GLctx == "undefined", "cannot set in module if GLctx is used, but we are a non-GL context that would replace it"); - Module.ctx = ctx; - if (useWebGL) GL.makeContextCurrent(contextHandle); - Module.useWebGL = useWebGL; - Browser.moduleContextCreatedCallbacks.forEach(callback => callback()); - Browser.init(); - } - return ctx; - }, - destroyContext: function(canvas, useWebGL, setInModule) {}, - fullscreenHandlersInstalled: false, - lockPointer: undefined, - resizeCanvas: undefined, - requestFullscreen: function(lockPointer, resizeCanvas) { - Browser.lockPointer = lockPointer; - Browser.resizeCanvas = resizeCanvas; - if (typeof Browser.lockPointer == "undefined") Browser.lockPointer = true; - if (typeof Browser.resizeCanvas == "undefined") Browser.resizeCanvas = false; - var canvas = Module["canvas"]; - function fullscreenChange() { - Browser.isFullscreen = false; - var canvasContainer = canvas.parentNode; - if ((document["fullscreenElement"] || document["mozFullScreenElement"] || document["msFullscreenElement"] || document["webkitFullscreenElement"] || document["webkitCurrentFullScreenElement"]) === canvasContainer) { - canvas.exitFullscreen = Browser.exitFullscreen; - if (Browser.lockPointer) canvas.requestPointerLock(); - Browser.isFullscreen = true; - if (Browser.resizeCanvas) { - Browser.setFullscreenCanvasSize(); - } else { - Browser.updateCanvasDimensions(canvas); - } - } else { - canvasContainer.parentNode.insertBefore(canvas, canvasContainer); - canvasContainer.parentNode.removeChild(canvasContainer); - if (Browser.resizeCanvas) { - Browser.setWindowedCanvasSize(); - } else { - Browser.updateCanvasDimensions(canvas); - } - } - if (Module["onFullScreen"]) Module["onFullScreen"](Browser.isFullscreen); - if (Module["onFullscreen"]) Module["onFullscreen"](Browser.isFullscreen); - } - if (!Browser.fullscreenHandlersInstalled) { - Browser.fullscreenHandlersInstalled = true; - document.addEventListener("fullscreenchange", fullscreenChange, false); - document.addEventListener("mozfullscreenchange", fullscreenChange, false); - document.addEventListener("webkitfullscreenchange", fullscreenChange, false); - document.addEventListener("MSFullscreenChange", fullscreenChange, false); - } - var canvasContainer = document.createElement("div"); - canvas.parentNode.insertBefore(canvasContainer, canvas); - canvasContainer.appendChild(canvas); - canvasContainer.requestFullscreen = canvasContainer["requestFullscreen"] || canvasContainer["mozRequestFullScreen"] || canvasContainer["msRequestFullscreen"] || (canvasContainer["webkitRequestFullscreen"] ? () => canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"]) : null) || (canvasContainer["webkitRequestFullScreen"] ? () => canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"]) : null); - canvasContainer.requestFullscreen(); - }, - requestFullScreen: function() { - abort("Module.requestFullScreen has been replaced by Module.requestFullscreen (without a capital S)"); - }, - exitFullscreen: function() { - if (!Browser.isFullscreen) { - return false; - } - var CFS = document["exitFullscreen"] || document["cancelFullScreen"] || document["mozCancelFullScreen"] || document["msExitFullscreen"] || document["webkitCancelFullScreen"] || (() => {}); - CFS.apply(document, []); - return true; - }, - nextRAF: 0, - fakeRequestAnimationFrame: function(func) { - var now = Date.now(); - if (Browser.nextRAF === 0) { - Browser.nextRAF = now + 1e3 / 60; - } else { - while (now + 2 >= Browser.nextRAF) { - Browser.nextRAF += 1e3 / 60; - } - } - var delay = Math.max(Browser.nextRAF - now, 0); - setTimeout(func, delay); - }, - requestAnimationFrame: function(func) { - if (typeof requestAnimationFrame == "function") { - requestAnimationFrame(func); - return; - } - var RAF = Browser.fakeRequestAnimationFrame; - RAF(func); - }, - safeSetTimeout: function(func, timeout) { - return safeSetTimeout(func, timeout); - }, - safeRequestAnimationFrame: function(func) { - return Browser.requestAnimationFrame(() => { - callUserCallback(func); - }); - }, - getMimetype: function(name) { - return { - "jpg": "image/jpeg", - "jpeg": "image/jpeg", - "png": "image/png", - "bmp": "image/bmp", - "ogg": "audio/ogg", - "wav": "audio/wav", - "mp3": "audio/mpeg" - }[name.substr(name.lastIndexOf(".") + 1)]; - }, - getUserMedia: function(func) { - if (!window.getUserMedia) { - window.getUserMedia = navigator["getUserMedia"] || navigator["mozGetUserMedia"]; - } - window.getUserMedia(func); - }, - getMovementX: function(event) { - return event["movementX"] || event["mozMovementX"] || event["webkitMovementX"] || 0; - }, - getMovementY: function(event) { - return event["movementY"] || event["mozMovementY"] || event["webkitMovementY"] || 0; - }, - getMouseWheelDelta: function(event) { - var delta = 0; - switch (event.type) { - case "DOMMouseScroll": - delta = event.detail / 3; - break; - - case "mousewheel": - delta = event.wheelDelta / 120; - break; - - case "wheel": - delta = event.deltaY; - switch (event.deltaMode) { - case 0: - delta /= 100; - break; - - case 1: - delta /= 3; - break; - - case 2: - delta *= 80; - break; - - default: - throw "unrecognized mouse wheel delta mode: " + event.deltaMode; - } - break; - - default: - throw "unrecognized mouse wheel event: " + event.type; - } - return delta; - }, - mouseX: 0, - mouseY: 0, - mouseMovementX: 0, - mouseMovementY: 0, - touches: {}, - lastTouches: {}, - calculateMouseEvent: function(event) { - if (Browser.pointerLock) { - if (event.type != "mousemove" && "mozMovementX" in event) { - Browser.mouseMovementX = Browser.mouseMovementY = 0; - } else { - Browser.mouseMovementX = Browser.getMovementX(event); - Browser.mouseMovementY = Browser.getMovementY(event); - } - if (typeof SDL != "undefined") { - Browser.mouseX = SDL.mouseX + Browser.mouseMovementX; - Browser.mouseY = SDL.mouseY + Browser.mouseMovementY; - } else { - Browser.mouseX += Browser.mouseMovementX; - Browser.mouseY += Browser.mouseMovementY; - } - } else { - var rect = Module["canvas"].getBoundingClientRect(); - var cw = Module["canvas"].width; - var ch = Module["canvas"].height; - var scrollX = typeof window.scrollX != "undefined" ? window.scrollX : window.pageXOffset; - var scrollY = typeof window.scrollY != "undefined" ? window.scrollY : window.pageYOffset; - assert(typeof scrollX != "undefined" && typeof scrollY != "undefined", "Unable to retrieve scroll position, mouse positions likely broken."); - if (event.type === "touchstart" || event.type === "touchend" || event.type === "touchmove") { - var touch = event.touch; - if (touch === undefined) { - return; - } - var adjustedX = touch.pageX - (scrollX + rect.left); - var adjustedY = touch.pageY - (scrollY + rect.top); - adjustedX = adjustedX * (cw / rect.width); - adjustedY = adjustedY * (ch / rect.height); - var coords = { - x: adjustedX, - y: adjustedY - }; - if (event.type === "touchstart") { - Browser.lastTouches[touch.identifier] = coords; - Browser.touches[touch.identifier] = coords; - } else if (event.type === "touchend" || event.type === "touchmove") { - var last = Browser.touches[touch.identifier]; - if (!last) last = coords; - Browser.lastTouches[touch.identifier] = last; - Browser.touches[touch.identifier] = coords; - } - return; - } - var x = event.pageX - (scrollX + rect.left); - var y = event.pageY - (scrollY + rect.top); - x = x * (cw / rect.width); - y = y * (ch / rect.height); - Browser.mouseMovementX = x - Browser.mouseX; - Browser.mouseMovementY = y - Browser.mouseY; - Browser.mouseX = x; - Browser.mouseY = y; - } - }, - resizeListeners: [], - updateResizeListeners: function() { - var canvas = Module["canvas"]; - Browser.resizeListeners.forEach(listener => listener(canvas.width, canvas.height)); - }, - setCanvasSize: function(width, height, noUpdates) { - var canvas = Module["canvas"]; - Browser.updateCanvasDimensions(canvas, width, height); - if (!noUpdates) Browser.updateResizeListeners(); - }, - windowedWidth: 0, - windowedHeight: 0, - setFullscreenCanvasSize: function() { - if (typeof SDL != "undefined") { - var flags = SAFE_HEAP_LOAD((SDL.screen >> 2) * 4, 4, 1); - flags = flags | 8388608; - SAFE_HEAP_STORE((SDL.screen >> 2) * 4, flags, 4); - } - Browser.updateCanvasDimensions(Module["canvas"]); - Browser.updateResizeListeners(); - }, - setWindowedCanvasSize: function() { - if (typeof SDL != "undefined") { - var flags = SAFE_HEAP_LOAD((SDL.screen >> 2) * 4, 4, 1); - flags = flags & ~8388608; - SAFE_HEAP_STORE((SDL.screen >> 2) * 4, flags, 4); - } - Browser.updateCanvasDimensions(Module["canvas"]); - Browser.updateResizeListeners(); - }, - updateCanvasDimensions: function(canvas, wNative, hNative) { - if (wNative && hNative) { - canvas.widthNative = wNative; - canvas.heightNative = hNative; - } else { - wNative = canvas.widthNative; - hNative = canvas.heightNative; - } - var w = wNative; - var h = hNative; - if (Module["forcedAspectRatio"] && Module["forcedAspectRatio"] > 0) { - if (w / h < Module["forcedAspectRatio"]) { - w = Math.round(h * Module["forcedAspectRatio"]); - } else { - h = Math.round(w / Module["forcedAspectRatio"]); - } - } - if ((document["fullscreenElement"] || document["mozFullScreenElement"] || document["msFullscreenElement"] || document["webkitFullscreenElement"] || document["webkitCurrentFullScreenElement"]) === canvas.parentNode && typeof screen != "undefined") { - var factor = Math.min(screen.width / w, screen.height / h); - w = Math.round(w * factor); - h = Math.round(h * factor); - } - if (Browser.resizeCanvas) { - if (canvas.width != w) canvas.width = w; - if (canvas.height != h) canvas.height = h; - if (typeof canvas.style != "undefined") { - canvas.style.removeProperty("width"); - canvas.style.removeProperty("height"); - } - } else { - if (canvas.width != wNative) canvas.width = wNative; - if (canvas.height != hNative) canvas.height = hNative; - if (typeof canvas.style != "undefined") { - if (w != wNative || h != hNative) { - canvas.style.setProperty("width", w + "px", "important"); - canvas.style.setProperty("height", h + "px", "important"); - } else { - canvas.style.removeProperty("width"); - canvas.style.removeProperty("height"); - } - } - } - } -}; - -function _emscripten_cancel_main_loop() { - Browser.mainLoop.pause(); - Browser.mainLoop.func = null; -} - -var _emscripten_memcpy_big = (dest, src, num) => HEAPU8.copyWithin(dest, src, src + num); - -var getHeapMax = () => HEAPU8.length; - -var abortOnCannotGrowMemory = requestedSize => { - abort(`Cannot enlarge memory arrays to size ${requestedSize} bytes (OOM). Either (1) compile with -sINITIAL_MEMORY=X with X higher than the current value ${HEAP8.length}, (2) compile with -sALLOW_MEMORY_GROWTH which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -sABORTING_MALLOC=0`); -}; - -var _emscripten_resize_heap = requestedSize => { - var oldSize = HEAPU8.length; - requestedSize >>>= 0; - abortOnCannotGrowMemory(requestedSize); -}; - -var wasmTableMirror = []; - -var getWasmTableEntry = funcPtr => { - var func = wasmTableMirror[funcPtr]; - if (!func) { - if (funcPtr >= wasmTableMirror.length) wasmTableMirror.length = funcPtr + 1; - wasmTableMirror[funcPtr] = func = wasmTable.get(funcPtr); - } - assert(wasmTable.get(funcPtr) == func, "JavaScript-side Wasm function table mirror is out of date!"); - return func; -}; - -function _emscripten_set_main_loop(func, fps, simulateInfiniteLoop) { - var browserIterationFunc = getWasmTableEntry(func); - setMainLoop(browserIterationFunc, fps, simulateInfiniteLoop); -} - -var _fd_close = fd => { - abort("fd_close called without SYSCALLS_REQUIRE_FILESYSTEM"); -}; - -function convertI32PairToI53Checked(lo, hi) { - assert(lo == lo >>> 0 || lo == (lo | 0)); - assert(hi === (hi | 0)); - return hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN; -} - -function _fd_seek(fd, offset_low, offset_high, whence, newOffset) { - var offset = convertI32PairToI53Checked(offset_low, offset_high); - return 70; -} - -var printCharBuffers = [ null, [], [] ]; - -var printChar = (stream, curr) => { - var buffer = printCharBuffers[stream]; - assert(buffer); - if (curr === 0 || curr === 10) { - (stream === 1 ? out : err)(UTF8ArrayToString(buffer, 0)); - buffer.length = 0; - } else { - buffer.push(curr); - } -}; - -var flush_NO_FILESYSTEM = () => { - _fflush(0); - if (printCharBuffers[1].length) printChar(1, 10); - if (printCharBuffers[2].length) printChar(2, 10); -}; - -var _fd_write = (fd, iov, iovcnt, pnum) => { - var num = 0; - for (var i = 0; i < iovcnt; i++) { - var ptr = SAFE_HEAP_LOAD((iov >> 2) * 4, 4, 1); - var len = SAFE_HEAP_LOAD((iov + 4 >> 2) * 4, 4, 1); - iov += 8; - for (var j = 0; j < len; j++) { - printChar(fd, SAFE_HEAP_LOAD(ptr + j, 1, 1)); - } - num += len; - } - SAFE_HEAP_STORE((pnum >> 2) * 4, num, 4); - return 0; -}; - -var withStackSave = f => { - var stack = stackSave(); - var ret = f(); - stackRestore(stack); - return ret; -}; - -var lengthBytesUTF8 = str => { - var len = 0; - for (var i = 0; i < str.length; ++i) { - var c = str.charCodeAt(i); - if (c <= 127) { - len++; - } else if (c <= 2047) { - len += 2; - } else if (c >= 55296 && c <= 57343) { - len += 4; - ++i; - } else { - len += 3; - } - } - return len; -}; - -var stringToUTF8Array = (str, heap, outIdx, maxBytesToWrite) => { - assert(typeof str === "string"); - if (!(maxBytesToWrite > 0)) return 0; - var startIdx = outIdx; - var endIdx = outIdx + maxBytesToWrite - 1; - for (var i = 0; i < str.length; ++i) { - var u = str.charCodeAt(i); - if (u >= 55296 && u <= 57343) { - var u1 = str.charCodeAt(++i); - u = 65536 + ((u & 1023) << 10) | u1 & 1023; - } - if (u <= 127) { - if (outIdx >= endIdx) break; - heap[outIdx++] = u; - } else if (u <= 2047) { - if (outIdx + 1 >= endIdx) break; - heap[outIdx++] = 192 | u >> 6; - heap[outIdx++] = 128 | u & 63; - } else if (u <= 65535) { - if (outIdx + 2 >= endIdx) break; - heap[outIdx++] = 224 | u >> 12; - heap[outIdx++] = 128 | u >> 6 & 63; - heap[outIdx++] = 128 | u & 63; - } else { - if (outIdx + 3 >= endIdx) break; - if (u > 1114111) warnOnce("Invalid Unicode code point " + ptrToString(u) + " encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF)."); - heap[outIdx++] = 240 | u >> 18; - heap[outIdx++] = 128 | u >> 12 & 63; - heap[outIdx++] = 128 | u >> 6 & 63; - heap[outIdx++] = 128 | u & 63; - } - } - heap[outIdx] = 0; - return outIdx - startIdx; -}; - -var stringToUTF8 = (str, outPtr, maxBytesToWrite) => { - assert(typeof maxBytesToWrite == "number", "stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"); - return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite); -}; - -var stringToUTF8OnStack = str => { - var size = lengthBytesUTF8(str) + 1; - var ret = stackAlloc(size); - stringToUTF8(str, ret, size); - return ret; -}; - -var WebGPU = { - errorCallback: function(callback, type, message, userdata) { - withStackSave(() => { - var messagePtr = stringToUTF8OnStack(message); - getWasmTableEntry(callback)(type, messagePtr, userdata); - }); - }, - initManagers: function() { - if (WebGPU.mgrDevice) return; - function Manager() { - this.objects = {}; - this.nextId = 1; - this.create = function(object, wrapper = {}) { - var id = this.nextId++; - assert(typeof this.objects[id] == "undefined"); - wrapper.refcount = 1; - wrapper.object = object; - this.objects[id] = wrapper; - return id; - }; - this.get = function(id) { - if (!id) return undefined; - var o = this.objects[id]; - assert(typeof o != "undefined"); - return o.object; - }; - this.reference = function(id) { - var o = this.objects[id]; - assert(typeof o != "undefined"); - o.refcount++; - }; - this.release = function(id) { - var o = this.objects[id]; - assert(typeof o != "undefined"); - assert(o.refcount > 0); - o.refcount--; - if (o.refcount <= 0) { - delete this.objects[id]; - } - }; - } - WebGPU.mgrSurface = WebGPU.mgrSurface || new Manager; - WebGPU.mgrSwapChain = WebGPU.mgrSwapChain || new Manager; - WebGPU.mgrAdapter = WebGPU.mgrAdapter || new Manager; - WebGPU.mgrDevice = WebGPU.mgrDevice || new Manager; - WebGPU.mgrQueue = WebGPU.mgrQueue || new Manager; - WebGPU.mgrCommandBuffer = WebGPU.mgrCommandBuffer || new Manager; - WebGPU.mgrCommandEncoder = WebGPU.mgrCommandEncoder || new Manager; - WebGPU.mgrRenderPassEncoder = WebGPU.mgrRenderPassEncoder || new Manager; - WebGPU.mgrComputePassEncoder = WebGPU.mgrComputePassEncoder || new Manager; - WebGPU.mgrBindGroup = WebGPU.mgrBindGroup || new Manager; - WebGPU.mgrBuffer = WebGPU.mgrBuffer || new Manager; - WebGPU.mgrSampler = WebGPU.mgrSampler || new Manager; - WebGPU.mgrTexture = WebGPU.mgrTexture || new Manager; - WebGPU.mgrTextureView = WebGPU.mgrTextureView || new Manager; - WebGPU.mgrQuerySet = WebGPU.mgrQuerySet || new Manager; - WebGPU.mgrBindGroupLayout = WebGPU.mgrBindGroupLayout || new Manager; - WebGPU.mgrPipelineLayout = WebGPU.mgrPipelineLayout || new Manager; - WebGPU.mgrRenderPipeline = WebGPU.mgrRenderPipeline || new Manager; - WebGPU.mgrComputePipeline = WebGPU.mgrComputePipeline || new Manager; - WebGPU.mgrShaderModule = WebGPU.mgrShaderModule || new Manager; - WebGPU.mgrRenderBundleEncoder = WebGPU.mgrRenderBundleEncoder || new Manager; - WebGPU.mgrRenderBundle = WebGPU.mgrRenderBundle || new Manager; - }, - makeColor: function(ptr) { - return { - "r": SAFE_HEAP_LOAD_D((ptr >> 3) * 8, 8, 0), - "g": SAFE_HEAP_LOAD_D((ptr + 8 >> 3) * 8, 8, 0), - "b": SAFE_HEAP_LOAD_D((ptr + 16 >> 3) * 8, 8, 0), - "a": SAFE_HEAP_LOAD_D((ptr + 24 >> 3) * 8, 8, 0) - }; - }, - makeExtent3D: function(ptr) { - return { - "width": SAFE_HEAP_LOAD((ptr >> 2) * 4, 4, 1), - "height": SAFE_HEAP_LOAD((ptr + 4 >> 2) * 4, 4, 1), - "depthOrArrayLayers": SAFE_HEAP_LOAD((ptr + 8 >> 2) * 4, 4, 1) - }; - }, - makeOrigin3D: function(ptr) { - return { - "x": SAFE_HEAP_LOAD((ptr >> 2) * 4, 4, 1), - "y": SAFE_HEAP_LOAD((ptr + 4 >> 2) * 4, 4, 1), - "z": SAFE_HEAP_LOAD((ptr + 8 >> 2) * 4, 4, 1) - }; - }, - makeImageCopyTexture: function(ptr) { - assert(ptr); - assert(SAFE_HEAP_LOAD((ptr >> 2) * 4, 4, 1) === 0); - return { - "texture": WebGPU.mgrTexture.get(SAFE_HEAP_LOAD((ptr + 4 >> 2) * 4, 4, 1)), - "mipLevel": SAFE_HEAP_LOAD((ptr + 8 >> 2) * 4, 4, 1), - "origin": WebGPU.makeOrigin3D(ptr + 12), - "aspect": WebGPU.TextureAspect[SAFE_HEAP_LOAD((ptr + 24 >> 2) * 4, 4, 1)] - }; - }, - makeTextureDataLayout: function(ptr) { - assert(ptr); - assert(SAFE_HEAP_LOAD((ptr >> 2) * 4, 4, 1) === 0); - var bytesPerRow = SAFE_HEAP_LOAD((ptr + 16 >> 2) * 4, 4, 1); - var rowsPerImage = SAFE_HEAP_LOAD((ptr + 20 >> 2) * 4, 4, 1); - return { - "offset": SAFE_HEAP_LOAD((ptr + 4 + 8 >> 2) * 4, 4, 1) * 4294967296 + SAFE_HEAP_LOAD((ptr + 8 >> 2) * 4, 4, 1), - "bytesPerRow": bytesPerRow === 4294967295 ? undefined : bytesPerRow, - "rowsPerImage": rowsPerImage === 4294967295 ? undefined : rowsPerImage - }; - }, - makeImageCopyBuffer: function(ptr) { - assert(ptr); - assert(SAFE_HEAP_LOAD((ptr >> 2) * 4, 4, 1) === 0); - var layoutPtr = ptr + 8; - var bufferCopyView = WebGPU.makeTextureDataLayout(layoutPtr); - bufferCopyView["buffer"] = WebGPU.mgrBuffer.get(SAFE_HEAP_LOAD((ptr + 32 >> 2) * 4, 4, 1)); - return bufferCopyView; - }, - makePipelineConstants: function(constantCount, constantsPtr) { - if (!constantCount) return; - var constants = {}; - for (var i = 0; i < constantCount; ++i) { - var entryPtr = constantsPtr + 16 * i; - var key = UTF8ToString(SAFE_HEAP_LOAD((entryPtr + 4 >> 2) * 4, 4, 1)); - constants[key] = SAFE_HEAP_LOAD_D((entryPtr + 8 >> 3) * 8, 8, 0); - } - return constants; - }, - makePipelineLayout: function(layoutPtr) { - if (!layoutPtr) return "auto"; - return WebGPU.mgrPipelineLayout.get(layoutPtr); - }, - makeProgrammableStageDescriptor: function(ptr) { - if (!ptr) return undefined; - assert(ptr); - assert(SAFE_HEAP_LOAD((ptr >> 2) * 4, 4, 1) === 0); - return { - "module": WebGPU.mgrShaderModule.get(SAFE_HEAP_LOAD((ptr + 4 >> 2) * 4, 4, 1)), - "entryPoint": UTF8ToString(SAFE_HEAP_LOAD((ptr + 8 >> 2) * 4, 4, 1)), - "constants": WebGPU.makePipelineConstants(SAFE_HEAP_LOAD((ptr + 12 >> 2) * 4, 4, 1), SAFE_HEAP_LOAD((ptr + 16 >> 2) * 4, 4, 1)) - }; - }, - DeviceLostReason: { - undefined: 0, - destroyed: 1 - }, - PreferredFormat: { - rgba8unorm: 18, - bgra8unorm: 23 - }, - BufferMapState: [ "unmapped", "pending", "mapped" ], - AddressMode: [ "repeat", "mirror-repeat", "clamp-to-edge" ], - BlendFactor: [ "zero", "one", "src", "one-minus-src", "src-alpha", "one-minus-src-alpha", "dst", "one-minus-dst", "dst-alpha", "one-minus-dst-alpha", "src-alpha-saturated", "constant", "one-minus-constant" ], - BlendOperation: [ "add", "subtract", "reverse-subtract", "min", "max" ], - BufferBindingType: [ , "uniform", "storage", "read-only-storage" ], - CompareFunction: [ , "never", "less", "less-equal", "greater", "greater-equal", "equal", "not-equal", "always" ], - CompilationInfoRequestStatus: [ "success", "error", "device-lost", "unknown" ], - ComputePassTimestampLocation: [ "beginning", "end" ], - CullMode: [ "none", "front", "back" ], - ErrorFilter: [ "validation", "out-of-memory", "internal" ], - FeatureName: [ , "depth-clip-control", "depth32float-stencil8", "timestamp-query", "pipeline-statistics-query", "texture-compression-bc", "texture-compression-etc2", "texture-compression-astc", "indirect-first-instance", "shader-f16", "rg11b10ufloat-renderable", "bgra8unorm-storage", "float32filterable" ], - FilterMode: [ "nearest", "linear" ], - FrontFace: [ "ccw", "cw" ], - IndexFormat: [ , "uint16", "uint32" ], - LoadOp: [ , "clear", "load" ], - MipmapFilterMode: [ "nearest", "linear" ], - PipelineStatisticName: [ "vertex-shader-invocations", "clipper-invocations", "clipper-primitives-out", "fragment-shader-invocations", "compute-shader-invocations" ], - PowerPreference: [ , "low-power", "high-performance" ], - PrimitiveTopology: [ "point-list", "line-list", "line-strip", "triangle-list", "triangle-strip" ], - QueryType: [ "occlusion", "pipeline-statistics", "timestamp" ], - RenderPassTimestampLocation: [ "beginning", "end" ], - SamplerBindingType: [ , "filtering", "non-filtering", "comparison" ], - StencilOperation: [ "keep", "zero", "replace", "invert", "increment-clamp", "decrement-clamp", "increment-wrap", "decrement-wrap" ], - StorageTextureAccess: [ , "write-only" ], - StoreOp: [ , "store", "discard" ], - TextureAspect: [ "all", "stencil-only", "depth-only" ], - TextureDimension: [ "1d", "2d", "3d" ], - TextureFormat: [ , "r8unorm", "r8snorm", "r8uint", "r8sint", "r16uint", "r16sint", "r16float", "rg8unorm", "rg8snorm", "rg8uint", "rg8sint", "r32float", "r32uint", "r32sint", "rg16uint", "rg16sint", "rg16float", "rgba8unorm", "rgba8unorm-srgb", "rgba8snorm", "rgba8uint", "rgba8sint", "bgra8unorm", "bgra8unorm-srgb", "rgb10a2unorm", "rg11b10ufloat", "rgb9e5ufloat", "rg32float", "rg32uint", "rg32sint", "rgba16uint", "rgba16sint", "rgba16float", "rgba32float", "rgba32uint", "rgba32sint", "stencil8", "depth16unorm", "depth24plus", "depth24plus-stencil8", "depth32float", "depth32float-stencil8", "bc1-rgba-unorm", "bc1-rgba-unorm-srgb", "bc2-rgba-unorm", "bc2-rgba-unorm-srgb", "bc3-rgba-unorm", "bc3-rgba-unorm-srgb", "bc4-r-unorm", "bc4-r-snorm", "bc5-rg-unorm", "bc5-rg-snorm", "bc6h-rgb-ufloat", "bc6h-rgb-float", "bc7-rgba-unorm", "bc7-rgba-unorm-srgb", "etc2-rgb8unorm", "etc2-rgb8unorm-srgb", "etc2-rgb8a1unorm", "etc2-rgb8a1unorm-srgb", "etc2-rgba8unorm", "etc2-rgba8unorm-srgb", "eac-r11unorm", "eac-r11snorm", "eac-rg11unorm", "eac-rg11snorm", "astc-4x4-unorm", "astc-4x4-unorm-srgb", "astc-5x4-unorm", "astc-5x4-unorm-srgb", "astc-5x5-unorm", "astc-5x5-unorm-srgb", "astc-6x5-unorm", "astc-6x5-unorm-srgb", "astc-6x6-unorm", "astc-6x6-unorm-srgb", "astc-8x5-unorm", "astc-8x5-unorm-srgb", "astc-8x6-unorm", "astc-8x6-unorm-srgb", "astc-8x8-unorm", "astc-8x8-unorm-srgb", "astc-10x5-unorm", "astc-10x5-unorm-srgb", "astc-10x6-unorm", "astc-10x6-unorm-srgb", "astc-10x8-unorm", "astc-10x8-unorm-srgb", "astc-10x10-unorm", "astc-10x10-unorm-srgb", "astc-12x10-unorm", "astc-12x10-unorm-srgb", "astc-12x12-unorm", "astc-12x12-unorm-srgb" ], - TextureSampleType: [ , "float", "unfilterable-float", "depth", "sint", "uint" ], - TextureViewDimension: [ , "1d", "2d", "2d-array", "cube", "cube-array", "3d" ], - VertexFormat: [ , "uint8x2", "uint8x4", "sint8x2", "sint8x4", "unorm8x2", "unorm8x4", "snorm8x2", "snorm8x4", "uint16x2", "uint16x4", "sint16x2", "sint16x4", "unorm16x2", "unorm16x4", "snorm16x2", "snorm16x4", "float16x2", "float16x4", "float32", "float32x2", "float32x3", "float32x4", "uint32", "uint32x2", "uint32x3", "uint32x4", "sint32", "sint32x2", "sint32x3", "sint32x4" ], - VertexStepMode: [ "vertex", "instance" ], - FeatureNameString2Enum: { - undefined: "0", - "depth-clip-control": "1", - "depth32float-stencil8": "2", - "timestamp-query": "3", - "pipeline-statistics-query": "4", - "texture-compression-bc": "5", - "texture-compression-etc2": "6", - "texture-compression-astc": "7", - "indirect-first-instance": "8", - "shader-f16": "9", - "rg11b10ufloat-renderable": "10", - "bgra8unorm-storage": "11", - float32filterable: "12" - } -}; - -function _wgpuAdapterRelease(id) { - WebGPU.mgrAdapter.release(id); -} - -function _wgpuAdapterRequestDevice(adapterId, descriptor, callback, userdata) { - var adapter = WebGPU.mgrAdapter.get(adapterId); - var desc = {}; - if (descriptor) { - assert(descriptor); - assert(SAFE_HEAP_LOAD((descriptor >> 2) * 4, 4, 1) === 0); - var requiredFeaturesCount = SAFE_HEAP_LOAD((descriptor + 8 >> 2) * 4, 4, 1); - if (requiredFeaturesCount) { - var requiredFeaturesPtr = SAFE_HEAP_LOAD((descriptor + 12 >> 2) * 4, 4, 1); - desc["requiredFeatures"] = Array.from(HEAP32.subarray(requiredFeaturesPtr >> 2, (requiredFeaturesPtr >> 2) + requiredFeaturesCount), feature => WebGPU.FeatureName[feature]); - } - var requiredLimitsPtr = SAFE_HEAP_LOAD((descriptor + 16 >> 2) * 4, 4, 1); - if (requiredLimitsPtr) { - assert(requiredLimitsPtr); - assert(SAFE_HEAP_LOAD((requiredLimitsPtr >> 2) * 4, 4, 1) === 0); - var limitsPtr = requiredLimitsPtr + 8; - var requiredLimits = {}; - function setLimitU32IfDefined(name, limitOffset) { - var ptr = limitsPtr + limitOffset; - var value = SAFE_HEAP_LOAD((ptr >> 2) * 4, 4, 1); - if (value != 4294967295) { - requiredLimits[name] = value; - } - } - function setLimitU64IfDefined(name, limitOffset) { - var ptr = limitsPtr + limitOffset; - var limitPart1 = SAFE_HEAP_LOAD((ptr >> 2) * 4, 4, 1); - var limitPart2 = SAFE_HEAP_LOAD((ptr + 4 >> 2) * 4, 4, 1); - if (limitPart1 != 4294967295 || limitPart2 != 4294967295) { - requiredLimits[name] = SAFE_HEAP_LOAD((ptr + 4 >> 2) * 4, 4, 1) * 4294967296 + SAFE_HEAP_LOAD((ptr >> 2) * 4, 4, 1); - } - } - setLimitU32IfDefined("maxTextureDimension1D", 0); - setLimitU32IfDefined("maxTextureDimension2D", 4); - setLimitU32IfDefined("maxTextureDimension3D", 8); - setLimitU32IfDefined("maxTextureArrayLayers", 12); - setLimitU32IfDefined("maxBindGroups", 16); - setLimitU32IfDefined("maxDynamicUniformBuffersPerPipelineLayout", 28); - setLimitU32IfDefined("maxDynamicStorageBuffersPerPipelineLayout", 32); - setLimitU32IfDefined("maxSampledTexturesPerShaderStage", 36); - setLimitU32IfDefined("maxSamplersPerShaderStage", 40); - setLimitU32IfDefined("maxStorageBuffersPerShaderStage", 44); - setLimitU32IfDefined("maxStorageTexturesPerShaderStage", 48); - setLimitU32IfDefined("maxUniformBuffersPerShaderStage", 52); - setLimitU32IfDefined("minUniformBufferOffsetAlignment", 72); - setLimitU32IfDefined("minStorageBufferOffsetAlignment", 76); - setLimitU64IfDefined("maxUniformBufferBindingSize", 56); - setLimitU64IfDefined("maxStorageBufferBindingSize", 64); - setLimitU32IfDefined("maxVertexBuffers", 80); - setLimitU32IfDefined("maxVertexAttributes", 96); - setLimitU32IfDefined("maxVertexBufferArrayStride", 100); - setLimitU32IfDefined("maxInterStageShaderComponents", 104); - setLimitU32IfDefined("maxInterStageShaderVariables", 108); - setLimitU32IfDefined("maxColorAttachments", 112); - setLimitU32IfDefined("maxComputeWorkgroupStorageSize", 120); - setLimitU32IfDefined("maxComputeInvocationsPerWorkgroup", 124); - setLimitU32IfDefined("maxComputeWorkgroupSizeX", 128); - setLimitU32IfDefined("maxComputeWorkgroupSizeY", 132); - setLimitU32IfDefined("maxComputeWorkgroupSizeZ", 136); - setLimitU32IfDefined("maxComputeWorkgroupsPerDimension", 140); - desc["requiredLimits"] = requiredLimits; - } - var defaultQueuePtr = SAFE_HEAP_LOAD((descriptor + 20 >> 2) * 4, 4, 1); - if (defaultQueuePtr) { - var defaultQueueDesc = {}; - var labelPtr = SAFE_HEAP_LOAD((defaultQueuePtr + 4 >> 2) * 4, 4, 1); - if (labelPtr) defaultQueueDesc["label"] = UTF8ToString(labelPtr); - desc["defaultQueue"] = defaultQueueDesc; - } - var deviceLostCallbackPtr = SAFE_HEAP_LOAD((descriptor + 28 >> 2) * 4, 4, 1); - var deviceLostUserdataPtr = SAFE_HEAP_LOAD((descriptor + 32 >> 2) * 4, 4, 1); - var labelPtr = SAFE_HEAP_LOAD((descriptor + 4 >> 2) * 4, 4, 1); - if (labelPtr) desc["label"] = UTF8ToString(labelPtr); - } - adapter["requestDevice"](desc).then(device => { - callUserCallback(() => { - var deviceWrapper = { - queueId: WebGPU.mgrQueue.create(device["queue"]) - }; - var deviceId = WebGPU.mgrDevice.create(device, deviceWrapper); - if (deviceLostCallbackPtr) { - device["lost"].then(info => { - callUserCallback(() => WebGPU.errorCallback(deviceLostCallbackPtr, WebGPU.DeviceLostReason[info.reason], info.message, deviceLostUserdataPtr)); - }); - } - getWasmTableEntry(callback)(0, deviceId, 0, userdata); - }); - }, function(ex) { - callUserCallback(() => { - withStackSave(() => { - var messagePtr = stringToUTF8OnStack(ex.message); - getWasmTableEntry(callback)(1, 0, messagePtr, userdata); - }); - }); - }); -} - -function _wgpuBindGroupLayoutReference(id) { - WebGPU.mgrBindGroupLayout.reference(id); -} - -function _wgpuBindGroupLayoutRelease(id) { - WebGPU.mgrBindGroupLayout.release(id); -} - -function _wgpuBindGroupRelease(id) { - WebGPU.mgrBindGroup.release(id); -} - -function _wgpuBufferGetConstMappedRange(bufferId, offset, size) { - var bufferWrapper = WebGPU.mgrBuffer.objects[bufferId]; - assert(typeof bufferWrapper != "undefined"); - if (size === 0) warnOnce("getMappedRange size=0 no longer means WGPU_WHOLE_MAP_SIZE"); - if (size == -1) size = undefined; - var mapped; - try { - mapped = bufferWrapper.object["getMappedRange"](offset, size); - } catch (ex) { - err("wgpuBufferGetConstMappedRange(" + offset + ", " + size + ") failed: " + ex); - return 0; - } - var data = _memalign(16, mapped.byteLength); - HEAPU8.set(new Uint8Array(mapped), data); - bufferWrapper.onUnmap.push(() => _free(data)); - return data; -} - -function _wgpuBufferGetMappedRange(bufferId, offset, size) { - var bufferWrapper = WebGPU.mgrBuffer.objects[bufferId]; - assert(typeof bufferWrapper != "undefined"); - if (size === 0) warnOnce("getMappedRange size=0 no longer means WGPU_WHOLE_MAP_SIZE"); - if (size == -1) size = undefined; - if (bufferWrapper.mapMode !== 2) { - abort("GetMappedRange called, but buffer not mapped for writing"); - return 0; - } - var mapped; - try { - mapped = bufferWrapper.object["getMappedRange"](offset, size); - } catch (ex) { - err("wgpuBufferGetMappedRange(" + offset + ", " + size + ") failed: " + ex); - return 0; - } - var data = _memalign(16, mapped.byteLength); - HEAPU8.fill(0, data, mapped.byteLength); - bufferWrapper.onUnmap.push(() => { - new Uint8Array(mapped).set(HEAPU8.subarray(data, data + mapped.byteLength)); - _free(data); - }); - return data; -} - -var _wgpuBufferMapAsync = function(bufferId, mode, offset, size, callback, userdata) { - var bufferWrapper = WebGPU.mgrBuffer.objects[bufferId]; - assert(typeof bufferWrapper != "undefined"); - bufferWrapper.mapMode = mode; - bufferWrapper.onUnmap = []; - var buffer = bufferWrapper.object; - if (size == -1) size = undefined; - buffer["mapAsync"](mode, offset, size).then(() => { - callUserCallback(() => { - getWasmTableEntry(callback)(0, userdata); - }); - }, () => { - callUserCallback(() => { - getWasmTableEntry(callback)(1, userdata); - }); - }); -}; - -function _wgpuBufferReference(id) { - WebGPU.mgrBuffer.reference(id); -} - -function _wgpuBufferRelease(id) { - WebGPU.mgrBuffer.release(id); -} - -function _wgpuBufferUnmap(bufferId) { - var bufferWrapper = WebGPU.mgrBuffer.objects[bufferId]; - assert(typeof bufferWrapper != "undefined"); - if (!bufferWrapper.onUnmap) { - return; - } - for (var i = 0; i < bufferWrapper.onUnmap.length; ++i) { - bufferWrapper.onUnmap[i](); - } - bufferWrapper.onUnmap = undefined; - bufferWrapper.object["unmap"](); -} - -function _wgpuCommandBufferRelease(id) { - WebGPU.mgrCommandBuffer.release(id); -} - -function _wgpuCommandEncoderBeginRenderPass(encoderId, descriptor) { - assert(descriptor); - function makeColorAttachment(caPtr) { - var viewPtr = SAFE_HEAP_LOAD((caPtr + 4 >> 2) * 4, 4, 1); - if (viewPtr === 0) { - return undefined; - } - var loadOpInt = SAFE_HEAP_LOAD((caPtr + 12 >> 2) * 4, 4, 1); - assert(loadOpInt !== 0); - var storeOpInt = SAFE_HEAP_LOAD((caPtr + 16 >> 2) * 4, 4, 1); - assert(storeOpInt !== 0); - var clearValue = WebGPU.makeColor(caPtr + 24); - return { - "view": WebGPU.mgrTextureView.get(viewPtr), - "resolveTarget": WebGPU.mgrTextureView.get(SAFE_HEAP_LOAD((caPtr + 8 >> 2) * 4, 4, 1)), - "clearValue": clearValue, - "loadOp": WebGPU.LoadOp[loadOpInt], - "storeOp": WebGPU.StoreOp[storeOpInt] - }; - } - function makeColorAttachments(count, caPtr) { - var attachments = []; - for (var i = 0; i < count; ++i) { - attachments.push(makeColorAttachment(caPtr + 56 * i)); - } - return attachments; - } - function makeDepthStencilAttachment(dsaPtr) { - if (dsaPtr === 0) return undefined; - return { - "view": WebGPU.mgrTextureView.get(SAFE_HEAP_LOAD((dsaPtr >> 2) * 4, 4, 1)), - "depthClearValue": SAFE_HEAP_LOAD_D((dsaPtr + 12 >> 2) * 4, 4, 0), - "depthLoadOp": WebGPU.LoadOp[SAFE_HEAP_LOAD((dsaPtr + 4 >> 2) * 4, 4, 1)], - "depthStoreOp": WebGPU.StoreOp[SAFE_HEAP_LOAD((dsaPtr + 8 >> 2) * 4, 4, 1)], - "depthReadOnly": SAFE_HEAP_LOAD(dsaPtr + 16 >> 0, 1, 0) !== 0, - "stencilClearValue": SAFE_HEAP_LOAD((dsaPtr + 28 >> 2) * 4, 4, 1), - "stencilLoadOp": WebGPU.LoadOp[SAFE_HEAP_LOAD((dsaPtr + 20 >> 2) * 4, 4, 1)], - "stencilStoreOp": WebGPU.StoreOp[SAFE_HEAP_LOAD((dsaPtr + 24 >> 2) * 4, 4, 1)], - "stencilReadOnly": SAFE_HEAP_LOAD(dsaPtr + 32 >> 0, 1, 0) !== 0 - }; - } - function makeRenderPassTimestampWrite(twPtr) { - return { - "querySet": WebGPU.mgrQuerySet.get(SAFE_HEAP_LOAD((twPtr >> 2) * 4, 4, 1)), - "queryIndex": SAFE_HEAP_LOAD((twPtr + 4 >> 2) * 4, 4, 1), - "location": WebGPU.RenderPassTimestampLocation[SAFE_HEAP_LOAD((twPtr + 8 >> 2) * 4, 4, 1)] - }; - } - function makeRenderPassTimestampWrites(count, twPtr) { - var timestampWrites = []; - for (var i = 0; i < count; ++i) { - timestampWrites.push(makeRenderPassTimestampWrite(twPtr + 12 * i)); - } - return timestampWrites; - } - function makeRenderPassDescriptor(descriptor) { - assert(descriptor); - var nextInChainPtr = SAFE_HEAP_LOAD((descriptor >> 2) * 4, 4, 1); - var maxDrawCount = undefined; - if (nextInChainPtr !== 0) { - var sType = SAFE_HEAP_LOAD((nextInChainPtr + 4 >> 2) * 4, 4, 1); - assert(sType === 15); - assert(0 === SAFE_HEAP_LOAD((nextInChainPtr >> 2) * 4, 4, 1)); - var renderPassDescriptorMaxDrawCount = nextInChainPtr; - assert(renderPassDescriptorMaxDrawCount); - assert(SAFE_HEAP_LOAD((renderPassDescriptorMaxDrawCount >> 2) * 4, 4, 1) === 0); - maxDrawCount = SAFE_HEAP_LOAD((renderPassDescriptorMaxDrawCount + 4 + 8 >> 2) * 4, 4, 1) * 4294967296 + SAFE_HEAP_LOAD((renderPassDescriptorMaxDrawCount + 8 >> 2) * 4, 4, 1); - } - var desc = { - "label": undefined, - "colorAttachments": makeColorAttachments(SAFE_HEAP_LOAD((descriptor + 8 >> 2) * 4, 4, 1), SAFE_HEAP_LOAD((descriptor + 12 >> 2) * 4, 4, 1)), - "depthStencilAttachment": makeDepthStencilAttachment(SAFE_HEAP_LOAD((descriptor + 16 >> 2) * 4, 4, 1)), - "occlusionQuerySet": WebGPU.mgrQuerySet.get(SAFE_HEAP_LOAD((descriptor + 20 >> 2) * 4, 4, 1)), - "maxDrawCount": maxDrawCount - }; - var labelPtr = SAFE_HEAP_LOAD((descriptor + 4 >> 2) * 4, 4, 1); - if (labelPtr) desc["label"] = UTF8ToString(labelPtr); - var timestampWriteCount = SAFE_HEAP_LOAD((descriptor + 24 >> 2) * 4, 4, 1); - if (timestampWriteCount) { - desc["timestampWrites"] = makeRenderPassTimestampWrites(timestampWriteCount, SAFE_HEAP_LOAD((descriptor + 28 >> 2) * 4, 4, 1)); - } - return desc; - } - var desc = makeRenderPassDescriptor(descriptor); - var commandEncoder = WebGPU.mgrCommandEncoder.get(encoderId); - return WebGPU.mgrRenderPassEncoder.create(commandEncoder["beginRenderPass"](desc)); -} - -function _wgpuCommandEncoderCopyBufferToBuffer(encoderId, srcId, srcOffset_low, srcOffset_high, dstId, dstOffset_low, dstOffset_high, size_low, size_high) { - var srcOffset = convertI32PairToI53Checked(srcOffset_low, srcOffset_high); - var dstOffset = convertI32PairToI53Checked(dstOffset_low, dstOffset_high); - var size = convertI32PairToI53Checked(size_low, size_high); - var commandEncoder = WebGPU.mgrCommandEncoder.get(encoderId); - var src = WebGPU.mgrBuffer.get(srcId); - var dst = WebGPU.mgrBuffer.get(dstId); - commandEncoder["copyBufferToBuffer"](src, srcOffset, dst, dstOffset, size); -} - -function _wgpuCommandEncoderCopyTextureToBuffer(encoderId, srcPtr, dstPtr, copySizePtr) { - var commandEncoder = WebGPU.mgrCommandEncoder.get(encoderId); - var copySize = WebGPU.makeExtent3D(copySizePtr); - commandEncoder["copyTextureToBuffer"](WebGPU.makeImageCopyTexture(srcPtr), WebGPU.makeImageCopyBuffer(dstPtr), copySize); -} - -function _wgpuCommandEncoderFinish(encoderId, descriptor) { - var commandEncoder = WebGPU.mgrCommandEncoder.get(encoderId); - return WebGPU.mgrCommandBuffer.create(commandEncoder["finish"]()); -} - -function _wgpuCommandEncoderRelease(id) { - WebGPU.mgrCommandEncoder.release(id); -} - -function _wgpuCreateInstance(descriptor) { - return 1; -} - -function readI53FromI64(ptr) { - return SAFE_HEAP_LOAD((ptr >> 2) * 4, 4, 1) + SAFE_HEAP_LOAD((ptr + 4 >> 2) * 4, 4, 0) * 4294967296; -} - -function _wgpuDeviceCreateBindGroup(deviceId, descriptor) { - assert(descriptor); - assert(SAFE_HEAP_LOAD((descriptor >> 2) * 4, 4, 1) === 0); - function makeEntry(entryPtr) { - assert(entryPtr); - var bufferId = SAFE_HEAP_LOAD((entryPtr + 8 >> 2) * 4, 4, 1); - var samplerId = SAFE_HEAP_LOAD((entryPtr + 32 >> 2) * 4, 4, 1); - var textureViewId = SAFE_HEAP_LOAD((entryPtr + 36 >> 2) * 4, 4, 1); - assert((bufferId !== 0) + (samplerId !== 0) + (textureViewId !== 0) === 1); - var binding = SAFE_HEAP_LOAD((entryPtr + 4 >> 2) * 4, 4, 1); - if (bufferId) { - var size = readI53FromI64(entryPtr + 24); - if (size == -1) size = undefined; - return { - "binding": binding, - "resource": { - "buffer": WebGPU.mgrBuffer.get(bufferId), - "offset": SAFE_HEAP_LOAD((entryPtr + 4 + 16 >> 2) * 4, 4, 1) * 4294967296 + SAFE_HEAP_LOAD((entryPtr + 16 >> 2) * 4, 4, 1), - "size": size - } - }; - } else if (samplerId) { - return { - "binding": binding, - "resource": WebGPU.mgrSampler.get(samplerId) - }; - } else { - return { - "binding": binding, - "resource": WebGPU.mgrTextureView.get(textureViewId) - }; - } - } - function makeEntries(count, entriesPtrs) { - var entries = []; - for (var i = 0; i < count; ++i) { - entries.push(makeEntry(entriesPtrs + 40 * i)); - } - return entries; - } - var desc = { - "label": undefined, - "layout": WebGPU.mgrBindGroupLayout.get(SAFE_HEAP_LOAD((descriptor + 8 >> 2) * 4, 4, 1)), - "entries": makeEntries(SAFE_HEAP_LOAD((descriptor + 12 >> 2) * 4, 4, 1), SAFE_HEAP_LOAD((descriptor + 16 >> 2) * 4, 4, 1)) - }; - var labelPtr = SAFE_HEAP_LOAD((descriptor + 4 >> 2) * 4, 4, 1); - if (labelPtr) desc["label"] = UTF8ToString(labelPtr); - var device = WebGPU.mgrDevice.get(deviceId); - return WebGPU.mgrBindGroup.create(device["createBindGroup"](desc)); -} - -function _wgpuDeviceCreateBindGroupLayout(deviceId, descriptor) { - assert(descriptor); - assert(SAFE_HEAP_LOAD((descriptor >> 2) * 4, 4, 1) === 0); - function makeBufferEntry(entryPtr) { - assert(entryPtr); - var typeInt = SAFE_HEAP_LOAD((entryPtr + 4 >> 2) * 4, 4, 1); - if (!typeInt) return undefined; - return { - "type": WebGPU.BufferBindingType[typeInt], - "hasDynamicOffset": SAFE_HEAP_LOAD(entryPtr + 8 >> 0, 1, 0) !== 0, - "minBindingSize": SAFE_HEAP_LOAD((entryPtr + 4 + 16 >> 2) * 4, 4, 1) * 4294967296 + SAFE_HEAP_LOAD((entryPtr + 16 >> 2) * 4, 4, 1) - }; - } - function makeSamplerEntry(entryPtr) { - assert(entryPtr); - var typeInt = SAFE_HEAP_LOAD((entryPtr + 4 >> 2) * 4, 4, 1); - if (!typeInt) return undefined; - return { - "type": WebGPU.SamplerBindingType[typeInt] - }; - } - function makeTextureEntry(entryPtr) { - assert(entryPtr); - var sampleTypeInt = SAFE_HEAP_LOAD((entryPtr + 4 >> 2) * 4, 4, 1); - if (!sampleTypeInt) return undefined; - return { - "sampleType": WebGPU.TextureSampleType[sampleTypeInt], - "viewDimension": WebGPU.TextureViewDimension[SAFE_HEAP_LOAD((entryPtr + 8 >> 2) * 4, 4, 1)], - "multisampled": SAFE_HEAP_LOAD(entryPtr + 12 >> 0, 1, 0) !== 0 - }; - } - function makeStorageTextureEntry(entryPtr) { - assert(entryPtr); - var accessInt = SAFE_HEAP_LOAD((entryPtr + 4 >> 2) * 4, 4, 1); - if (!accessInt) return undefined; - return { - "access": WebGPU.StorageTextureAccess[accessInt], - "format": WebGPU.TextureFormat[SAFE_HEAP_LOAD((entryPtr + 8 >> 2) * 4, 4, 1)], - "viewDimension": WebGPU.TextureViewDimension[SAFE_HEAP_LOAD((entryPtr + 12 >> 2) * 4, 4, 1)] - }; - } - function makeEntry(entryPtr) { - assert(entryPtr); - return { - "binding": SAFE_HEAP_LOAD((entryPtr + 4 >> 2) * 4, 4, 1), - "visibility": SAFE_HEAP_LOAD((entryPtr + 8 >> 2) * 4, 4, 1), - "buffer": makeBufferEntry(entryPtr + 16), - "sampler": makeSamplerEntry(entryPtr + 40), - "texture": makeTextureEntry(entryPtr + 48), - "storageTexture": makeStorageTextureEntry(entryPtr + 64) - }; - } - function makeEntries(count, entriesPtrs) { - var entries = []; - for (var i = 0; i < count; ++i) { - entries.push(makeEntry(entriesPtrs + 80 * i)); - } - return entries; - } - var desc = { - "entries": makeEntries(SAFE_HEAP_LOAD((descriptor + 8 >> 2) * 4, 4, 1), SAFE_HEAP_LOAD((descriptor + 12 >> 2) * 4, 4, 1)) - }; - var labelPtr = SAFE_HEAP_LOAD((descriptor + 4 >> 2) * 4, 4, 1); - if (labelPtr) desc["label"] = UTF8ToString(labelPtr); - var device = WebGPU.mgrDevice.get(deviceId); - return WebGPU.mgrBindGroupLayout.create(device["createBindGroupLayout"](desc)); -} - -function _wgpuDeviceCreateBuffer(deviceId, descriptor) { - assert(descriptor); - assert(SAFE_HEAP_LOAD((descriptor >> 2) * 4, 4, 1) === 0); - var mappedAtCreation = SAFE_HEAP_LOAD(descriptor + 24 >> 0, 1, 0) !== 0; - var desc = { - "label": undefined, - "usage": SAFE_HEAP_LOAD((descriptor + 8 >> 2) * 4, 4, 1), - "size": SAFE_HEAP_LOAD((descriptor + 4 + 16 >> 2) * 4, 4, 1) * 4294967296 + SAFE_HEAP_LOAD((descriptor + 16 >> 2) * 4, 4, 1), - "mappedAtCreation": mappedAtCreation - }; - var labelPtr = SAFE_HEAP_LOAD((descriptor + 4 >> 2) * 4, 4, 1); - if (labelPtr) desc["label"] = UTF8ToString(labelPtr); - var device = WebGPU.mgrDevice.get(deviceId); - var bufferWrapper = {}; - var id = WebGPU.mgrBuffer.create(device["createBuffer"](desc), bufferWrapper); - if (mappedAtCreation) { - bufferWrapper.mapMode = 2; - bufferWrapper.onUnmap = []; - } - return id; -} - -function _wgpuDeviceCreateCommandEncoder(deviceId, descriptor) { - var desc; - if (descriptor) { - assert(descriptor); - assert(SAFE_HEAP_LOAD((descriptor >> 2) * 4, 4, 1) === 0); - desc = { - "label": undefined - }; - var labelPtr = SAFE_HEAP_LOAD((descriptor + 4 >> 2) * 4, 4, 1); - if (labelPtr) desc["label"] = UTF8ToString(labelPtr); - } - var device = WebGPU.mgrDevice.get(deviceId); - return WebGPU.mgrCommandEncoder.create(device["createCommandEncoder"](desc)); -} - -function _wgpuDeviceCreatePipelineLayout(deviceId, descriptor) { - assert(descriptor); - assert(SAFE_HEAP_LOAD((descriptor >> 2) * 4, 4, 1) === 0); - var bglCount = SAFE_HEAP_LOAD((descriptor + 8 >> 2) * 4, 4, 1); - var bglPtr = SAFE_HEAP_LOAD((descriptor + 12 >> 2) * 4, 4, 1); - var bgls = []; - for (var i = 0; i < bglCount; ++i) { - bgls.push(WebGPU.mgrBindGroupLayout.get(SAFE_HEAP_LOAD((bglPtr + 4 * i >> 2) * 4, 4, 1))); - } - var desc = { - "label": undefined, - "bindGroupLayouts": bgls - }; - var labelPtr = SAFE_HEAP_LOAD((descriptor + 4 >> 2) * 4, 4, 1); - if (labelPtr) desc["label"] = UTF8ToString(labelPtr); - var device = WebGPU.mgrDevice.get(deviceId); - return WebGPU.mgrPipelineLayout.create(device["createPipelineLayout"](desc)); -} - -function _wgpuDeviceCreateRenderPipeline(deviceId, descriptor) { - assert(descriptor); - assert(SAFE_HEAP_LOAD((descriptor >> 2) * 4, 4, 1) === 0); - function makePrimitiveState(rsPtr) { - if (!rsPtr) return undefined; - assert(rsPtr); - assert(SAFE_HEAP_LOAD((rsPtr >> 2) * 4, 4, 1) === 0); - return { - "topology": WebGPU.PrimitiveTopology[SAFE_HEAP_LOAD((rsPtr + 4 >> 2) * 4, 4, 1)], - "stripIndexFormat": WebGPU.IndexFormat[SAFE_HEAP_LOAD((rsPtr + 8 >> 2) * 4, 4, 1)], - "frontFace": WebGPU.FrontFace[SAFE_HEAP_LOAD((rsPtr + 12 >> 2) * 4, 4, 1)], - "cullMode": WebGPU.CullMode[SAFE_HEAP_LOAD((rsPtr + 16 >> 2) * 4, 4, 1)] - }; - } - function makeBlendComponent(bdPtr) { - if (!bdPtr) return undefined; - return { - "operation": WebGPU.BlendOperation[SAFE_HEAP_LOAD((bdPtr >> 2) * 4, 4, 1)], - "srcFactor": WebGPU.BlendFactor[SAFE_HEAP_LOAD((bdPtr + 4 >> 2) * 4, 4, 1)], - "dstFactor": WebGPU.BlendFactor[SAFE_HEAP_LOAD((bdPtr + 8 >> 2) * 4, 4, 1)] - }; - } - function makeBlendState(bsPtr) { - if (!bsPtr) return undefined; - assert(bsPtr); - assert(SAFE_HEAP_LOAD((bsPtr >> 2) * 4, 4, 1) === 0); - return { - "alpha": makeBlendComponent(bsPtr + 12), - "color": makeBlendComponent(bsPtr + 0) - }; - } - function makeColorState(csPtr) { - assert(csPtr); - assert(SAFE_HEAP_LOAD((csPtr >> 2) * 4, 4, 1) === 0); - var formatInt = SAFE_HEAP_LOAD((csPtr + 4 >> 2) * 4, 4, 1); - return formatInt === 0 ? undefined : { - "format": WebGPU.TextureFormat[formatInt], - "blend": makeBlendState(SAFE_HEAP_LOAD((csPtr + 8 >> 2) * 4, 4, 1)), - "writeMask": SAFE_HEAP_LOAD((csPtr + 12 >> 2) * 4, 4, 1) - }; - } - function makeColorStates(count, csArrayPtr) { - var states = []; - for (var i = 0; i < count; ++i) { - states.push(makeColorState(csArrayPtr + 16 * i)); - } - return states; - } - function makeStencilStateFace(ssfPtr) { - assert(ssfPtr); - return { - "compare": WebGPU.CompareFunction[SAFE_HEAP_LOAD((ssfPtr >> 2) * 4, 4, 1)], - "failOp": WebGPU.StencilOperation[SAFE_HEAP_LOAD((ssfPtr + 4 >> 2) * 4, 4, 1)], - "depthFailOp": WebGPU.StencilOperation[SAFE_HEAP_LOAD((ssfPtr + 8 >> 2) * 4, 4, 1)], - "passOp": WebGPU.StencilOperation[SAFE_HEAP_LOAD((ssfPtr + 12 >> 2) * 4, 4, 1)] - }; - } - function makeDepthStencilState(dssPtr) { - if (!dssPtr) return undefined; - assert(dssPtr); - return { - "format": WebGPU.TextureFormat[SAFE_HEAP_LOAD((dssPtr + 4 >> 2) * 4, 4, 1)], - "depthWriteEnabled": SAFE_HEAP_LOAD(dssPtr + 8 >> 0, 1, 0) !== 0, - "depthCompare": WebGPU.CompareFunction[SAFE_HEAP_LOAD((dssPtr + 12 >> 2) * 4, 4, 1)], - "stencilFront": makeStencilStateFace(dssPtr + 16), - "stencilBack": makeStencilStateFace(dssPtr + 32), - "stencilReadMask": SAFE_HEAP_LOAD((dssPtr + 48 >> 2) * 4, 4, 1), - "stencilWriteMask": SAFE_HEAP_LOAD((dssPtr + 52 >> 2) * 4, 4, 1), - "depthBias": SAFE_HEAP_LOAD((dssPtr + 56 >> 2) * 4, 4, 0), - "depthBiasSlopeScale": SAFE_HEAP_LOAD_D((dssPtr + 60 >> 2) * 4, 4, 0), - "depthBiasClamp": SAFE_HEAP_LOAD_D((dssPtr + 64 >> 2) * 4, 4, 0) - }; - } - function makeVertexAttribute(vaPtr) { - assert(vaPtr); - return { - "format": WebGPU.VertexFormat[SAFE_HEAP_LOAD((vaPtr >> 2) * 4, 4, 1)], - "offset": SAFE_HEAP_LOAD((vaPtr + 4 + 8 >> 2) * 4, 4, 1) * 4294967296 + SAFE_HEAP_LOAD((vaPtr + 8 >> 2) * 4, 4, 1), - "shaderLocation": SAFE_HEAP_LOAD((vaPtr + 16 >> 2) * 4, 4, 1) - }; - } - function makeVertexAttributes(count, vaArrayPtr) { - var vas = []; - for (var i = 0; i < count; ++i) { - vas.push(makeVertexAttribute(vaArrayPtr + i * 24)); - } - return vas; - } - function makeVertexBuffer(vbPtr) { - if (!vbPtr) return undefined; - var stepModeInt = SAFE_HEAP_LOAD((vbPtr + 8 >> 2) * 4, 4, 1); - return stepModeInt === 2 ? null : { - "arrayStride": SAFE_HEAP_LOAD((vbPtr + 4 >> 2) * 4, 4, 1) * 4294967296 + SAFE_HEAP_LOAD((vbPtr >> 2) * 4, 4, 1), - "stepMode": WebGPU.VertexStepMode[stepModeInt], - "attributes": makeVertexAttributes(SAFE_HEAP_LOAD((vbPtr + 12 >> 2) * 4, 4, 1), SAFE_HEAP_LOAD((vbPtr + 16 >> 2) * 4, 4, 1)) - }; - } - function makeVertexBuffers(count, vbArrayPtr) { - if (!count) return undefined; - var vbs = []; - for (var i = 0; i < count; ++i) { - vbs.push(makeVertexBuffer(vbArrayPtr + i * 24)); - } - return vbs; - } - function makeVertexState(viPtr) { - if (!viPtr) return undefined; - assert(viPtr); - assert(SAFE_HEAP_LOAD((viPtr >> 2) * 4, 4, 1) === 0); - return { - "module": WebGPU.mgrShaderModule.get(SAFE_HEAP_LOAD((viPtr + 4 >> 2) * 4, 4, 1)), - "entryPoint": UTF8ToString(SAFE_HEAP_LOAD((viPtr + 8 >> 2) * 4, 4, 1)), - "constants": WebGPU.makePipelineConstants(SAFE_HEAP_LOAD((viPtr + 12 >> 2) * 4, 4, 1), SAFE_HEAP_LOAD((viPtr + 16 >> 2) * 4, 4, 1)), - "buffers": makeVertexBuffers(SAFE_HEAP_LOAD((viPtr + 20 >> 2) * 4, 4, 1), SAFE_HEAP_LOAD((viPtr + 24 >> 2) * 4, 4, 1)) - }; - } - function makeMultisampleState(msPtr) { - if (!msPtr) return undefined; - assert(msPtr); - assert(SAFE_HEAP_LOAD((msPtr >> 2) * 4, 4, 1) === 0); - return { - "count": SAFE_HEAP_LOAD((msPtr + 4 >> 2) * 4, 4, 1), - "mask": SAFE_HEAP_LOAD((msPtr + 8 >> 2) * 4, 4, 1), - "alphaToCoverageEnabled": SAFE_HEAP_LOAD(msPtr + 12 >> 0, 1, 0) !== 0 - }; - } - function makeFragmentState(fsPtr) { - if (!fsPtr) return undefined; - assert(fsPtr); - assert(SAFE_HEAP_LOAD((fsPtr >> 2) * 4, 4, 1) === 0); - return { - "module": WebGPU.mgrShaderModule.get(SAFE_HEAP_LOAD((fsPtr + 4 >> 2) * 4, 4, 1)), - "entryPoint": UTF8ToString(SAFE_HEAP_LOAD((fsPtr + 8 >> 2) * 4, 4, 1)), - "constants": WebGPU.makePipelineConstants(SAFE_HEAP_LOAD((fsPtr + 12 >> 2) * 4, 4, 1), SAFE_HEAP_LOAD((fsPtr + 16 >> 2) * 4, 4, 1)), - "targets": makeColorStates(SAFE_HEAP_LOAD((fsPtr + 20 >> 2) * 4, 4, 1), SAFE_HEAP_LOAD((fsPtr + 24 >> 2) * 4, 4, 1)) - }; - } - var desc = { - "label": undefined, - "layout": WebGPU.makePipelineLayout(SAFE_HEAP_LOAD((descriptor + 8 >> 2) * 4, 4, 1)), - "vertex": makeVertexState(descriptor + 12), - "primitive": makePrimitiveState(descriptor + 40), - "depthStencil": makeDepthStencilState(SAFE_HEAP_LOAD((descriptor + 60 >> 2) * 4, 4, 1)), - "multisample": makeMultisampleState(descriptor + 64), - "fragment": makeFragmentState(SAFE_HEAP_LOAD((descriptor + 80 >> 2) * 4, 4, 1)) - }; - var labelPtr = SAFE_HEAP_LOAD((descriptor + 4 >> 2) * 4, 4, 1); - if (labelPtr) desc["label"] = UTF8ToString(labelPtr); - var device = WebGPU.mgrDevice.get(deviceId); - return WebGPU.mgrRenderPipeline.create(device["createRenderPipeline"](desc)); -} - -function _wgpuDeviceCreateShaderModule(deviceId, descriptor) { - assert(descriptor); - var nextInChainPtr = SAFE_HEAP_LOAD((descriptor >> 2) * 4, 4, 1); - assert(nextInChainPtr !== 0); - var sType = SAFE_HEAP_LOAD((nextInChainPtr + 4 >> 2) * 4, 4, 1); - var desc = { - "label": undefined, - "code": "" - }; - var labelPtr = SAFE_HEAP_LOAD((descriptor + 4 >> 2) * 4, 4, 1); - if (labelPtr) desc["label"] = UTF8ToString(labelPtr); - switch (sType) { - case 5: - { - var count = SAFE_HEAP_LOAD((nextInChainPtr + 8 >> 2) * 4, 4, 1); - var start = SAFE_HEAP_LOAD((nextInChainPtr + 12 >> 2) * 4, 4, 1); - desc["code"] = HEAPU32.subarray(start >> 2, (start >> 2) + count); - break; - } - - case 6: - { - var sourcePtr = SAFE_HEAP_LOAD((nextInChainPtr + 8 >> 2) * 4, 4, 1); - if (sourcePtr) { - desc["code"] = UTF8ToString(sourcePtr); - } - break; - } - - default: - abort("unrecognized ShaderModule sType"); - } - var device = WebGPU.mgrDevice.get(deviceId); - return WebGPU.mgrShaderModule.create(device["createShaderModule"](desc)); -} - -function _wgpuDeviceCreateSwapChain(deviceId, surfaceId, descriptor) { - assert(descriptor); - assert(SAFE_HEAP_LOAD((descriptor >> 2) * 4, 4, 1) === 0); - var device = WebGPU.mgrDevice.get(deviceId); - var context = WebGPU.mgrSurface.get(surfaceId); - assert(2 === SAFE_HEAP_LOAD((descriptor + 24 >> 2) * 4, 4, 1)); - var canvasSize = [ SAFE_HEAP_LOAD((descriptor + 16 >> 2) * 4, 4, 1), SAFE_HEAP_LOAD((descriptor + 20 >> 2) * 4, 4, 1) ]; - if (canvasSize[0] !== 0) { - context["canvas"]["width"] = canvasSize[0]; - } - if (canvasSize[1] !== 0) { - context["canvas"]["height"] = canvasSize[1]; - } - var configuration = { - "device": device, - "format": WebGPU.TextureFormat[SAFE_HEAP_LOAD((descriptor + 12 >> 2) * 4, 4, 1)], - "usage": SAFE_HEAP_LOAD((descriptor + 8 >> 2) * 4, 4, 1), - "alphaMode": "opaque" - }; - context["configure"](configuration); - return WebGPU.mgrSwapChain.create(context); -} - -function _wgpuDeviceCreateTexture(deviceId, descriptor) { - assert(descriptor); - assert(SAFE_HEAP_LOAD((descriptor >> 2) * 4, 4, 1) === 0); - var desc = { - "label": undefined, - "size": WebGPU.makeExtent3D(descriptor + 16), - "mipLevelCount": SAFE_HEAP_LOAD((descriptor + 32 >> 2) * 4, 4, 1), - "sampleCount": SAFE_HEAP_LOAD((descriptor + 36 >> 2) * 4, 4, 1), - "dimension": WebGPU.TextureDimension[SAFE_HEAP_LOAD((descriptor + 12 >> 2) * 4, 4, 1)], - "format": WebGPU.TextureFormat[SAFE_HEAP_LOAD((descriptor + 28 >> 2) * 4, 4, 1)], - "usage": SAFE_HEAP_LOAD((descriptor + 8 >> 2) * 4, 4, 1) - }; - var labelPtr = SAFE_HEAP_LOAD((descriptor + 4 >> 2) * 4, 4, 1); - if (labelPtr) desc["label"] = UTF8ToString(labelPtr); - var viewFormatCount = SAFE_HEAP_LOAD((descriptor + 40 >> 2) * 4, 4, 1); - if (viewFormatCount) { - var viewFormatsPtr = SAFE_HEAP_LOAD((descriptor + 44 >> 2) * 4, 4, 1); - desc["viewFormats"] = Array.from(HEAP32.subarray(viewFormatsPtr >> 2, (viewFormatsPtr >> 2) + viewFormatCount), function(format) { - return WebGPU.TextureFormat[format]; - }); - } - var device = WebGPU.mgrDevice.get(deviceId); - return WebGPU.mgrTexture.create(device["createTexture"](desc)); -} - -function _wgpuDeviceGetQueue(deviceId) { - var queueId = WebGPU.mgrDevice.objects[deviceId].queueId; - assert(queueId, "wgpuDeviceGetQueue: queue was missing or null"); - WebGPU.mgrQueue.reference(queueId); - return queueId; -} - -function _wgpuDeviceReference(id) { - WebGPU.mgrDevice.reference(id); -} - -function _wgpuDeviceRelease(id) { - WebGPU.mgrDevice.release(id); -} - -var _wgpuDeviceSetUncapturedErrorCallback = function(deviceId, callback, userdata) { - var device = WebGPU.mgrDevice.get(deviceId); - device["onuncapturederror"] = function(ev) { - callUserCallback(() => { - var Validation = 1; - var OutOfMemory = 2; - var type; - assert(typeof GPUValidationError != "undefined"); - assert(typeof GPUOutOfMemoryError != "undefined"); - if (ev.error instanceof GPUValidationError) type = Validation; else if (ev.error instanceof GPUOutOfMemoryError) type = OutOfMemory; - WebGPU.errorCallback(callback, type, ev.error.message, userdata); - }); - }; -}; - -function maybeCStringToJsString(cString) { - return cString > 2 ? UTF8ToString(cString) : cString; -} - -var specialHTMLTargets = [ 0, typeof document != "undefined" ? document : 0, typeof window != "undefined" ? window : 0 ]; - -function findEventTarget(target) { - target = maybeCStringToJsString(target); - var domElement = specialHTMLTargets[target] || (typeof document != "undefined" ? document.querySelector(target) : undefined); - return domElement; -} - -function findCanvasEventTarget(target) { - return findEventTarget(target); -} - -function _wgpuInstanceCreateSurface(instanceId, descriptor) { - assert(descriptor); - assert(instanceId === 1, "WGPUInstance must be created by wgpuCreateInstance"); - var nextInChainPtr = SAFE_HEAP_LOAD((descriptor >> 2) * 4, 4, 1); - assert(nextInChainPtr !== 0); - assert(4 === SAFE_HEAP_LOAD((nextInChainPtr + 4 >> 2) * 4, 4, 1)); - var descriptorFromCanvasHTMLSelector = nextInChainPtr; - assert(descriptorFromCanvasHTMLSelector); - assert(SAFE_HEAP_LOAD((descriptorFromCanvasHTMLSelector >> 2) * 4, 4, 1) === 0); - var selectorPtr = SAFE_HEAP_LOAD((descriptorFromCanvasHTMLSelector + 8 >> 2) * 4, 4, 1); - assert(selectorPtr); - var canvas = findCanvasEventTarget(selectorPtr); - var context = canvas.getContext("webgpu"); - assert(context); - if (!context) return 0; - var labelPtr = SAFE_HEAP_LOAD((descriptor + 4 >> 2) * 4, 4, 1); - if (labelPtr) context.surfaceLabelWebGPU = UTF8ToString(labelPtr); - return WebGPU.mgrSurface.create(context); -} - -function _wgpuInstanceRelease(instance) {} - -function _wgpuInstanceRequestAdapter(instanceId, options, callback, userdata) { - assert(instanceId === 1, "WGPUInstance must be created by wgpuCreateInstance"); - var opts; - if (options) { - assert(options); - assert(SAFE_HEAP_LOAD((options >> 2) * 4, 4, 1) === 0); - opts = { - "powerPreference": WebGPU.PowerPreference[SAFE_HEAP_LOAD((options + 8 >> 2) * 4, 4, 1)], - "forceFallbackAdapter": SAFE_HEAP_LOAD(options + 16 >> 0, 1, 0) !== 0 - }; - } - if (!("gpu" in navigator)) { - withStackSave(() => { - var messagePtr = stringToUTF8OnStack("WebGPU not available on this browser (navigator.gpu is not available)"); - getWasmTableEntry(callback)(1, 0, messagePtr, userdata); - }); - return; - } - navigator["gpu"]["requestAdapter"](opts).then(adapter => { - callUserCallback(() => { - if (adapter) { - var adapterId = WebGPU.mgrAdapter.create(adapter); - getWasmTableEntry(callback)(0, adapterId, 0, userdata); - } else { - withStackSave(() => { - var messagePtr = stringToUTF8OnStack("WebGPU not available on this system (requestAdapter returned null)"); - getWasmTableEntry(callback)(1, 0, messagePtr, userdata); - }); - } - }); - }, ex => { - callUserCallback(() => { - withStackSave(() => { - var messagePtr = stringToUTF8OnStack(ex.message); - getWasmTableEntry(callback)(2, 0, messagePtr, userdata); - }); - }); - }); -} - -function _wgpuPipelineLayoutRelease(id) { - WebGPU.mgrPipelineLayout.release(id); -} - -function _wgpuQuerySetRelease(id) { - WebGPU.mgrQuerySet.release(id); -} - -function _wgpuQueueRelease(id) { - WebGPU.mgrQueue.release(id); -} - -function _wgpuQueueSubmit(queueId, commandCount, commands) { - assert(commands % 4 === 0); - var queue = WebGPU.mgrQueue.get(queueId); - var cmds = Array.from(HEAP32.subarray(commands >> 2, (commands >> 2) + commandCount), function(id) { - return WebGPU.mgrCommandBuffer.get(id); - }); - queue["submit"](cmds); -} - -function _wgpuRenderPassEncoderDraw(passId, vertexCount, instanceCount, firstVertex, firstInstance) { - var pass = WebGPU.mgrRenderPassEncoder.get(passId); - pass["draw"](vertexCount, instanceCount, firstVertex, firstInstance); -} - -function _wgpuRenderPassEncoderEnd(encoderId) { - var encoder = WebGPU.mgrRenderPassEncoder.get(encoderId); - encoder["end"](); -} - -function _wgpuRenderPassEncoderRelease(id) { - WebGPU.mgrRenderPassEncoder.release(id); -} - -function _wgpuRenderPassEncoderSetPipeline(passId, pipelineId) { - var pass = WebGPU.mgrRenderPassEncoder.get(passId); - var pipeline = WebGPU.mgrRenderPipeline.get(pipelineId); - pass["setPipeline"](pipeline); -} - -function _wgpuRenderPipelineRelease(id) { - WebGPU.mgrRenderPipeline.release(id); -} - -function _wgpuShaderModuleReference(id) { - WebGPU.mgrShaderModule.reference(id); -} - -function _wgpuShaderModuleRelease(id) { - WebGPU.mgrShaderModule.release(id); -} - -function _wgpuSurfaceRelease(id) { - WebGPU.mgrSurface.release(id); -} - -function _wgpuSwapChainGetCurrentTextureView(swapChainId) { - var context = WebGPU.mgrSwapChain.get(swapChainId); - return WebGPU.mgrTextureView.create(context["getCurrentTexture"]()["createView"]()); -} - -function _wgpuSwapChainRelease(id) { - WebGPU.mgrSwapChain.release(id); -} - -function _wgpuTextureCreateView(textureId, descriptor) { - var desc; - if (descriptor) { - assert(descriptor); - assert(SAFE_HEAP_LOAD((descriptor >> 2) * 4, 4, 1) === 0); - var mipLevelCount = SAFE_HEAP_LOAD((descriptor + 20 >> 2) * 4, 4, 1); - var arrayLayerCount = SAFE_HEAP_LOAD((descriptor + 28 >> 2) * 4, 4, 1); - desc = { - "format": WebGPU.TextureFormat[SAFE_HEAP_LOAD((descriptor + 8 >> 2) * 4, 4, 1)], - "dimension": WebGPU.TextureViewDimension[SAFE_HEAP_LOAD((descriptor + 12 >> 2) * 4, 4, 1)], - "baseMipLevel": SAFE_HEAP_LOAD((descriptor + 16 >> 2) * 4, 4, 1), - "mipLevelCount": mipLevelCount === 4294967295 ? undefined : mipLevelCount, - "baseArrayLayer": SAFE_HEAP_LOAD((descriptor + 24 >> 2) * 4, 4, 1), - "arrayLayerCount": arrayLayerCount === 4294967295 ? undefined : arrayLayerCount, - "aspect": WebGPU.TextureAspect[SAFE_HEAP_LOAD((descriptor + 32 >> 2) * 4, 4, 1)] - }; - var labelPtr = SAFE_HEAP_LOAD((descriptor + 4 >> 2) * 4, 4, 1); - if (labelPtr) desc["label"] = UTF8ToString(labelPtr); - } - var texture = WebGPU.mgrTexture.get(textureId); - return WebGPU.mgrTextureView.create(texture["createView"](desc)); -} - -function _wgpuTextureReference(id) { - WebGPU.mgrTexture.reference(id); -} - -function _wgpuTextureRelease(id) { - WebGPU.mgrTexture.release(id); -} - -function _wgpuTextureViewReference(id) { - WebGPU.mgrTextureView.reference(id); -} - -function _wgpuTextureViewRelease(id) { - WebGPU.mgrTextureView.release(id); -} - -Module["requestFullscreen"] = function Module_requestFullscreen(lockPointer, resizeCanvas) { - Browser.requestFullscreen(lockPointer, resizeCanvas); -}; - -Module["requestFullScreen"] = function Module_requestFullScreen() { - Browser.requestFullScreen(); -}; - -Module["requestAnimationFrame"] = function Module_requestAnimationFrame(func) { - Browser.requestAnimationFrame(func); -}; - -Module["setCanvasSize"] = function Module_setCanvasSize(width, height, noUpdates) { - Browser.setCanvasSize(width, height, noUpdates); -}; - -Module["pauseMainLoop"] = function Module_pauseMainLoop() { - Browser.mainLoop.pause(); -}; - -Module["resumeMainLoop"] = function Module_resumeMainLoop() { - Browser.mainLoop.resume(); -}; - -Module["getUserMedia"] = function Module_getUserMedia() { - Browser.getUserMedia(); -}; - -Module["createContext"] = function Module_createContext(canvas, useWebGL, setInModule, webGLContextAttributes) { - return Browser.createContext(canvas, useWebGL, setInModule, webGLContextAttributes); -}; - -var preloadedImages = {}; - -var preloadedAudios = {}; - -WebGPU.initManagers(); - -function checkIncomingModuleAPI() { - ignoredModuleProp("fetchSettings"); -} - -var wasmImports = { - __assert_fail: ___assert_fail, - abort: _abort, - alignfault: alignfault, - emscripten_cancel_main_loop: _emscripten_cancel_main_loop, - emscripten_memcpy_big: _emscripten_memcpy_big, - emscripten_resize_heap: _emscripten_resize_heap, - emscripten_set_main_loop: _emscripten_set_main_loop, - exit: _exit, - fd_close: _fd_close, - fd_seek: _fd_seek, - fd_write: _fd_write, - segfault: segfault, - wgpuAdapterRelease: _wgpuAdapterRelease, - wgpuAdapterRequestDevice: _wgpuAdapterRequestDevice, - wgpuBindGroupLayoutReference: _wgpuBindGroupLayoutReference, - wgpuBindGroupLayoutRelease: _wgpuBindGroupLayoutRelease, - wgpuBindGroupRelease: _wgpuBindGroupRelease, - wgpuBufferGetConstMappedRange: _wgpuBufferGetConstMappedRange, - wgpuBufferGetMappedRange: _wgpuBufferGetMappedRange, - wgpuBufferMapAsync: _wgpuBufferMapAsync, - wgpuBufferReference: _wgpuBufferReference, - wgpuBufferRelease: _wgpuBufferRelease, - wgpuBufferUnmap: _wgpuBufferUnmap, - wgpuCommandBufferRelease: _wgpuCommandBufferRelease, - wgpuCommandEncoderBeginRenderPass: _wgpuCommandEncoderBeginRenderPass, - wgpuCommandEncoderCopyBufferToBuffer: _wgpuCommandEncoderCopyBufferToBuffer, - wgpuCommandEncoderCopyTextureToBuffer: _wgpuCommandEncoderCopyTextureToBuffer, - wgpuCommandEncoderFinish: _wgpuCommandEncoderFinish, - wgpuCommandEncoderRelease: _wgpuCommandEncoderRelease, - wgpuCreateInstance: _wgpuCreateInstance, - wgpuDeviceCreateBindGroup: _wgpuDeviceCreateBindGroup, - wgpuDeviceCreateBindGroupLayout: _wgpuDeviceCreateBindGroupLayout, - wgpuDeviceCreateBuffer: _wgpuDeviceCreateBuffer, - wgpuDeviceCreateCommandEncoder: _wgpuDeviceCreateCommandEncoder, - wgpuDeviceCreatePipelineLayout: _wgpuDeviceCreatePipelineLayout, - wgpuDeviceCreateRenderPipeline: _wgpuDeviceCreateRenderPipeline, - wgpuDeviceCreateShaderModule: _wgpuDeviceCreateShaderModule, - wgpuDeviceCreateSwapChain: _wgpuDeviceCreateSwapChain, - wgpuDeviceCreateTexture: _wgpuDeviceCreateTexture, - wgpuDeviceGetQueue: _wgpuDeviceGetQueue, - wgpuDeviceReference: _wgpuDeviceReference, - wgpuDeviceRelease: _wgpuDeviceRelease, - wgpuDeviceSetUncapturedErrorCallback: _wgpuDeviceSetUncapturedErrorCallback, - wgpuInstanceCreateSurface: _wgpuInstanceCreateSurface, - wgpuInstanceRelease: _wgpuInstanceRelease, - wgpuInstanceRequestAdapter: _wgpuInstanceRequestAdapter, - wgpuPipelineLayoutRelease: _wgpuPipelineLayoutRelease, - wgpuQuerySetRelease: _wgpuQuerySetRelease, - wgpuQueueRelease: _wgpuQueueRelease, - wgpuQueueSubmit: _wgpuQueueSubmit, - wgpuRenderPassEncoderDraw: _wgpuRenderPassEncoderDraw, - wgpuRenderPassEncoderEnd: _wgpuRenderPassEncoderEnd, - wgpuRenderPassEncoderRelease: _wgpuRenderPassEncoderRelease, - wgpuRenderPassEncoderSetPipeline: _wgpuRenderPassEncoderSetPipeline, - wgpuRenderPipelineRelease: _wgpuRenderPipelineRelease, - wgpuShaderModuleReference: _wgpuShaderModuleReference, - wgpuShaderModuleRelease: _wgpuShaderModuleRelease, - wgpuSurfaceRelease: _wgpuSurfaceRelease, - wgpuSwapChainGetCurrentTextureView: _wgpuSwapChainGetCurrentTextureView, - wgpuSwapChainRelease: _wgpuSwapChainRelease, - wgpuTextureCreateView: _wgpuTextureCreateView, - wgpuTextureReference: _wgpuTextureReference, - wgpuTextureRelease: _wgpuTextureRelease, - wgpuTextureViewReference: _wgpuTextureViewReference, - wgpuTextureViewRelease: _wgpuTextureViewRelease -}; - -var wasmExports = createWasm(); - -var ___wasm_call_ctors = createExportWrapper("__wasm_call_ctors"); - -var _main = Module["_main"] = createExportWrapper("main"); - -var ___errno_location = createExportWrapper("__errno_location"); - -var _fflush = Module["_fflush"] = createExportWrapper("fflush"); - -var _emscripten_get_sbrk_ptr = createExportWrapper("emscripten_get_sbrk_ptr"); - -var _sbrk = createExportWrapper("sbrk"); - -var _free = createExportWrapper("free"); - -var _memalign = createExportWrapper("memalign"); - -var setTempRet0 = createExportWrapper("setTempRet0"); - -var _emscripten_stack_init = () => (_emscripten_stack_init = wasmExports["emscripten_stack_init"])(); - -var _emscripten_stack_get_free = () => (_emscripten_stack_get_free = wasmExports["emscripten_stack_get_free"])(); - -var _emscripten_stack_get_base = () => (_emscripten_stack_get_base = wasmExports["emscripten_stack_get_base"])(); - -var _emscripten_stack_get_end = () => (_emscripten_stack_get_end = wasmExports["emscripten_stack_get_end"])(); - -var stackSave = createExportWrapper("stackSave"); - -var stackRestore = createExportWrapper("stackRestore"); - -var stackAlloc = createExportWrapper("stackAlloc"); - -var _emscripten_stack_get_current = () => (_emscripten_stack_get_current = wasmExports["emscripten_stack_get_current"])(); - -var dynCall_jiji = Module["dynCall_jiji"] = createExportWrapper("dynCall_jiji"); - -var missingLibrarySymbols = [ "writeI53ToI64", "writeI53ToI64Clamped", "writeI53ToI64Signaling", "writeI53ToU64Clamped", "writeI53ToU64Signaling", "readI53FromU64", "convertI32PairToI53", "convertU32PairToI53", "zeroMemory", "growMemory", "isLeapYear", "ydayFromDate", "arraySum", "addDays", "setErrNo", "inetPton4", "inetNtop4", "inetPton6", "inetNtop6", "readSockaddr", "writeSockaddr", "getHostByName", "initRandomFill", "randomFill", "getCallstack", "emscriptenLog", "convertPCtoSourceLocation", "readEmAsmArgs", "jstoi_q", "jstoi_s", "getExecutableName", "listenOnce", "autoResumeAudioContext", "dynCallLegacy", "getDynCaller", "dynCall", "runtimeKeepalivePush", "runtimeKeepalivePop", "asmjsMangle", "asyncLoad", "alignMemory", "mmapAlloc", "handleAllocatorInit", "HandleAllocator", "getNativeTypeSize", "STACK_SIZE", "STACK_ALIGN", "POINTER_SIZE", "ASSERTIONS", "getCFunc", "ccall", "cwrap", "uleb128Encode", "sigToWasmTypes", "generateFuncType", "convertJsFunctionToWasm", "getEmptyTableSlot", "updateTableMap", "getFunctionAddress", "addFunction", "removeFunction", "reallyNegative", "strLen", "reSign", "formatString", "intArrayFromString", "intArrayToString", "AsciiToString", "stringToAscii", "UTF16ToString", "stringToUTF16", "lengthBytesUTF16", "UTF32ToString", "stringToUTF32", "lengthBytesUTF32", "stringToNewUTF8", "writeArrayToMemory", "registerKeyEventCallback", "getBoundingClientRect", "fillMouseEventData", "registerMouseEventCallback", "registerWheelEventCallback", "registerUiEventCallback", "registerFocusEventCallback", "fillDeviceOrientationEventData", "registerDeviceOrientationEventCallback", "fillDeviceMotionEventData", "registerDeviceMotionEventCallback", "screenOrientation", "fillOrientationChangeEventData", "registerOrientationChangeEventCallback", "fillFullscreenChangeEventData", "registerFullscreenChangeEventCallback", "JSEvents_requestFullscreen", "JSEvents_resizeCanvasForFullscreen", "registerRestoreOldStyle", "hideEverythingExceptGivenElement", "restoreHiddenElements", "setLetterbox", "softFullscreenResizeWebGLRenderTarget", "doRequestFullscreen", "fillPointerlockChangeEventData", "registerPointerlockChangeEventCallback", "registerPointerlockErrorEventCallback", "requestPointerLock", "fillVisibilityChangeEventData", "registerVisibilityChangeEventCallback", "registerTouchEventCallback", "fillGamepadEventData", "registerGamepadEventCallback", "registerBeforeUnloadEventCallback", "fillBatteryEventData", "battery", "registerBatteryEventCallback", "setCanvasElementSize", "getCanvasElementSize", "demangle", "demangleAll", "jsStackTrace", "stackTrace", "getEnvStrings", "checkWasiClock", "wasiRightsToMuslOFlags", "wasiOFlagsToMuslOFlags", "createDyncallWrapper", "setImmediateWrapped", "clearImmediateWrapped", "polyfillSetImmediate", "getPromise", "makePromise", "idsToPromises", "makePromiseCallback", "ExceptionInfo", "findMatchingCatch", "getSocketFromFD", "getSocketAddress", "FS_createPreloadedFile", "FS_modeStringToFlags", "FS_getMode", "FS_stdin_getChar", "_setNetworkCallback", "heapObjectForWebGLType", "heapAccessShiftForWebGLHeap", "webgl_enable_ANGLE_instanced_arrays", "webgl_enable_OES_vertex_array_object", "webgl_enable_WEBGL_draw_buffers", "webgl_enable_WEBGL_multi_draw", "emscriptenWebGLGet", "computeUnpackAlignedImageSize", "colorChannelsInGlTextureFormat", "emscriptenWebGLGetTexPixelData", "__glGenObject", "emscriptenWebGLGetUniform", "webglGetUniformLocation", "webglPrepareUniformLocationsBeforeFirstUse", "webglGetLeftBracePos", "emscriptenWebGLGetVertexAttrib", "__glGetActiveAttribOrUniform", "writeGLArray", "registerWebGlEventCallback", "runAndAbortIfError", "SDL_unicode", "SDL_ttfContext", "SDL_audio", "GLFW_Window", "ALLOC_NORMAL", "ALLOC_STACK", "allocate", "writeStringToMemory", "writeAsciiToMemory" ]; - -missingLibrarySymbols.forEach(missingLibrarySymbol); - -var unexportedSymbols = [ "run", "addOnPreRun", "addOnInit", "addOnPreMain", "addOnExit", "addOnPostRun", "addRunDependency", "removeRunDependency", "FS_createFolder", "FS_createPath", "FS_createDataFile", "FS_createLazyFile", "FS_createLink", "FS_createDevice", "FS_readFile", "FS_unlink", "out", "err", "callMain", "abort", "keepRuntimeAlive", "wasmMemory", "wasmTable", "wasmExports", "stackAlloc", "stackSave", "stackRestore", "getTempRet0", "setTempRet0", "writeStackCookie", "checkStackCookie", "readI53FromI64", "convertI32PairToI53Checked", "ptrToString", "exitJS", "getHeapMax", "abortOnCannotGrowMemory", "ENV", "MONTH_DAYS_REGULAR", "MONTH_DAYS_LEAP", "MONTH_DAYS_REGULAR_CUMULATIVE", "MONTH_DAYS_LEAP_CUMULATIVE", "ERRNO_CODES", "ERRNO_MESSAGES", "DNS", "Protocols", "Sockets", "timers", "warnOnce", "UNWIND_CACHE", "readEmAsmArgsArray", "handleException", "callUserCallback", "maybeExit", "safeSetTimeout", "freeTableIndexes", "functionsInTableMap", "unSign", "setValue", "getValue", "PATH", "PATH_FS", "UTF8Decoder", "UTF8ArrayToString", "UTF8ToString", "stringToUTF8Array", "stringToUTF8", "lengthBytesUTF8", "UTF16Decoder", "stringToUTF8OnStack", "JSEvents", "specialHTMLTargets", "maybeCStringToJsString", "findEventTarget", "findCanvasEventTarget", "currentFullscreenStrategy", "restoreOldWindowedStyle", "ExitStatus", "flush_NO_FILESYSTEM", "promiseMap", "uncaughtExceptionCount", "exceptionLast", "exceptionCaught", "Browser", "setMainLoop", "wget", "SYSCALLS", "preloadPlugins", "FS_stdin_getChar_buffer", "FS", "MEMFS", "TTY", "PIPEFS", "SOCKFS", "tempFixedLengthArray", "miniTempWebGLFloatBuffers", "miniTempWebGLIntBuffers", "GL", "emscripten_webgl_power_preferences", "AL", "GLUT", "EGL", "GLEW", "IDBStore", "SDL", "SDL_gfx", "GLFW", "WebGPU", "JsValStore", "allocateUTF8", "allocateUTF8OnStack" ]; - -unexportedSymbols.forEach(unexportedRuntimeSymbol); - -var calledRun; - -dependenciesFulfilled = function runCaller() { - if (!calledRun) run(); - if (!calledRun) dependenciesFulfilled = runCaller; -}; - -function callMain() { - assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on Module["onRuntimeInitialized"])'); - assert(__ATPRERUN__.length == 0, "cannot call main when preRun functions remain to be called"); - var entryFunction = _main; - var argc = 0; - var argv = 0; - try { - var ret = entryFunction(argc, argv); - exitJS(ret, true); - return ret; - } catch (e) { - return handleException(e); - } -} - -function stackCheckInit() { - _emscripten_stack_init(); - writeStackCookie(); -} - -function run() { - if (runDependencies > 0) { - return; - } - stackCheckInit(); - preRun(); - if (runDependencies > 0) { - return; - } - function doRun() { - if (calledRun) return; - calledRun = true; - Module["calledRun"] = true; - if (ABORT) return; - initRuntime(); - preMain(); - if (Module["onRuntimeInitialized"]) Module["onRuntimeInitialized"](); - if (shouldRunNow) callMain(); - postRun(); - } - if (Module["setStatus"]) { - Module["setStatus"]("Running..."); - setTimeout(function() { - setTimeout(function() { - Module["setStatus"](""); - }, 1); - doRun(); - }, 1); - } else { - doRun(); - } - checkStackCookie(); -} - -function checkUnflushedContent() { - var oldOut = out; - var oldErr = err; - var has = false; - out = err = x => { - has = true; - }; - try { - flush_NO_FILESYSTEM(); - } catch (e) {} - out = oldOut; - err = oldErr; - if (has) { - warnOnce("stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the Emscripten FAQ), or make sure to emit a newline when you printf etc."); - warnOnce("(this may also be due to not including full filesystem support - try building with -sFORCE_FILESYSTEM)"); - } -} - -if (Module["preInit"]) { - if (typeof Module["preInit"] == "function") Module["preInit"] = [ Module["preInit"] ]; - while (Module["preInit"].length > 0) { - Module["preInit"].pop()(); - } -} - -var shouldRunNow = true; - -if (Module["noInitialRun"]) shouldRunNow = false; - -run(); diff --git a/out/web/hello.wasm b/out/web/hello.wasm deleted file mode 100755 index 724236174ec9e7916d8105d8cdc2db0ecfd3bdaf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 461601 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 O3C>N;AUE%qSpNs_b;Bb7 diff --git a/out/web/hello.wasm.map b/out/web/hello.wasm.map deleted file mode 100644 index 79d83b4..0000000 --- a/out/web/hello.wasm.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../../emscripten/cache/sysroot/include/webgpu/webgpu_cpp.h","../../main.cpp","../../../emscripten/cache/sysroot/include/c++/v1/__memory/unique_ptr.h","../../../emscripten/cache/sysroot/include/c++/v1/__memory/compressed_pair.h","../../../emscripten/system/lib/libc/atexit_dummy.c","../../../emscripten/system/lib/libc/musl/src/stdio/printf.c","../../../emscripten/system/lib/libc/musl/src/stdio/__stdio_write.c","../../../emscripten/system/lib/libc/musl/src/stdio/stdout.c","../../../emscripten/system/lib/libc/musl/src/string/memset.c","../../../emscripten/system/lib/libc/musl/src/stdio/__lockfile.c","../../../emscripten/system/lib/pthread/library_pthread_stub.c","../../../emscripten/system/lib/libc/musl/src/stdio/ofl.c","../../../emscripten/system/lib/libc/musl/src/stdio/__towrite.c","../../../emscripten/system/lib/libc/musl/src/ctype/isdigit.c","../../../emscripten/system/lib/libc/musl/src/string/memchr.c","../../../emscripten/system/lib/libc/musl/src/string/strnlen.c","../../../emscripten/system/lib/libc/musl/src/errno/__errno_location.c","../../../emscripten/system/lib/libc/musl/src/math/frexp.c","../../../emscripten/system/lib/libc/emscripten_memcpy.c","../../../emscripten/system/lib/libc/musl/src/stdio/fwrite.c","../../../emscripten/system/lib/libc/musl/src/stdio/vfprintf.c","../../../emscripten/cache/sysroot/include/math.h","../../../emscripten/system/lib/libc/wasi-helpers.c","../../../emscripten/system/lib/libc/emscripten_syscall_stubs.c","../../../emscripten/system/lib/libc/musl/src/unistd/getpid.c","../../../emscripten/system/lib/pthread/pthread_self_stub.c","../../../emscripten/system/lib/libc/musl/src/multibyte/wcrtomb.c","../../../emscripten/system/lib/libc/musl/src/multibyte/wctomb.c","../../../emscripten/system/lib/compiler-rt/lib/builtins/ashlti3.c","../../../emscripten/system/lib/compiler-rt/lib/builtins/lshrti3.c","../../../emscripten/system/lib/compiler-rt/lib/builtins/trunctfdf2.c","../../../emscripten/system/lib/compiler-rt/lib/builtins/fp_trunc_impl.inc","../../../emscripten/system/lib/compiler-rt/lib/builtins/fp_trunc.h","../../../emscripten/system/lib/libc/emscripten_get_heap_size.c","../../../emscripten/system/lib/libc/sbrk.c","../../../emscripten/system/lib/dlmalloc.c","../../../emscripten/system/lib/libcxx/src/new.cpp","../../../emscripten/system/lib/libc/musl/src/stdio/__stdio_close.c","../../../emscripten/system/lib/libc/musl/src/unistd/lseek.c","../../../emscripten/system/lib/libc/musl/src/stdio/__stdio_seek.c","../../../emscripten/system/lib/libcxx/src/include/atomic_support.h","../../../emscripten/system/lib/libcxxabi/src/cxa_handlers.cpp","../../../emscripten/system/lib/webgpu/webgpu_cpp.cpp","../../../emscripten/system/lib/libc/musl/src/stdio/fflush.c"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/out/webdbg/hello.html b/out/webdbg/hello.html new file mode 100644 index 0000000..c92e167 --- /dev/null +++ b/out/webdbg/hello.html @@ -0,0 +1,201 @@ + + + + + + Emscripten-Generated Code + + + + + +

+
Downloading...
+ + + Resize canvas + Lock/hide mouse pointer     + + + + +
+ +
+ +
+ +
+ + + + + + diff --git a/out/webdbg/hello.js b/out/webdbg/hello.js new file mode 100644 index 0000000..e2cccf3 --- /dev/null +++ b/out/webdbg/hello.js @@ -0,0 +1,3216 @@ +var Module = typeof Module != "undefined" ? Module : {}; + +var ENVIRONMENT_IS_WEB = typeof window == "object"; + +var ENVIRONMENT_IS_WORKER = typeof importScripts == "function"; + +var ENVIRONMENT_IS_NODE = typeof process == "object" && typeof process.versions == "object" && typeof process.versions.node == "string"; + +var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; + +if (Module["ENVIRONMENT"]) { + throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)"); +} + +if (ENVIRONMENT_IS_NODE) {} + +var moduleOverrides = Object.assign({}, Module); + +var arguments_ = []; + +var thisProgram = "./this.program"; + +var quit_ = (status, toThrow) => { + throw toThrow; +}; + +var scriptDirectory = ""; + +function locateFile(path) { + if (Module["locateFile"]) { + return Module["locateFile"](path, scriptDirectory); + } + return scriptDirectory + path; +} + +var readAsync, readBinary; + +if (ENVIRONMENT_IS_NODE) { + if (typeof process == "undefined" || !process.release || process.release.name !== "node") throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)"); + var nodeVersion = process.versions.node; + var numericVersion = nodeVersion.split(".").slice(0, 3); + numericVersion = (numericVersion[0] * 1e4) + (numericVersion[1] * 100) + (numericVersion[2].split("-")[0] * 1); + var minVersion = 16e4; + if (numericVersion < 16e4) { + throw new Error("This emscripten-generated code requires node v16.0.0 (detected v" + nodeVersion + ")"); + } + var fs = require("fs"); + var nodePath = require("path"); + scriptDirectory = __dirname + "/"; + readBinary = filename => { + filename = isFileURI(filename) ? new URL(filename) : nodePath.normalize(filename); + var ret = fs.readFileSync(filename); + assert(ret.buffer); + return ret; + }; + readAsync = (filename, binary = true) => { + filename = isFileURI(filename) ? new URL(filename) : nodePath.normalize(filename); + return new Promise((resolve, reject) => { + fs.readFile(filename, binary ? undefined : "utf8", (err, data) => { + if (err) reject(err); else resolve(binary ? data.buffer : data); + }); + }); + }; + if (!Module["thisProgram"] && process.argv.length > 1) { + thisProgram = process.argv[1].replace(/\\/g, "/"); + } + arguments_ = process.argv.slice(2); + if (typeof module != "undefined") { + module["exports"] = Module; + } + process.on("uncaughtException", ex => { + if (ex !== "unwind" && !(ex instanceof ExitStatus) && !(ex.context instanceof ExitStatus)) { + throw ex; + } + }); + quit_ = (status, toThrow) => { + process.exitCode = status; + throw toThrow; + }; +} else if (ENVIRONMENT_IS_SHELL) { + if ((typeof process == "object" && typeof require === "function") || typeof window == "object" || typeof importScripts == "function") throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)"); +} else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { + if (ENVIRONMENT_IS_WORKER) { + scriptDirectory = self.location.href; + } else if (typeof document != "undefined" && document.currentScript) { + scriptDirectory = document.currentScript.src; + } + if (scriptDirectory.startsWith("blob:")) { + scriptDirectory = ""; + } else { + scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, "").lastIndexOf("/") + 1); + } + if (!(typeof window == "object" || typeof importScripts == "function")) throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)"); + { + if (ENVIRONMENT_IS_WORKER) { + readBinary = url => { + var xhr = new XMLHttpRequest; + xhr.open("GET", url, false); + xhr.responseType = "arraybuffer"; + xhr.send(null); + return new Uint8Array(/** @type{!ArrayBuffer} */ (xhr.response)); + }; + } + readAsync = url => { + if (isFileURI(url)) { + return new Promise((reject, resolve) => { + var xhr = new XMLHttpRequest; + xhr.open("GET", url, true); + xhr.responseType = "arraybuffer"; + xhr.onload = () => { + if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) { + resolve(xhr.response); + } + reject(xhr.status); + }; + xhr.onerror = reject; + xhr.send(null); + }); + } + return fetch(url, { + credentials: "same-origin" + }).then(response => { + if (response.ok) { + return response.arrayBuffer(); + } + return Promise.reject(new Error(response.status + " : " + response.url)); + }); + }; + } +} else { + throw new Error("environment detection error"); +} + +var out = Module["print"] || console.log.bind(console); + +var err = Module["printErr"] || console.error.bind(console); + +Object.assign(Module, moduleOverrides); + +moduleOverrides = null; + +checkIncomingModuleAPI(); + +if (Module["arguments"]) arguments_ = Module["arguments"]; + +legacyModuleProp("arguments", "arguments_"); + +if (Module["thisProgram"]) thisProgram = Module["thisProgram"]; + +legacyModuleProp("thisProgram", "thisProgram"); + +if (Module["quit"]) quit_ = Module["quit"]; + +legacyModuleProp("quit", "quit_"); + +assert(typeof Module["memoryInitializerPrefixURL"] == "undefined", "Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"); + +assert(typeof Module["pthreadMainPrefixURL"] == "undefined", "Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"); + +assert(typeof Module["cdInitializerPrefixURL"] == "undefined", "Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"); + +assert(typeof Module["filePackagePrefixURL"] == "undefined", "Module.filePackagePrefixURL option was removed, use Module.locateFile instead"); + +assert(typeof Module["read"] == "undefined", "Module.read option was removed"); + +assert(typeof Module["readAsync"] == "undefined", "Module.readAsync option was removed (modify readAsync in JS)"); + +assert(typeof Module["readBinary"] == "undefined", "Module.readBinary option was removed (modify readBinary in JS)"); + +assert(typeof Module["setWindowTitle"] == "undefined", "Module.setWindowTitle option was removed (modify emscripten_set_window_title in JS)"); + +assert(typeof Module["TOTAL_MEMORY"] == "undefined", "Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY"); + +legacyModuleProp("asm", "wasmExports"); + +legacyModuleProp("readAsync", "readAsync"); + +legacyModuleProp("readBinary", "readBinary"); + +legacyModuleProp("setWindowTitle", "setWindowTitle"); + +var IDBFS = "IDBFS is no longer included by default; build with -lidbfs.js"; + +var PROXYFS = "PROXYFS is no longer included by default; build with -lproxyfs.js"; + +var WORKERFS = "WORKERFS is no longer included by default; build with -lworkerfs.js"; + +var FETCHFS = "FETCHFS is no longer included by default; build with -lfetchfs.js"; + +var ICASEFS = "ICASEFS is no longer included by default; build with -licasefs.js"; + +var JSFILEFS = "JSFILEFS is no longer included by default; build with -ljsfilefs.js"; + +var OPFS = "OPFS is no longer included by default; build with -lopfs.js"; + +var NODEFS = "NODEFS is no longer included by default; build with -lnodefs.js"; + +assert(!ENVIRONMENT_IS_SHELL, "shell environment detected but not enabled at build time. Add `shell` to `-sENVIRONMENT` to enable."); + +var wasmBinary; + +if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"]; + +legacyModuleProp("wasmBinary", "wasmBinary"); + +if (typeof WebAssembly != "object") { + err("no native wasm support detected"); +} + +/** @param {number|boolean=} isFloat */ function getSafeHeapType(bytes, isFloat) { + switch (bytes) { + case 1: + return "i8"; + + case 2: + return "i16"; + + case 4: + return isFloat ? "float" : "i32"; + + case 8: + return isFloat ? "double" : "i64"; + + default: + abort(`getSafeHeapType() invalid bytes=${bytes}`); + } +} + +/** @param {number|boolean=} isFloat */ function SAFE_HEAP_STORE(dest, value, bytes, isFloat) { + if (dest <= 0) abort(`segmentation fault storing ${bytes} bytes to address ${dest}`); + if (dest % bytes !== 0) abort(`alignment error storing to address ${dest}, which was expected to be aligned to a multiple of ${bytes}`); + if (runtimeInitialized) { + var brk = _sbrk(0); + if (dest + bytes > brk) abort(`segmentation fault, exceeded the top of the available dynamic heap when storing ${bytes} bytes to address ${dest}. DYNAMICTOP=${brk}`); + if (brk < _emscripten_stack_get_base()) abort(`brk >= _emscripten_stack_get_base() (brk=${brk}, _emscripten_stack_get_base()=${_emscripten_stack_get_base()})`); + if (brk > wasmMemory.buffer.byteLength) abort(`brk <= wasmMemory.buffer.byteLength (brk=${brk}, wasmMemory.buffer.byteLength=${wasmMemory.buffer.byteLength})`); + } + setValue_safe(dest, value, getSafeHeapType(bytes, isFloat)); + return value; +} + +function SAFE_HEAP_STORE_D(dest, value, bytes) { + return SAFE_HEAP_STORE(dest, value, bytes, true); +} + +/** @param {number|boolean=} isFloat */ function SAFE_HEAP_LOAD(dest, bytes, unsigned, isFloat) { + if (dest <= 0) abort(`segmentation fault loading ${bytes} bytes from address ${dest}`); + if (dest % bytes !== 0) abort(`alignment error loading from address ${dest}, which was expected to be aligned to a multiple of ${bytes}`); + if (runtimeInitialized) { + var brk = _sbrk(0); + if (dest + bytes > brk) abort(`segmentation fault, exceeded the top of the available dynamic heap when loading ${bytes} bytes from address ${dest}. DYNAMICTOP=${brk}`); + if (brk < _emscripten_stack_get_base()) abort(`brk >= _emscripten_stack_get_base() (brk=${brk}, _emscripten_stack_get_base()=${_emscripten_stack_get_base()})`); + if (brk > wasmMemory.buffer.byteLength) abort(`brk <= wasmMemory.buffer.byteLength (brk=${brk}, wasmMemory.buffer.byteLength=${wasmMemory.buffer.byteLength})`); + } + var type = getSafeHeapType(bytes, isFloat); + var ret = getValue_safe(dest, type); + if (unsigned) ret = unSign(ret, parseInt(type.substr(1), 10)); + return ret; +} + +function SAFE_HEAP_LOAD_D(dest, bytes, unsigned) { + return SAFE_HEAP_LOAD(dest, bytes, unsigned, true); +} + +function SAFE_FT_MASK(value, mask) { + var ret = value & mask; + if (ret !== value) { + abort(`Function table mask error: function pointer is ${value} which is masked by ${mask}, the likely cause of this is that the function pointer is being called by the wrong type.`); + } + return ret; +} + +function segfault() { + abort("segmentation fault"); +} + +function alignfault() { + abort("alignment fault"); +} + +var wasmMemory; + +var ABORT = false; + +var EXITSTATUS; + +/** @type {function(*, string=)} */ function assert(condition, text) { + if (!condition) { + abort("Assertion failed" + (text ? ": " + text : "")); + } +} + +var HEAP, /** @type {!Int8Array} */ HEAP8, /** @type {!Uint8Array} */ HEAPU8, /** @type {!Int16Array} */ HEAP16, /** @type {!Uint16Array} */ HEAPU16, /** @type {!Int32Array} */ HEAP32, /** @type {!Uint32Array} */ HEAPU32, /** @type {!Float32Array} */ HEAPF32, /** @type {!Float64Array} */ HEAPF64; + +function updateMemoryViews() { + var b = wasmMemory.buffer; + Module["HEAP8"] = HEAP8 = new Int8Array(b); + Module["HEAP16"] = HEAP16 = new Int16Array(b); + Module["HEAPU8"] = HEAPU8 = new Uint8Array(b); + Module["HEAPU16"] = HEAPU16 = new Uint16Array(b); + Module["HEAP32"] = HEAP32 = new Int32Array(b); + Module["HEAPU32"] = HEAPU32 = new Uint32Array(b); + Module["HEAPF32"] = HEAPF32 = new Float32Array(b); + Module["HEAPF64"] = HEAPF64 = new Float64Array(b); +} + +assert(!Module["STACK_SIZE"], "STACK_SIZE can no longer be set at runtime. Use -sSTACK_SIZE at link time"); + +assert(typeof Int32Array != "undefined" && typeof Float64Array !== "undefined" && Int32Array.prototype.subarray != undefined && Int32Array.prototype.set != undefined, "JS engine does not provide full typed array support"); + +assert(!Module["wasmMemory"], "Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally"); + +assert(!Module["INITIAL_MEMORY"], "Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically"); + +function writeStackCookie() { + var max = _emscripten_stack_get_end(); + assert((max & 3) == 0); + if (max == 0) { + max += 4; + } + SAFE_HEAP_STORE(((max) >> 2) * 4, 34821223, 4); + SAFE_HEAP_STORE((((max) + (4)) >> 2) * 4, 2310721022, 4); +} + +function checkStackCookie() { + if (ABORT) return; + var max = _emscripten_stack_get_end(); + if (max == 0) { + max += 4; + } + var cookie1 = SAFE_HEAP_LOAD(((max) >> 2) * 4, 4, 1); + var cookie2 = SAFE_HEAP_LOAD((((max) + (4)) >> 2) * 4, 4, 1); + if (cookie1 != 34821223 || cookie2 != 2310721022) { + abort(`Stack overflow! Stack cookie has been overwritten at ${ptrToString(max)}, expected hex dwords 0x89BACDFE and 0x2135467, but received ${ptrToString(cookie2)} ${ptrToString(cookie1)}`); + } +} + +(function() { + var h16 = new Int16Array(1); + var h8 = new Int8Array(h16.buffer); + h16[0] = 25459; + if (h8[0] !== 115 || h8[1] !== 99) throw "Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)"; +})(); + +var __ATPRERUN__ = []; + +var __ATINIT__ = []; + +var __ATMAIN__ = []; + +var __ATEXIT__ = []; + +var __ATPOSTRUN__ = []; + +var runtimeInitialized = false; + +function preRun() { + if (Module["preRun"]) { + if (typeof Module["preRun"] == "function") Module["preRun"] = [ Module["preRun"] ]; + while (Module["preRun"].length) { + addOnPreRun(Module["preRun"].shift()); + } + } + callRuntimeCallbacks(__ATPRERUN__); +} + +function initRuntime() { + assert(!runtimeInitialized); + runtimeInitialized = true; + checkStackCookie(); + callRuntimeCallbacks(__ATINIT__); +} + +function preMain() { + checkStackCookie(); + callRuntimeCallbacks(__ATMAIN__); +} + +function postRun() { + checkStackCookie(); + if (Module["postRun"]) { + if (typeof Module["postRun"] == "function") Module["postRun"] = [ Module["postRun"] ]; + while (Module["postRun"].length) { + addOnPostRun(Module["postRun"].shift()); + } + } + callRuntimeCallbacks(__ATPOSTRUN__); +} + +function addOnPreRun(cb) { + __ATPRERUN__.unshift(cb); +} + +function addOnInit(cb) { + __ATINIT__.unshift(cb); +} + +function addOnPreMain(cb) { + __ATMAIN__.unshift(cb); +} + +function addOnExit(cb) {} + +function addOnPostRun(cb) { + __ATPOSTRUN__.unshift(cb); +} + +assert(Math.imul, "This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"); + +assert(Math.fround, "This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"); + +assert(Math.clz32, "This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"); + +assert(Math.trunc, "This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"); + +var runDependencies = 0; + +var runDependencyWatcher = null; + +var dependenciesFulfilled = null; + +var runDependencyTracking = {}; + +function getUniqueRunDependency(id) { + var orig = id; + while (1) { + if (!runDependencyTracking[id]) return id; + id = orig + Math.random(); + } +} + +function addRunDependency(id) { + runDependencies++; + Module["monitorRunDependencies"]?.(runDependencies); + if (id) { + assert(!runDependencyTracking[id]); + runDependencyTracking[id] = 1; + if (runDependencyWatcher === null && typeof setInterval != "undefined") { + runDependencyWatcher = setInterval(() => { + if (ABORT) { + clearInterval(runDependencyWatcher); + runDependencyWatcher = null; + return; + } + var shown = false; + for (var dep in runDependencyTracking) { + if (!shown) { + shown = true; + err("still waiting on run dependencies:"); + } + err(`dependency: ${dep}`); + } + if (shown) { + err("(end of list)"); + } + }, 1e4); + } + } else { + err("warning: run dependency added without ID"); + } +} + +function removeRunDependency(id) { + runDependencies--; + Module["monitorRunDependencies"]?.(runDependencies); + if (id) { + assert(runDependencyTracking[id]); + delete runDependencyTracking[id]; + } else { + err("warning: run dependency removed without ID"); + } + if (runDependencies == 0) { + if (runDependencyWatcher !== null) { + clearInterval(runDependencyWatcher); + runDependencyWatcher = null; + } + if (dependenciesFulfilled) { + var callback = dependenciesFulfilled; + dependenciesFulfilled = null; + callback(); + } + } +} + +/** @param {string|number=} what */ function abort(what) { + Module["onAbort"]?.(what); + what = "Aborted(" + what + ")"; + err(what); + ABORT = true; + EXITSTATUS = 1; + /** @suppress {checkTypes} */ var e = new WebAssembly.RuntimeError(what); + throw e; +} + +var FS = { + error() { + abort("Filesystem support (FS) was not included. The problem is that you are using files from JS, but files were not used from C/C++, so filesystem support was not auto-included. You can force-include filesystem support with -sFORCE_FILESYSTEM"); + }, + init() { + FS.error(); + }, + createDataFile() { + FS.error(); + }, + createPreloadedFile() { + FS.error(); + }, + createLazyFile() { + FS.error(); + }, + open() { + FS.error(); + }, + mkdev() { + FS.error(); + }, + registerDevice() { + FS.error(); + }, + analyzePath() { + FS.error(); + }, + ErrnoError() { + FS.error(); + } +}; + +Module["FS_createDataFile"] = FS.createDataFile; + +Module["FS_createPreloadedFile"] = FS.createPreloadedFile; + +var dataURIPrefix = "data:application/octet-stream;base64,"; + +/** + * Indicates whether filename is a base64 data URI. + * @noinline + */ var isDataURI = filename => filename.startsWith(dataURIPrefix); + +/** + * Indicates whether filename is delivered via file protocol (as opposed to http/https) + * @noinline + */ var isFileURI = filename => filename.startsWith("file://"); + +function createExportWrapper(name, nargs) { + return (...args) => { + assert(runtimeInitialized, `native function \`${name}\` called before runtime initialization`); + var f = wasmExports[name]; + assert(f, `exported native function \`${name}\` not found`); + assert(args.length <= nargs, `native function \`${name}\` called with ${args.length} args but expects ${nargs}`); + return f(...args); + }; +} + +function findWasmBinary() { + var f = "hello.wasm"; + if (!isDataURI(f)) { + return locateFile(f); + } + return f; +} + +var wasmBinaryFile; + +function getBinarySync(file) { + if (file == wasmBinaryFile && wasmBinary) { + return new Uint8Array(wasmBinary); + } + if (readBinary) { + return readBinary(file); + } + throw "both async and sync fetching of the wasm failed"; +} + +function getBinaryPromise(binaryFile) { + if (!wasmBinary) { + return readAsync(binaryFile).then(response => new Uint8Array(/** @type{!ArrayBuffer} */ (response)), () => getBinarySync(binaryFile)); + } + return Promise.resolve().then(() => getBinarySync(binaryFile)); +} + +function instantiateArrayBuffer(binaryFile, imports, receiver) { + return getBinaryPromise(binaryFile).then(binary => WebAssembly.instantiate(binary, imports)).then(receiver, reason => { + err(`failed to asynchronously prepare wasm: ${reason}`); + if (isFileURI(wasmBinaryFile)) { + err(`warning: Loading from a file URI (${wasmBinaryFile}) is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing`); + } + abort(reason); + }); +} + +function instantiateAsync(binary, binaryFile, imports, callback) { + if (!binary && typeof WebAssembly.instantiateStreaming == "function" && !isDataURI(binaryFile) && !isFileURI(binaryFile) && !ENVIRONMENT_IS_NODE && typeof fetch == "function") { + return fetch(binaryFile, { + credentials: "same-origin" + }).then(response => { + /** @suppress {checkTypes} */ var result = WebAssembly.instantiateStreaming(response, imports); + return result.then(callback, function(reason) { + err(`wasm streaming compile failed: ${reason}`); + err("falling back to ArrayBuffer instantiation"); + return instantiateArrayBuffer(binaryFile, imports, callback); + }); + }); + } + return instantiateArrayBuffer(binaryFile, imports, callback); +} + +function getWasmImports() { + return { + "env": wasmImports, + "wasi_snapshot_preview1": wasmImports + }; +} + +function createWasm() { + var info = getWasmImports(); + /** @param {WebAssembly.Module=} module*/ function receiveInstance(instance, module) { + wasmExports = instance.exports; + wasmMemory = wasmExports["memory"]; + assert(wasmMemory, "memory not found in wasm exports"); + updateMemoryViews(); + wasmTable = wasmExports["__indirect_function_table"]; + assert(wasmTable, "table not found in wasm exports"); + addOnInit(wasmExports["__wasm_call_ctors"]); + removeRunDependency("wasm-instantiate"); + return wasmExports; + } + addRunDependency("wasm-instantiate"); + var trueModule = Module; + function receiveInstantiationResult(result) { + assert(Module === trueModule, "the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"); + trueModule = null; + receiveInstance(result["instance"]); + } + if (Module["instantiateWasm"]) { + try { + return Module["instantiateWasm"](info, receiveInstance); + } catch (e) { + err(`Module.instantiateWasm callback failed with error: ${e}`); + return false; + } + } + if (!wasmBinaryFile) wasmBinaryFile = findWasmBinary(); + instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult); + return {}; +} + +var tempDouble; + +var tempI64; + +function legacyModuleProp(prop, newName, incoming = true) { + if (!Object.getOwnPropertyDescriptor(Module, prop)) { + Object.defineProperty(Module, prop, { + configurable: true, + get() { + let extra = incoming ? " (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)" : ""; + abort(`\`Module.${prop}\` has been replaced by \`${newName}\`` + extra); + } + }); + } +} + +function ignoredModuleProp(prop) { + if (Object.getOwnPropertyDescriptor(Module, prop)) { + abort(`\`Module.${prop}\` was supplied but \`${prop}\` not included in INCOMING_MODULE_JS_API`); + } +} + +function isExportedByForceFilesystem(name) { + return name === "FS_createPath" || name === "FS_createDataFile" || name === "FS_createPreloadedFile" || name === "FS_unlink" || name === "addRunDependency" || name === "FS_createLazyFile" || name === "FS_createDevice" || name === "removeRunDependency"; +} + +function missingGlobal(sym, msg) { + if (typeof globalThis != "undefined") { + Object.defineProperty(globalThis, sym, { + configurable: true, + get() { + warnOnce(`\`${sym}\` is not longer defined by emscripten. ${msg}`); + return undefined; + } + }); + } +} + +missingGlobal("buffer", "Please use HEAP8.buffer or wasmMemory.buffer"); + +missingGlobal("asm", "Please use wasmExports instead"); + +function missingLibrarySymbol(sym) { + if (typeof globalThis != "undefined" && !Object.getOwnPropertyDescriptor(globalThis, sym)) { + Object.defineProperty(globalThis, sym, { + configurable: true, + get() { + var msg = `\`${sym}\` is a library symbol and not included by default; add it to your library.js __deps or to DEFAULT_LIBRARY_FUNCS_TO_INCLUDE on the command line`; + var librarySymbol = sym; + if (!librarySymbol.startsWith("_")) { + librarySymbol = "$" + sym; + } + msg += ` (e.g. -sDEFAULT_LIBRARY_FUNCS_TO_INCLUDE='${librarySymbol}')`; + if (isExportedByForceFilesystem(sym)) { + msg += ". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"; + } + warnOnce(msg); + return undefined; + } + }); + } + unexportedRuntimeSymbol(sym); +} + +function unexportedRuntimeSymbol(sym) { + if (!Object.getOwnPropertyDescriptor(Module, sym)) { + Object.defineProperty(Module, sym, { + configurable: true, + get() { + var msg = `'${sym}' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the Emscripten FAQ)`; + if (isExportedByForceFilesystem(sym)) { + msg += ". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"; + } + abort(msg); + } + }); + } +} + +function dbg(...args) { + console.warn(...args); +} + +/** @constructor */ function ExitStatus(status) { + this.name = "ExitStatus"; + this.message = `Program terminated with exit(${status})`; + this.status = status; +} + +var callRuntimeCallbacks = callbacks => { + while (callbacks.length > 0) { + callbacks.shift()(Module); + } +}; + +/** + * @param {number} ptr + * @param {string} type + */ function getValue(ptr, type = "i8") { + if (type.endsWith("*")) type = "*"; + switch (type) { + case "i1": + return SAFE_HEAP_LOAD(ptr, 1, 0); + + case "i8": + return SAFE_HEAP_LOAD(ptr, 1, 0); + + case "i16": + return SAFE_HEAP_LOAD(((ptr) >> 1) * 2, 2, 0); + + case "i32": + return SAFE_HEAP_LOAD(((ptr) >> 2) * 4, 4, 0); + + case "i64": + abort("to do getValue(i64) use WASM_BIGINT"); + + case "float": + return SAFE_HEAP_LOAD_D(((ptr) >> 2) * 4, 4, 0); + + case "double": + return SAFE_HEAP_LOAD_D(((ptr) >> 3) * 8, 8, 0); + + case "*": + return SAFE_HEAP_LOAD(((ptr) >> 2) * 4, 4, 1); + + default: + abort(`invalid type for getValue: ${type}`); + } +} + +function getValue_safe(ptr, type = "i8") { + if (type.endsWith("*")) type = "*"; + switch (type) { + case "i1": + return HEAP8[ptr]; + + case "i8": + return HEAP8[ptr]; + + case "i16": + return HEAP16[((ptr) >> 1)]; + + case "i32": + return HEAP32[((ptr) >> 2)]; + + case "i64": + abort("to do getValue(i64) use WASM_BIGINT"); + + case "float": + return HEAPF32[((ptr) >> 2)]; + + case "double": + return HEAPF64[((ptr) >> 3)]; + + case "*": + return HEAPU32[((ptr) >> 2)]; + + default: + abort(`invalid type for getValue: ${type}`); + } +} + +var noExitRuntime = Module["noExitRuntime"] || true; + +var ptrToString = ptr => { + assert(typeof ptr === "number"); + ptr >>>= 0; + return "0x" + ptr.toString(16).padStart(8, "0"); +}; + +/** + * @param {number} ptr + * @param {number} value + * @param {string} type + */ function setValue(ptr, value, type = "i8") { + if (type.endsWith("*")) type = "*"; + switch (type) { + case "i1": + SAFE_HEAP_STORE(ptr, value, 1); + break; + + case "i8": + SAFE_HEAP_STORE(ptr, value, 1); + break; + + case "i16": + SAFE_HEAP_STORE(((ptr) >> 1) * 2, value, 2); + break; + + case "i32": + SAFE_HEAP_STORE(((ptr) >> 2) * 4, value, 4); + break; + + case "i64": + abort("to do setValue(i64) use WASM_BIGINT"); + + case "float": + SAFE_HEAP_STORE_D(((ptr) >> 2) * 4, value, 4); + break; + + case "double": + SAFE_HEAP_STORE_D(((ptr) >> 3) * 8, value, 8); + break; + + case "*": + SAFE_HEAP_STORE(((ptr) >> 2) * 4, value, 4); + break; + + default: + abort(`invalid type for setValue: ${type}`); + } +} + +function setValue_safe(ptr, value, type = "i8") { + if (type.endsWith("*")) type = "*"; + switch (type) { + case "i1": + HEAP8[ptr] = value; + break; + + case "i8": + HEAP8[ptr] = value; + break; + + case "i16": + HEAP16[((ptr) >> 1)] = value; + break; + + case "i32": + HEAP32[((ptr) >> 2)] = value; + break; + + case "i64": + abort("to do setValue(i64) use WASM_BIGINT"); + + case "float": + HEAPF32[((ptr) >> 2)] = value; + break; + + case "double": + HEAPF64[((ptr) >> 3)] = value; + break; + + case "*": + HEAPU32[((ptr) >> 2)] = value; + break; + + default: + abort(`invalid type for setValue: ${type}`); + } +} + +var stackRestore = val => __emscripten_stack_restore(val); + +var stackSave = () => _emscripten_stack_get_current(); + +var unSign = (value, bits) => { + if (value >= 0) { + return value; + } + return bits <= 32 ? 2 * Math.abs(1 << (bits - 1)) + value : Math.pow(2, bits) + value; +}; + +var warnOnce = text => { + warnOnce.shown ||= {}; + if (!warnOnce.shown[text]) { + warnOnce.shown[text] = 1; + if (ENVIRONMENT_IS_NODE) text = "warning: " + text; + err(text); + } +}; + +var UTF8Decoder = typeof TextDecoder != "undefined" ? new TextDecoder : undefined; + +/** + * Given a pointer 'idx' to a null-terminated UTF8-encoded string in the given + * array that contains uint8 values, returns a copy of that string as a + * Javascript String object. + * heapOrArray is either a regular array, or a JavaScript typed array view. + * @param {number} idx + * @param {number=} maxBytesToRead + * @return {string} + */ var UTF8ArrayToString = (heapOrArray, idx, maxBytesToRead) => { + var endIdx = idx + maxBytesToRead; + var endPtr = idx; + while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr; + if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) { + return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr)); + } + var str = ""; + while (idx < endPtr) { + var u0 = heapOrArray[idx++]; + if (!(u0 & 128)) { + str += String.fromCharCode(u0); + continue; + } + var u1 = heapOrArray[idx++] & 63; + if ((u0 & 224) == 192) { + str += String.fromCharCode(((u0 & 31) << 6) | u1); + continue; + } + var u2 = heapOrArray[idx++] & 63; + if ((u0 & 240) == 224) { + u0 = ((u0 & 15) << 12) | (u1 << 6) | u2; + } else { + if ((u0 & 248) != 240) warnOnce("Invalid UTF-8 leading byte " + ptrToString(u0) + " encountered when deserializing a UTF-8 string in wasm memory to a JS string!"); + u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | (heapOrArray[idx++] & 63); + } + if (u0 < 65536) { + str += String.fromCharCode(u0); + } else { + var ch = u0 - 65536; + str += String.fromCharCode(55296 | (ch >> 10), 56320 | (ch & 1023)); + } + } + return str; +}; + +/** + * Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the + * emscripten HEAP, returns a copy of that string as a Javascript String object. + * + * @param {number} ptr + * @param {number=} maxBytesToRead - An optional length that specifies the + * maximum number of bytes to read. You can omit this parameter to scan the + * string until the first 0 byte. If maxBytesToRead is passed, and the string + * at [ptr, ptr+maxBytesToReadr[ contains a null byte in the middle, then the + * string will cut short at that byte index (i.e. maxBytesToRead will not + * produce a string of exact length [ptr, ptr+maxBytesToRead[) N.B. mixing + * frequent uses of UTF8ToString() with and without maxBytesToRead may throw + * JS JIT optimizations off, so it is worth to consider consistently using one + * @return {string} + */ var UTF8ToString = (ptr, maxBytesToRead) => { + assert(typeof ptr == "number", `UTF8ToString expects a number (got ${typeof ptr})`); + return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : ""; +}; + +var ___assert_fail = (condition, filename, line, func) => { + abort(`Assertion failed: ${UTF8ToString(condition)}, at: ` + [ filename ? UTF8ToString(filename) : "unknown filename", line, func ? UTF8ToString(func) : "unknown function" ]); +}; + +var __abort_js = () => { + abort("native code called abort()"); +}; + +var __emscripten_memcpy_js = (dest, src, num) => HEAPU8.copyWithin(dest, src, src + num); + +var _emscripten_set_main_loop_timing = (mode, value) => { + Browser.mainLoop.timingMode = mode; + Browser.mainLoop.timingValue = value; + if (!Browser.mainLoop.func) { + err("emscripten_set_main_loop_timing: Cannot set timing mode for main loop since a main loop does not exist! Call emscripten_set_main_loop first to set one up."); + return 1; + } + if (!Browser.mainLoop.running) { + Browser.mainLoop.running = true; + } + if (mode == 0) { + Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_setTimeout() { + var timeUntilNextTick = Math.max(0, Browser.mainLoop.tickStartTime + value - _emscripten_get_now()) | 0; + setTimeout(Browser.mainLoop.runner, timeUntilNextTick); + }; + Browser.mainLoop.method = "timeout"; + } else if (mode == 1) { + Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_rAF() { + Browser.requestAnimationFrame(Browser.mainLoop.runner); + }; + Browser.mainLoop.method = "rAF"; + } else if (mode == 2) { + if (typeof Browser.setImmediate == "undefined") { + if (typeof setImmediate == "undefined") { + var setImmediates = []; + var emscriptenMainLoopMessageId = "setimmediate"; + /** @param {Event} event */ var Browser_setImmediate_messageHandler = event => { + if (event.data === emscriptenMainLoopMessageId || event.data.target === emscriptenMainLoopMessageId) { + event.stopPropagation(); + setImmediates.shift()(); + } + }; + addEventListener("message", Browser_setImmediate_messageHandler, true); + Browser.setImmediate = /** @type{function(function(): ?, ...?): number} */ (function Browser_emulated_setImmediate(func) { + setImmediates.push(func); + if (ENVIRONMENT_IS_WORKER) { + Module["setImmediates"] ??= []; + Module["setImmediates"].push(func); + postMessage({ + target: emscriptenMainLoopMessageId + }); + } else postMessage(emscriptenMainLoopMessageId, "*"); + }); + } else { + Browser.setImmediate = setImmediate; + } + } + Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_setImmediate() { + Browser.setImmediate(Browser.mainLoop.runner); + }; + Browser.mainLoop.method = "immediate"; + } + return 0; +}; + +var _emscripten_get_now; + +_emscripten_get_now = () => performance.now(); + +/** + * @param {number=} arg + * @param {boolean=} noSetTiming + */ var setMainLoop = (browserIterationFunc, fps, simulateInfiniteLoop, arg, noSetTiming) => { + assert(!Browser.mainLoop.func, "emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters."); + Browser.mainLoop.func = browserIterationFunc; + Browser.mainLoop.arg = arg; + /** @type{number} */ var thisMainLoopId = (() => Browser.mainLoop.currentlyRunningMainloop)(); + function checkIsRunning() { + if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) { + return false; + } + return true; + } + Browser.mainLoop.running = false; + Browser.mainLoop.runner = function Browser_mainLoop_runner() { + if (ABORT) return; + if (Browser.mainLoop.queue.length > 0) { + var start = Date.now(); + var blocker = Browser.mainLoop.queue.shift(); + blocker.func(blocker.arg); + if (Browser.mainLoop.remainingBlockers) { + var remaining = Browser.mainLoop.remainingBlockers; + var next = remaining % 1 == 0 ? remaining - 1 : Math.floor(remaining); + if (blocker.counted) { + Browser.mainLoop.remainingBlockers = next; + } else { + next = next + .5; + Browser.mainLoop.remainingBlockers = (8 * remaining + next) / 9; + } + } + Browser.mainLoop.updateStatus(); + if (!checkIsRunning()) return; + setTimeout(Browser.mainLoop.runner, 0); + return; + } + if (!checkIsRunning()) return; + Browser.mainLoop.currentFrameNumber = Browser.mainLoop.currentFrameNumber + 1 | 0; + if (Browser.mainLoop.timingMode == 1 && Browser.mainLoop.timingValue > 1 && Browser.mainLoop.currentFrameNumber % Browser.mainLoop.timingValue != 0) { + Browser.mainLoop.scheduler(); + return; + } else if (Browser.mainLoop.timingMode == 0) { + Browser.mainLoop.tickStartTime = _emscripten_get_now(); + } + if (Browser.mainLoop.method === "timeout" && Module.ctx) { + warnOnce("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!"); + Browser.mainLoop.method = ""; + } + Browser.mainLoop.runIter(browserIterationFunc); + checkStackCookie(); + if (!checkIsRunning()) return; + if (typeof SDL == "object") SDL.audio?.queueNewAudioData?.(); + Browser.mainLoop.scheduler(); + }; + if (!noSetTiming) { + if (fps && fps > 0) { + _emscripten_set_main_loop_timing(0, 1e3 / fps); + } else { + _emscripten_set_main_loop_timing(1, 1); + } + Browser.mainLoop.scheduler(); + } + if (simulateInfiniteLoop) { + throw "unwind"; + } +}; + +var handleException = e => { + if (e instanceof ExitStatus || e == "unwind") { + return EXITSTATUS; + } + checkStackCookie(); + if (e instanceof WebAssembly.RuntimeError) { + if (_emscripten_stack_get_current() <= 0) { + err("Stack overflow detected. You can try increasing -sSTACK_SIZE (currently set to 65536)"); + } + } + quit_(1, e); +}; + +var runtimeKeepaliveCounter = 0; + +var keepRuntimeAlive = () => noExitRuntime || runtimeKeepaliveCounter > 0; + +var _proc_exit = code => { + EXITSTATUS = code; + if (!keepRuntimeAlive()) { + Module["onExit"]?.(code); + ABORT = true; + } + quit_(code, new ExitStatus(code)); +}; + +/** @param {boolean|number=} implicit */ var exitJS = (status, implicit) => { + EXITSTATUS = status; + checkUnflushedContent(); + if (keepRuntimeAlive() && !implicit) { + var msg = `program exited (with status: ${status}), but keepRuntimeAlive() is set (counter=${runtimeKeepaliveCounter}) due to an async operation, so halting execution but not exiting the runtime or preventing further async execution (you can use emscripten_force_exit, if you want to force a true shutdown)`; + err(msg); + } + _proc_exit(status); +}; + +var _exit = exitJS; + +var maybeExit = () => { + if (!keepRuntimeAlive()) { + try { + _exit(EXITSTATUS); + } catch (e) { + handleException(e); + } + } +}; + +var callUserCallback = func => { + if (ABORT) { + err("user callback triggered after runtime exited or application aborted. Ignoring."); + return; + } + try { + func(); + maybeExit(); + } catch (e) { + handleException(e); + } +}; + +/** @param {number=} timeout */ var safeSetTimeout = (func, timeout) => setTimeout(() => { + callUserCallback(func); +}, timeout); + +var preloadPlugins = Module["preloadPlugins"] || []; + +var Browser = { + mainLoop: { + running: false, + scheduler: null, + method: "", + currentlyRunningMainloop: 0, + func: null, + arg: 0, + timingMode: 0, + timingValue: 0, + currentFrameNumber: 0, + queue: [], + pause() { + Browser.mainLoop.scheduler = null; + Browser.mainLoop.currentlyRunningMainloop++; + }, + resume() { + Browser.mainLoop.currentlyRunningMainloop++; + var timingMode = Browser.mainLoop.timingMode; + var timingValue = Browser.mainLoop.timingValue; + var func = Browser.mainLoop.func; + Browser.mainLoop.func = null; + setMainLoop(func, 0, false, Browser.mainLoop.arg, true); + _emscripten_set_main_loop_timing(timingMode, timingValue); + Browser.mainLoop.scheduler(); + }, + updateStatus() { + if (Module["setStatus"]) { + var message = Module["statusMessage"] || "Please wait..."; + var remaining = Browser.mainLoop.remainingBlockers; + var expected = Browser.mainLoop.expectedBlockers; + if (remaining) { + if (remaining < expected) { + Module["setStatus"](`{message} ({expected - remaining}/{expected})`); + } else { + Module["setStatus"](message); + } + } else { + Module["setStatus"](""); + } + } + }, + runIter(func) { + if (ABORT) return; + if (Module["preMainLoop"]) { + var preRet = Module["preMainLoop"](); + if (preRet === false) { + return; + } + } + callUserCallback(func); + Module["postMainLoop"]?.(); + } + }, + isFullscreen: false, + pointerLock: false, + moduleContextCreatedCallbacks: [], + workers: [], + init() { + if (Browser.initted) return; + Browser.initted = true; + var imagePlugin = {}; + imagePlugin["canHandle"] = function imagePlugin_canHandle(name) { + return !Module.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/i.test(name); + }; + imagePlugin["handle"] = function imagePlugin_handle(byteArray, name, onload, onerror) { + var b = new Blob([ byteArray ], { + type: Browser.getMimetype(name) + }); + if (b.size !== byteArray.length) { + b = new Blob([ (new Uint8Array(byteArray)).buffer ], { + type: Browser.getMimetype(name) + }); + } + var url = URL.createObjectURL(b); + assert(typeof url == "string", "createObjectURL must return a url as a string"); + var img = new Image; + img.onload = () => { + assert(img.complete, `Image ${name} could not be decoded`); + var canvas = /** @type {!HTMLCanvasElement} */ (document.createElement("canvas")); + canvas.width = img.width; + canvas.height = img.height; + var ctx = canvas.getContext("2d"); + ctx.drawImage(img, 0, 0); + preloadedImages[name] = canvas; + URL.revokeObjectURL(url); + onload?.(byteArray); + }; + img.onerror = event => { + err(`Image ${url} could not be decoded`); + onerror?.(); + }; + img.src = url; + }; + preloadPlugins.push(imagePlugin); + var audioPlugin = {}; + audioPlugin["canHandle"] = function audioPlugin_canHandle(name) { + return !Module.noAudioDecoding && name.substr(-4) in { + ".ogg": 1, + ".wav": 1, + ".mp3": 1 + }; + }; + audioPlugin["handle"] = function audioPlugin_handle(byteArray, name, onload, onerror) { + var done = false; + function finish(audio) { + if (done) return; + done = true; + preloadedAudios[name] = audio; + onload?.(byteArray); + } + function fail() { + if (done) return; + done = true; + preloadedAudios[name] = new Audio; + onerror?.(); + } + var b = new Blob([ byteArray ], { + type: Browser.getMimetype(name) + }); + var url = URL.createObjectURL(b); + assert(typeof url == "string", "createObjectURL must return a url as a string"); + var audio = new Audio; + audio.addEventListener("canplaythrough", () => finish(audio), false); + audio.onerror = function audio_onerror(event) { + if (done) return; + err(`warning: browser could not fully decode audio ${name}, trying slower base64 approach`); + function encode64(data) { + var BASE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + var PAD = "="; + var ret = ""; + var leftchar = 0; + var leftbits = 0; + for (var i = 0; i < data.length; i++) { + leftchar = (leftchar << 8) | data[i]; + leftbits += 8; + while (leftbits >= 6) { + var curr = (leftchar >> (leftbits - 6)) & 63; + leftbits -= 6; + ret += BASE[curr]; + } + } + if (leftbits == 2) { + ret += BASE[(leftchar & 3) << 4]; + ret += PAD + PAD; + } else if (leftbits == 4) { + ret += BASE[(leftchar & 15) << 2]; + ret += PAD; + } + return ret; + } + audio.src = "data:audio/x-" + name.substr(-3) + ";base64," + encode64(byteArray); + finish(audio); + }; + audio.src = url; + safeSetTimeout(() => { + finish(audio); + }, 1e4); + }; + preloadPlugins.push(audioPlugin); + function pointerLockChange() { + Browser.pointerLock = document["pointerLockElement"] === Module["canvas"] || document["mozPointerLockElement"] === Module["canvas"] || document["webkitPointerLockElement"] === Module["canvas"] || document["msPointerLockElement"] === Module["canvas"]; + } + var canvas = Module["canvas"]; + if (canvas) { + canvas.requestPointerLock = canvas["requestPointerLock"] || canvas["mozRequestPointerLock"] || canvas["webkitRequestPointerLock"] || canvas["msRequestPointerLock"] || (() => {}); + canvas.exitPointerLock = document["exitPointerLock"] || document["mozExitPointerLock"] || document["webkitExitPointerLock"] || document["msExitPointerLock"] || (() => {}); + canvas.exitPointerLock = canvas.exitPointerLock.bind(document); + document.addEventListener("pointerlockchange", pointerLockChange, false); + document.addEventListener("mozpointerlockchange", pointerLockChange, false); + document.addEventListener("webkitpointerlockchange", pointerLockChange, false); + document.addEventListener("mspointerlockchange", pointerLockChange, false); + if (Module["elementPointerLock"]) { + canvas.addEventListener("click", ev => { + if (!Browser.pointerLock && Module["canvas"].requestPointerLock) { + Module["canvas"].requestPointerLock(); + ev.preventDefault(); + } + }, false); + } + } + }, + createContext(/** @type {HTMLCanvasElement} */ canvas, useWebGL, setInModule, webGLContextAttributes) { + if (useWebGL && Module.ctx && canvas == Module.canvas) return Module.ctx; + var ctx; + var contextHandle; + if (useWebGL) { + var contextAttributes = { + antialias: false, + alpha: false, + majorVersion: 1 + }; + if (webGLContextAttributes) { + for (var attribute in webGLContextAttributes) { + contextAttributes[attribute] = webGLContextAttributes[attribute]; + } + } + if (typeof GL != "undefined") { + contextHandle = GL.createContext(canvas, contextAttributes); + if (contextHandle) { + ctx = GL.getContext(contextHandle).GLctx; + } + } + } else { + ctx = canvas.getContext("2d"); + } + if (!ctx) return null; + if (setInModule) { + if (!useWebGL) assert(typeof GLctx == "undefined", "cannot set in module if GLctx is used, but we are a non-GL context that would replace it"); + Module.ctx = ctx; + if (useWebGL) GL.makeContextCurrent(contextHandle); + Module.useWebGL = useWebGL; + Browser.moduleContextCreatedCallbacks.forEach(callback => callback()); + Browser.init(); + } + return ctx; + }, + destroyContext(canvas, useWebGL, setInModule) {}, + fullscreenHandlersInstalled: false, + lockPointer: undefined, + resizeCanvas: undefined, + requestFullscreen(lockPointer, resizeCanvas) { + Browser.lockPointer = lockPointer; + Browser.resizeCanvas = resizeCanvas; + if (typeof Browser.lockPointer == "undefined") Browser.lockPointer = true; + if (typeof Browser.resizeCanvas == "undefined") Browser.resizeCanvas = false; + var canvas = Module["canvas"]; + function fullscreenChange() { + Browser.isFullscreen = false; + var canvasContainer = canvas.parentNode; + if ((document["fullscreenElement"] || document["mozFullScreenElement"] || document["msFullscreenElement"] || document["webkitFullscreenElement"] || document["webkitCurrentFullScreenElement"]) === canvasContainer) { + canvas.exitFullscreen = Browser.exitFullscreen; + if (Browser.lockPointer) canvas.requestPointerLock(); + Browser.isFullscreen = true; + if (Browser.resizeCanvas) { + Browser.setFullscreenCanvasSize(); + } else { + Browser.updateCanvasDimensions(canvas); + } + } else { + canvasContainer.parentNode.insertBefore(canvas, canvasContainer); + canvasContainer.parentNode.removeChild(canvasContainer); + if (Browser.resizeCanvas) { + Browser.setWindowedCanvasSize(); + } else { + Browser.updateCanvasDimensions(canvas); + } + } + Module["onFullScreen"]?.(Browser.isFullscreen); + Module["onFullscreen"]?.(Browser.isFullscreen); + } + if (!Browser.fullscreenHandlersInstalled) { + Browser.fullscreenHandlersInstalled = true; + document.addEventListener("fullscreenchange", fullscreenChange, false); + document.addEventListener("mozfullscreenchange", fullscreenChange, false); + document.addEventListener("webkitfullscreenchange", fullscreenChange, false); + document.addEventListener("MSFullscreenChange", fullscreenChange, false); + } + var canvasContainer = document.createElement("div"); + canvas.parentNode.insertBefore(canvasContainer, canvas); + canvasContainer.appendChild(canvas); + canvasContainer.requestFullscreen = canvasContainer["requestFullscreen"] || canvasContainer["mozRequestFullScreen"] || canvasContainer["msRequestFullscreen"] || (canvasContainer["webkitRequestFullscreen"] ? () => canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"]) : null) || (canvasContainer["webkitRequestFullScreen"] ? () => canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"]) : null); + canvasContainer.requestFullscreen(); + }, + requestFullScreen() { + abort("Module.requestFullScreen has been replaced by Module.requestFullscreen (without a capital S)"); + }, + exitFullscreen() { + if (!Browser.isFullscreen) { + return false; + } + var CFS = document["exitFullscreen"] || document["cancelFullScreen"] || document["mozCancelFullScreen"] || document["msExitFullscreen"] || document["webkitCancelFullScreen"] || (() => {}); + CFS.apply(document, []); + return true; + }, + nextRAF: 0, + fakeRequestAnimationFrame(func) { + var now = Date.now(); + if (Browser.nextRAF === 0) { + Browser.nextRAF = now + 1e3 / 60; + } else { + while (now + 2 >= Browser.nextRAF) { + Browser.nextRAF += 1e3 / 60; + } + } + var delay = Math.max(Browser.nextRAF - now, 0); + setTimeout(func, delay); + }, + requestAnimationFrame(func) { + if (typeof requestAnimationFrame == "function") { + requestAnimationFrame(func); + return; + } + var RAF = Browser.fakeRequestAnimationFrame; + RAF(func); + }, + safeSetTimeout(func, timeout) { + return safeSetTimeout(func, timeout); + }, + safeRequestAnimationFrame(func) { + return Browser.requestAnimationFrame(() => { + callUserCallback(func); + }); + }, + getMimetype(name) { + return { + "jpg": "image/jpeg", + "jpeg": "image/jpeg", + "png": "image/png", + "bmp": "image/bmp", + "ogg": "audio/ogg", + "wav": "audio/wav", + "mp3": "audio/mpeg" + }[name.substr(name.lastIndexOf(".") + 1)]; + }, + getUserMedia(func) { + window.getUserMedia ||= navigator["getUserMedia"] || navigator["mozGetUserMedia"]; + window.getUserMedia(func); + }, + getMovementX(event) { + return event["movementX"] || event["mozMovementX"] || event["webkitMovementX"] || 0; + }, + getMovementY(event) { + return event["movementY"] || event["mozMovementY"] || event["webkitMovementY"] || 0; + }, + getMouseWheelDelta(event) { + var delta = 0; + switch (event.type) { + case "DOMMouseScroll": + delta = event.detail / 3; + break; + + case "mousewheel": + delta = event.wheelDelta / 120; + break; + + case "wheel": + delta = event.deltaY; + switch (event.deltaMode) { + case 0: + delta /= 100; + break; + + case 1: + delta /= 3; + break; + + case 2: + delta *= 80; + break; + + default: + throw "unrecognized mouse wheel delta mode: " + event.deltaMode; + } + break; + + default: + throw "unrecognized mouse wheel event: " + event.type; + } + return delta; + }, + mouseX: 0, + mouseY: 0, + mouseMovementX: 0, + mouseMovementY: 0, + touches: {}, + lastTouches: {}, + calculateMouseCoords(pageX, pageY) { + var rect = Module["canvas"].getBoundingClientRect(); + var cw = Module["canvas"].width; + var ch = Module["canvas"].height; + var scrollX = ((typeof window.scrollX != "undefined") ? window.scrollX : window.pageXOffset); + var scrollY = ((typeof window.scrollY != "undefined") ? window.scrollY : window.pageYOffset); + assert((typeof scrollX != "undefined") && (typeof scrollY != "undefined"), "Unable to retrieve scroll position, mouse positions likely broken."); + var adjustedX = pageX - (scrollX + rect.left); + var adjustedY = pageY - (scrollY + rect.top); + adjustedX = adjustedX * (cw / rect.width); + adjustedY = adjustedY * (ch / rect.height); + return { + x: adjustedX, + y: adjustedY + }; + }, + setMouseCoords(pageX, pageY) { + const {x: x, y: y} = Browser.calculateMouseCoords(pageX, pageY); + Browser.mouseMovementX = x - Browser.mouseX; + Browser.mouseMovementY = y - Browser.mouseY; + Browser.mouseX = x; + Browser.mouseY = y; + }, + calculateMouseEvent(event) { + if (Browser.pointerLock) { + if (event.type != "mousemove" && ("mozMovementX" in event)) { + Browser.mouseMovementX = Browser.mouseMovementY = 0; + } else { + Browser.mouseMovementX = Browser.getMovementX(event); + Browser.mouseMovementY = Browser.getMovementY(event); + } + Browser.mouseX += Browser.mouseMovementX; + Browser.mouseY += Browser.mouseMovementY; + } else { + if (event.type === "touchstart" || event.type === "touchend" || event.type === "touchmove") { + var touch = event.touch; + if (touch === undefined) { + return; + } + var coords = Browser.calculateMouseCoords(touch.pageX, touch.pageY); + if (event.type === "touchstart") { + Browser.lastTouches[touch.identifier] = coords; + Browser.touches[touch.identifier] = coords; + } else if (event.type === "touchend" || event.type === "touchmove") { + var last = Browser.touches[touch.identifier]; + last ||= coords; + Browser.lastTouches[touch.identifier] = last; + Browser.touches[touch.identifier] = coords; + } + return; + } + Browser.setMouseCoords(event.pageX, event.pageY); + } + }, + resizeListeners: [], + updateResizeListeners() { + var canvas = Module["canvas"]; + Browser.resizeListeners.forEach(listener => listener(canvas.width, canvas.height)); + }, + setCanvasSize(width, height, noUpdates) { + var canvas = Module["canvas"]; + Browser.updateCanvasDimensions(canvas, width, height); + if (!noUpdates) Browser.updateResizeListeners(); + }, + windowedWidth: 0, + windowedHeight: 0, + setFullscreenCanvasSize() { + if (typeof SDL != "undefined") { + var flags = SAFE_HEAP_LOAD(((SDL.screen) >> 2) * 4, 4, 1); + flags = flags | 8388608; + SAFE_HEAP_STORE(((SDL.screen) >> 2) * 4, flags, 4); + } + Browser.updateCanvasDimensions(Module["canvas"]); + Browser.updateResizeListeners(); + }, + setWindowedCanvasSize() { + if (typeof SDL != "undefined") { + var flags = SAFE_HEAP_LOAD(((SDL.screen) >> 2) * 4, 4, 1); + flags = flags & ~8388608; + SAFE_HEAP_STORE(((SDL.screen) >> 2) * 4, flags, 4); + } + Browser.updateCanvasDimensions(Module["canvas"]); + Browser.updateResizeListeners(); + }, + updateCanvasDimensions(canvas, wNative, hNative) { + if (wNative && hNative) { + canvas.widthNative = wNative; + canvas.heightNative = hNative; + } else { + wNative = canvas.widthNative; + hNative = canvas.heightNative; + } + var w = wNative; + var h = hNative; + if (Module["forcedAspectRatio"] && Module["forcedAspectRatio"] > 0) { + if (w / h < Module["forcedAspectRatio"]) { + w = Math.round(h * Module["forcedAspectRatio"]); + } else { + h = Math.round(w / Module["forcedAspectRatio"]); + } + } + if (((document["fullscreenElement"] || document["mozFullScreenElement"] || document["msFullscreenElement"] || document["webkitFullscreenElement"] || document["webkitCurrentFullScreenElement"]) === canvas.parentNode) && (typeof screen != "undefined")) { + var factor = Math.min(screen.width / w, screen.height / h); + w = Math.round(w * factor); + h = Math.round(h * factor); + } + if (Browser.resizeCanvas) { + if (canvas.width != w) canvas.width = w; + if (canvas.height != h) canvas.height = h; + if (typeof canvas.style != "undefined") { + canvas.style.removeProperty("width"); + canvas.style.removeProperty("height"); + } + } else { + if (canvas.width != wNative) canvas.width = wNative; + if (canvas.height != hNative) canvas.height = hNative; + if (typeof canvas.style != "undefined") { + if (w != wNative || h != hNative) { + canvas.style.setProperty("width", w + "px", "important"); + canvas.style.setProperty("height", h + "px", "important"); + } else { + canvas.style.removeProperty("width"); + canvas.style.removeProperty("height"); + } + } + } + } +}; + +var _emscripten_cancel_main_loop = () => { + Browser.mainLoop.pause(); + Browser.mainLoop.func = null; +}; + +var getHeapMax = () => HEAPU8.length; + +var abortOnCannotGrowMemory = requestedSize => { + abort(`Cannot enlarge memory arrays to size ${requestedSize} bytes (OOM). Either (1) compile with -sINITIAL_MEMORY=X with X higher than the current value ${HEAP8.length}, (2) compile with -sALLOW_MEMORY_GROWTH which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -sABORTING_MALLOC=0`); +}; + +var _emscripten_resize_heap = requestedSize => { + var oldSize = HEAPU8.length; + requestedSize >>>= 0; + abortOnCannotGrowMemory(requestedSize); +}; + +var wasmTableMirror = []; + +/** @type {WebAssembly.Table} */ var wasmTable; + +var getWasmTableEntry = funcPtr => { + var func = wasmTableMirror[funcPtr]; + if (!func) { + if (funcPtr >= wasmTableMirror.length) wasmTableMirror.length = funcPtr + 1; + wasmTableMirror[funcPtr] = func = wasmTable.get(funcPtr); + } + assert(wasmTable.get(funcPtr) == func, "JavaScript-side Wasm function table mirror is out of date!"); + return func; +}; + +var _emscripten_set_main_loop = (func, fps, simulateInfiniteLoop) => { + var browserIterationFunc = getWasmTableEntry(func); + setMainLoop(browserIterationFunc, fps, simulateInfiniteLoop); +}; + +var SYSCALLS = { + varargs: undefined, + getStr(ptr) { + var ret = UTF8ToString(ptr); + return ret; + } +}; + +var _fd_close = fd => { + abort("fd_close called without SYSCALLS_REQUIRE_FILESYSTEM"); +}; + +var convertI32PairToI53Checked = (lo, hi) => { + assert(lo == (lo >>> 0) || lo == (lo | 0)); + assert(hi === (hi | 0)); + return ((hi + 2097152) >>> 0 < 4194305 - !!lo) ? (lo >>> 0) + hi * 4294967296 : NaN; +}; + +function _fd_seek(fd, offset_low, offset_high, whence, newOffset) { + var offset = convertI32PairToI53Checked(offset_low, offset_high); + return 70; +} + +var printCharBuffers = [ null, [], [] ]; + +var printChar = (stream, curr) => { + var buffer = printCharBuffers[stream]; + assert(buffer); + if (curr === 0 || curr === 10) { + (stream === 1 ? out : err)(UTF8ArrayToString(buffer, 0)); + buffer.length = 0; + } else { + buffer.push(curr); + } +}; + +var flush_NO_FILESYSTEM = () => { + _fflush(0); + if (printCharBuffers[1].length) printChar(1, 10); + if (printCharBuffers[2].length) printChar(2, 10); +}; + +var _fd_write = (fd, iov, iovcnt, pnum) => { + var num = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = SAFE_HEAP_LOAD(((iov) >> 2) * 4, 4, 1); + var len = SAFE_HEAP_LOAD((((iov) + (4)) >> 2) * 4, 4, 1); + iov += 8; + for (var j = 0; j < len; j++) { + printChar(fd, SAFE_HEAP_LOAD(ptr + j, 1, 1)); + } + num += len; + } + SAFE_HEAP_STORE(((pnum) >> 2) * 4, num, 4); + return 0; +}; + +var lengthBytesUTF8 = str => { + var len = 0; + for (var i = 0; i < str.length; ++i) { + var c = str.charCodeAt(i); + if (c <= 127) { + len++; + } else if (c <= 2047) { + len += 2; + } else if (c >= 55296 && c <= 57343) { + len += 4; + ++i; + } else { + len += 3; + } + } + return len; +}; + +var stringToUTF8Array = (str, heap, outIdx, maxBytesToWrite) => { + assert(typeof str === "string", `stringToUTF8Array expects a string (got ${typeof str})`); + if (!(maxBytesToWrite > 0)) return 0; + var startIdx = outIdx; + var endIdx = outIdx + maxBytesToWrite - 1; + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 55296 && u <= 57343) { + var u1 = str.charCodeAt(++i); + u = 65536 + ((u & 1023) << 10) | (u1 & 1023); + } + if (u <= 127) { + if (outIdx >= endIdx) break; + heap[outIdx++] = u; + } else if (u <= 2047) { + if (outIdx + 1 >= endIdx) break; + heap[outIdx++] = 192 | (u >> 6); + heap[outIdx++] = 128 | (u & 63); + } else if (u <= 65535) { + if (outIdx + 2 >= endIdx) break; + heap[outIdx++] = 224 | (u >> 12); + heap[outIdx++] = 128 | ((u >> 6) & 63); + heap[outIdx++] = 128 | (u & 63); + } else { + if (outIdx + 3 >= endIdx) break; + if (u > 1114111) warnOnce("Invalid Unicode code point " + ptrToString(u) + " encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF)."); + heap[outIdx++] = 240 | (u >> 18); + heap[outIdx++] = 128 | ((u >> 12) & 63); + heap[outIdx++] = 128 | ((u >> 6) & 63); + heap[outIdx++] = 128 | (u & 63); + } + } + heap[outIdx] = 0; + return outIdx - startIdx; +}; + +var stringToUTF8 = (str, outPtr, maxBytesToWrite) => { + assert(typeof maxBytesToWrite == "number", "stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"); + return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite); +}; + +var stackAlloc = sz => __emscripten_stack_alloc(sz); + +var stringToUTF8OnStack = str => { + var size = lengthBytesUTF8(str) + 1; + var ret = stackAlloc(size); + stringToUTF8(str, ret, size); + return ret; +}; + +var WebGPU = { + errorCallback: (callback, type, message, userdata) => { + var sp = stackSave(); + var messagePtr = stringToUTF8OnStack(message); + getWasmTableEntry(callback)(type, messagePtr, userdata); + stackRestore(sp); + }, + initManagers: () => { + if (WebGPU.mgrDevice) return; + /** @constructor */ function Manager() { + this.objects = {}; + this.nextId = 1; + this.create = function(object, wrapper = {}) { + var id = this.nextId++; + assert(typeof this.objects[id] == "undefined"); + wrapper.refcount = 1; + wrapper.object = object; + this.objects[id] = wrapper; + return id; + }; + this.get = function(id) { + if (!id) return undefined; + var o = this.objects[id]; + assert(typeof o != "undefined"); + return o.object; + }; + this.reference = function(id) { + var o = this.objects[id]; + assert(typeof o != "undefined"); + o.refcount++; + }; + this.release = function(id) { + var o = this.objects[id]; + assert(typeof o != "undefined"); + assert(o.refcount > 0); + o.refcount--; + if (o.refcount <= 0) { + delete this.objects[id]; + } + }; + } + WebGPU.mgrSurface = WebGPU.mgrSurface || new Manager; + WebGPU.mgrSwapChain = WebGPU.mgrSwapChain || new Manager; + WebGPU.mgrAdapter = WebGPU.mgrAdapter || new Manager; + WebGPU.mgrDevice = WebGPU.mgrDevice || new Manager; + WebGPU.mgrQueue = WebGPU.mgrQueue || new Manager; + WebGPU.mgrCommandBuffer = WebGPU.mgrCommandBuffer || new Manager; + WebGPU.mgrCommandEncoder = WebGPU.mgrCommandEncoder || new Manager; + WebGPU.mgrRenderPassEncoder = WebGPU.mgrRenderPassEncoder || new Manager; + WebGPU.mgrComputePassEncoder = WebGPU.mgrComputePassEncoder || new Manager; + WebGPU.mgrBindGroup = WebGPU.mgrBindGroup || new Manager; + WebGPU.mgrBuffer = WebGPU.mgrBuffer || new Manager; + WebGPU.mgrSampler = WebGPU.mgrSampler || new Manager; + WebGPU.mgrTexture = WebGPU.mgrTexture || new Manager; + WebGPU.mgrTextureView = WebGPU.mgrTextureView || new Manager; + WebGPU.mgrQuerySet = WebGPU.mgrQuerySet || new Manager; + WebGPU.mgrBindGroupLayout = WebGPU.mgrBindGroupLayout || new Manager; + WebGPU.mgrPipelineLayout = WebGPU.mgrPipelineLayout || new Manager; + WebGPU.mgrRenderPipeline = WebGPU.mgrRenderPipeline || new Manager; + WebGPU.mgrComputePipeline = WebGPU.mgrComputePipeline || new Manager; + WebGPU.mgrShaderModule = WebGPU.mgrShaderModule || new Manager; + WebGPU.mgrRenderBundleEncoder = WebGPU.mgrRenderBundleEncoder || new Manager; + WebGPU.mgrRenderBundle = WebGPU.mgrRenderBundle || new Manager; + }, + makeColor: ptr => ({ + "r": SAFE_HEAP_LOAD_D(((ptr) >> 3) * 8, 8, 0), + "g": SAFE_HEAP_LOAD_D((((ptr) + (8)) >> 3) * 8, 8, 0), + "b": SAFE_HEAP_LOAD_D((((ptr) + (16)) >> 3) * 8, 8, 0), + "a": SAFE_HEAP_LOAD_D((((ptr) + (24)) >> 3) * 8, 8, 0) + }), + makeExtent3D: ptr => ({ + "width": SAFE_HEAP_LOAD(((ptr) >> 2) * 4, 4, 1), + "height": SAFE_HEAP_LOAD((((ptr) + (4)) >> 2) * 4, 4, 1), + "depthOrArrayLayers": SAFE_HEAP_LOAD((((ptr) + (8)) >> 2) * 4, 4, 1) + }), + makeOrigin3D: ptr => ({ + "x": SAFE_HEAP_LOAD(((ptr) >> 2) * 4, 4, 1), + "y": SAFE_HEAP_LOAD((((ptr) + (4)) >> 2) * 4, 4, 1), + "z": SAFE_HEAP_LOAD((((ptr) + (8)) >> 2) * 4, 4, 1) + }), + makeImageCopyTexture: ptr => { + assert(ptr); + assert(SAFE_HEAP_LOAD(((ptr) >> 2) * 4, 4, 1) === 0); + return { + "texture": WebGPU.mgrTexture.get(SAFE_HEAP_LOAD((((ptr) + (4)) >> 2) * 4, 4, 1)), + "mipLevel": SAFE_HEAP_LOAD((((ptr) + (8)) >> 2) * 4, 4, 1), + "origin": WebGPU.makeOrigin3D(ptr + 12), + "aspect": WebGPU.TextureAspect[SAFE_HEAP_LOAD((((ptr) + (24)) >> 2) * 4, 4, 1)] + }; + }, + makeTextureDataLayout: ptr => { + assert(ptr); + assert(SAFE_HEAP_LOAD(((ptr) >> 2) * 4, 4, 1) === 0); + var bytesPerRow = SAFE_HEAP_LOAD((((ptr) + (16)) >> 2) * 4, 4, 1); + var rowsPerImage = SAFE_HEAP_LOAD((((ptr) + (20)) >> 2) * 4, 4, 1); + return { + "offset": SAFE_HEAP_LOAD(((((ptr + 4)) + (8)) >> 2) * 4, 4, 1) * 4294967296 + SAFE_HEAP_LOAD((((ptr) + (8)) >> 2) * 4, 4, 1), + "bytesPerRow": bytesPerRow === 4294967295 ? undefined : bytesPerRow, + "rowsPerImage": rowsPerImage === 4294967295 ? undefined : rowsPerImage + }; + }, + makeImageCopyBuffer: ptr => { + assert(ptr); + assert(SAFE_HEAP_LOAD(((ptr) >> 2) * 4, 4, 1) === 0); + var layoutPtr = ptr + 8; + var bufferCopyView = WebGPU.makeTextureDataLayout(layoutPtr); + bufferCopyView["buffer"] = WebGPU.mgrBuffer.get(SAFE_HEAP_LOAD((((ptr) + (32)) >> 2) * 4, 4, 1)); + return bufferCopyView; + }, + makePipelineConstants: (constantCount, constantsPtr) => { + if (!constantCount) return; + var constants = {}; + for (var i = 0; i < constantCount; ++i) { + var entryPtr = constantsPtr + 16 * i; + var key = UTF8ToString(SAFE_HEAP_LOAD((((entryPtr) + (4)) >> 2) * 4, 4, 1)); + constants[key] = SAFE_HEAP_LOAD_D((((entryPtr) + (8)) >> 3) * 8, 8, 0); + } + return constants; + }, + makePipelineLayout: layoutPtr => { + if (!layoutPtr) return "auto"; + return WebGPU.mgrPipelineLayout.get(layoutPtr); + }, + makeProgrammableStageDescriptor: ptr => { + if (!ptr) return undefined; + assert(ptr); + assert(SAFE_HEAP_LOAD(((ptr) >> 2) * 4, 4, 1) === 0); + var desc = { + "module": WebGPU.mgrShaderModule.get(SAFE_HEAP_LOAD((((ptr) + (4)) >> 2) * 4, 4, 1)), + "constants": WebGPU.makePipelineConstants(SAFE_HEAP_LOAD((((ptr) + (12)) >> 2) * 4, 4, 1), SAFE_HEAP_LOAD((((ptr) + (16)) >> 2) * 4, 4, 1)) + }; + var entryPointPtr = SAFE_HEAP_LOAD((((ptr) + (8)) >> 2) * 4, 4, 1); + if (entryPointPtr) desc["entryPoint"] = UTF8ToString(entryPointPtr); + return desc; + }, + fillLimitStruct: (limits, supportedLimitsOutPtr) => { + var limitsOutPtr = supportedLimitsOutPtr + 8; + function setLimitValueU32(name, limitOffset) { + var limitValue = limits[name]; + SAFE_HEAP_STORE((((limitsOutPtr) + (limitOffset)) >> 2) * 4, limitValue, 4); + } + function setLimitValueU64(name, limitOffset) { + var limitValue = limits[name]; + (tempI64 = [ limitValue >>> 0, (tempDouble = limitValue, (+(Math.abs(tempDouble))) >= 1 ? (tempDouble > 0 ? (+(Math.floor((tempDouble) / 4294967296))) >>> 0 : (~~((+(Math.ceil((tempDouble - +(((~~(tempDouble))) >>> 0)) / 4294967296))))) >>> 0) : 0) ], + SAFE_HEAP_STORE((((limitsOutPtr) + (limitOffset)) >> 2) * 4, tempI64[0], 4), SAFE_HEAP_STORE((((limitsOutPtr) + ((limitOffset) + (4))) >> 2) * 4, tempI64[1], 4)); + } + setLimitValueU32("maxTextureDimension1D", 0); + setLimitValueU32("maxTextureDimension2D", 4); + setLimitValueU32("maxTextureDimension3D", 8); + setLimitValueU32("maxTextureArrayLayers", 12); + setLimitValueU32("maxBindGroups", 16); + setLimitValueU32("maxBindGroupsPlusVertexBuffers", 20); + setLimitValueU32("maxBindingsPerBindGroup", 24); + setLimitValueU32("maxDynamicUniformBuffersPerPipelineLayout", 28); + setLimitValueU32("maxDynamicStorageBuffersPerPipelineLayout", 32); + setLimitValueU32("maxSampledTexturesPerShaderStage", 36); + setLimitValueU32("maxSamplersPerShaderStage", 40); + setLimitValueU32("maxStorageBuffersPerShaderStage", 44); + setLimitValueU32("maxStorageTexturesPerShaderStage", 48); + setLimitValueU32("maxUniformBuffersPerShaderStage", 52); + setLimitValueU32("minUniformBufferOffsetAlignment", 72); + setLimitValueU32("minStorageBufferOffsetAlignment", 76); + setLimitValueU64("maxUniformBufferBindingSize", 56); + setLimitValueU64("maxStorageBufferBindingSize", 64); + setLimitValueU32("maxVertexBuffers", 80); + setLimitValueU32("maxBufferSize", 88); + setLimitValueU32("maxVertexAttributes", 96); + setLimitValueU32("maxVertexBufferArrayStride", 100); + setLimitValueU32("maxInterStageShaderComponents", 104); + setLimitValueU32("maxInterStageShaderVariables", 108); + setLimitValueU32("maxColorAttachments", 112); + setLimitValueU32("maxColorAttachmentBytesPerSample", 116); + setLimitValueU32("maxComputeWorkgroupStorageSize", 120); + setLimitValueU32("maxComputeInvocationsPerWorkgroup", 124); + setLimitValueU32("maxComputeWorkgroupSizeX", 128); + setLimitValueU32("maxComputeWorkgroupSizeY", 132); + setLimitValueU32("maxComputeWorkgroupSizeZ", 136); + setLimitValueU32("maxComputeWorkgroupsPerDimension", 140); + }, + Int_BufferMapState: { + unmapped: 0, + pending: 1, + mapped: 2 + }, + Int_CompilationMessageType: { + error: 0, + warning: 1, + info: 2 + }, + Int_DeviceLostReason: { + undefined: 1, + unknown: 1, + destroyed: 2 + }, + Int_PreferredFormat: { + rgba8unorm: 18, + bgra8unorm: 23 + }, + WGSLFeatureName: [ , "readonly_and_readwrite_storage_textures", "packed_4x8_integer_dot_product", "unrestricted_pointer_parameters", "pointer_composite_access" ], + AddressMode: [ , "clamp-to-edge", "repeat", "mirror-repeat" ], + BlendFactor: [ , "zero", "one", "src", "one-minus-src", "src-alpha", "one-minus-src-alpha", "dst", "one-minus-dst", "dst-alpha", "one-minus-dst-alpha", "src-alpha-saturated", "constant", "one-minus-constant" ], + BlendOperation: [ , "add", "subtract", "reverse-subtract", "min", "max" ], + BufferBindingType: [ , "uniform", "storage", "read-only-storage" ], + BufferMapState: { + 1: "unmapped", + 2: "pending", + 3: "mapped" + }, + CompareFunction: [ , "never", "less", "equal", "less-equal", "greater", "not-equal", "greater-equal", "always" ], + CompilationInfoRequestStatus: [ "success", "error", "device-lost", "unknown" ], + CullMode: [ , "none", "front", "back" ], + ErrorFilter: { + 1: "validation", + 2: "out-of-memory", + 3: "internal" + }, + FeatureName: [ , "depth-clip-control", "depth32float-stencil8", "timestamp-query", "texture-compression-bc", "texture-compression-etc2", "texture-compression-astc", "indirect-first-instance", "shader-f16", "rg11b10ufloat-renderable", "bgra8unorm-storage", "float32-filterable" ], + FilterMode: [ , "nearest", "linear" ], + FrontFace: [ , "ccw", "cw" ], + IndexFormat: [ , "uint16", "uint32" ], + LoadOp: [ , "clear", "load" ], + MipmapFilterMode: [ , "nearest", "linear" ], + PowerPreference: [ , "low-power", "high-performance" ], + PrimitiveTopology: [ , "point-list", "line-list", "line-strip", "triangle-list", "triangle-strip" ], + QueryType: { + 1: "occlusion", + 2: "timestamp" + }, + SamplerBindingType: [ , "filtering", "non-filtering", "comparison" ], + StencilOperation: [ , "keep", "zero", "replace", "invert", "increment-clamp", "decrement-clamp", "increment-wrap", "decrement-wrap" ], + StorageTextureAccess: [ , "write-only", "read-only", "read-write" ], + StoreOp: [ , "store", "discard" ], + TextureAspect: [ , "all", "stencil-only", "depth-only" ], + TextureDimension: [ , "1d", "2d", "3d" ], + TextureFormat: [ , "r8unorm", "r8snorm", "r8uint", "r8sint", "r16uint", "r16sint", "r16float", "rg8unorm", "rg8snorm", "rg8uint", "rg8sint", "r32float", "r32uint", "r32sint", "rg16uint", "rg16sint", "rg16float", "rgba8unorm", "rgba8unorm-srgb", "rgba8snorm", "rgba8uint", "rgba8sint", "bgra8unorm", "bgra8unorm-srgb", "rgb10a2uint", "rgb10a2unorm", "rg11b10ufloat", "rgb9e5ufloat", "rg32float", "rg32uint", "rg32sint", "rgba16uint", "rgba16sint", "rgba16float", "rgba32float", "rgba32uint", "rgba32sint", "stencil8", "depth16unorm", "depth24plus", "depth24plus-stencil8", "depth32float", "depth32float-stencil8", "bc1-rgba-unorm", "bc1-rgba-unorm-srgb", "bc2-rgba-unorm", "bc2-rgba-unorm-srgb", "bc3-rgba-unorm", "bc3-rgba-unorm-srgb", "bc4-r-unorm", "bc4-r-snorm", "bc5-rg-unorm", "bc5-rg-snorm", "bc6h-rgb-ufloat", "bc6h-rgb-float", "bc7-rgba-unorm", "bc7-rgba-unorm-srgb", "etc2-rgb8unorm", "etc2-rgb8unorm-srgb", "etc2-rgb8a1unorm", "etc2-rgb8a1unorm-srgb", "etc2-rgba8unorm", "etc2-rgba8unorm-srgb", "eac-r11unorm", "eac-r11snorm", "eac-rg11unorm", "eac-rg11snorm", "astc-4x4-unorm", "astc-4x4-unorm-srgb", "astc-5x4-unorm", "astc-5x4-unorm-srgb", "astc-5x5-unorm", "astc-5x5-unorm-srgb", "astc-6x5-unorm", "astc-6x5-unorm-srgb", "astc-6x6-unorm", "astc-6x6-unorm-srgb", "astc-8x5-unorm", "astc-8x5-unorm-srgb", "astc-8x6-unorm", "astc-8x6-unorm-srgb", "astc-8x8-unorm", "astc-8x8-unorm-srgb", "astc-10x5-unorm", "astc-10x5-unorm-srgb", "astc-10x6-unorm", "astc-10x6-unorm-srgb", "astc-10x8-unorm", "astc-10x8-unorm-srgb", "astc-10x10-unorm", "astc-10x10-unorm-srgb", "astc-12x10-unorm", "astc-12x10-unorm-srgb", "astc-12x12-unorm", "astc-12x12-unorm-srgb" ], + TextureSampleType: [ , "float", "unfilterable-float", "depth", "sint", "uint" ], + TextureViewDimension: [ , "1d", "2d", "2d-array", "cube", "cube-array", "3d" ], + VertexFormat: [ , "uint8x2", "uint8x4", "sint8x2", "sint8x4", "unorm8x2", "unorm8x4", "snorm8x2", "snorm8x4", "uint16x2", "uint16x4", "sint16x2", "sint16x4", "unorm16x2", "unorm16x4", "snorm16x2", "snorm16x4", "float16x2", "float16x4", "float32", "float32x2", "float32x3", "float32x4", "uint32", "uint32x2", "uint32x3", "uint32x4", "sint32", "sint32x2", "sint32x3", "sint32x4", "unorm10-10-10-2" ], + VertexStepMode: [ , "vertex-buffer-not-used", "vertex", "instance" ], + FeatureNameString2Enum: { + undefined: "0", + "depth-clip-control": "1", + "depth32float-stencil8": "2", + "timestamp-query": "3", + "texture-compression-bc": "4", + "texture-compression-etc2": "5", + "texture-compression-astc": "6", + "indirect-first-instance": "7", + "shader-f16": "8", + "rg11b10ufloat-renderable": "9", + "bgra8unorm-storage": "10", + "float32-filterable": "11" + } +}; + +var _wgpuAdapterRelease = id => WebGPU.mgrAdapter.release(id); + +var _wgpuAdapterRequestDevice = (adapterId, descriptor, callback, userdata) => { + var adapter = WebGPU.mgrAdapter.get(adapterId); + var desc = {}; + if (descriptor) { + assert(descriptor); + assert(SAFE_HEAP_LOAD(((descriptor) >> 2) * 4, 4, 1) === 0); + var requiredFeatureCount = SAFE_HEAP_LOAD((((descriptor) + (8)) >> 2) * 4, 4, 1); + if (requiredFeatureCount) { + var requiredFeaturesPtr = SAFE_HEAP_LOAD((((descriptor) + (12)) >> 2) * 4, 4, 1); + desc["requiredFeatures"] = Array.from(HEAP32.subarray((((requiredFeaturesPtr) >> 2)), ((requiredFeaturesPtr + requiredFeatureCount * 4) >> 2)), feature => WebGPU.FeatureName[feature]); + } + var requiredLimitsPtr = SAFE_HEAP_LOAD((((descriptor) + (16)) >> 2) * 4, 4, 1); + if (requiredLimitsPtr) { + assert(requiredLimitsPtr); + assert(SAFE_HEAP_LOAD(((requiredLimitsPtr) >> 2) * 4, 4, 1) === 0); + var limitsPtr = requiredLimitsPtr + 8; + var requiredLimits = {}; + function setLimitU32IfDefined(name, limitOffset) { + var ptr = limitsPtr + limitOffset; + var value = SAFE_HEAP_LOAD(((ptr) >> 2) * 4, 4, 1); + if (value != 4294967295) { + requiredLimits[name] = value; + } + } + function setLimitU64IfDefined(name, limitOffset) { + var ptr = limitsPtr + limitOffset; + var limitPart1 = SAFE_HEAP_LOAD(((ptr) >> 2) * 4, 4, 1); + var limitPart2 = SAFE_HEAP_LOAD((((ptr) + (4)) >> 2) * 4, 4, 1); + if (limitPart1 != 4294967295 || limitPart2 != 4294967295) { + requiredLimits[name] = SAFE_HEAP_LOAD((((ptr + 4)) >> 2) * 4, 4, 1) * 4294967296 + SAFE_HEAP_LOAD(((ptr) >> 2) * 4, 4, 1); + } + } + setLimitU32IfDefined("maxTextureDimension1D", 0); + setLimitU32IfDefined("maxTextureDimension2D", 4); + setLimitU32IfDefined("maxTextureDimension3D", 8); + setLimitU32IfDefined("maxTextureArrayLayers", 12); + setLimitU32IfDefined("maxBindGroups", 16); + setLimitU32IfDefined("maxBindGroupsPlusVertexBuffers", 20); + setLimitU32IfDefined("maxDynamicUniformBuffersPerPipelineLayout", 28); + setLimitU32IfDefined("maxDynamicStorageBuffersPerPipelineLayout", 32); + setLimitU32IfDefined("maxSampledTexturesPerShaderStage", 36); + setLimitU32IfDefined("maxSamplersPerShaderStage", 40); + setLimitU32IfDefined("maxStorageBuffersPerShaderStage", 44); + setLimitU32IfDefined("maxStorageTexturesPerShaderStage", 48); + setLimitU32IfDefined("maxUniformBuffersPerShaderStage", 52); + setLimitU32IfDefined("minUniformBufferOffsetAlignment", 72); + setLimitU32IfDefined("minStorageBufferOffsetAlignment", 76); + setLimitU64IfDefined("maxUniformBufferBindingSize", 56); + setLimitU64IfDefined("maxStorageBufferBindingSize", 64); + setLimitU32IfDefined("maxVertexBuffers", 80); + setLimitU32IfDefined("maxBufferSize", 88); + setLimitU32IfDefined("maxVertexAttributes", 96); + setLimitU32IfDefined("maxVertexBufferArrayStride", 100); + setLimitU32IfDefined("maxInterStageShaderComponents", 104); + setLimitU32IfDefined("maxInterStageShaderVariables", 108); + setLimitU32IfDefined("maxColorAttachments", 112); + setLimitU32IfDefined("maxColorAttachmentBytesPerSample", 116); + setLimitU32IfDefined("maxComputeWorkgroupStorageSize", 120); + setLimitU32IfDefined("maxComputeInvocationsPerWorkgroup", 124); + setLimitU32IfDefined("maxComputeWorkgroupSizeX", 128); + setLimitU32IfDefined("maxComputeWorkgroupSizeY", 132); + setLimitU32IfDefined("maxComputeWorkgroupSizeZ", 136); + setLimitU32IfDefined("maxComputeWorkgroupsPerDimension", 140); + desc["requiredLimits"] = requiredLimits; + } + var defaultQueuePtr = SAFE_HEAP_LOAD((((descriptor) + (20)) >> 2) * 4, 4, 1); + if (defaultQueuePtr) { + var defaultQueueDesc = {}; + var labelPtr = SAFE_HEAP_LOAD((((defaultQueuePtr) + (4)) >> 2) * 4, 4, 1); + if (labelPtr) defaultQueueDesc["label"] = UTF8ToString(labelPtr); + desc["defaultQueue"] = defaultQueueDesc; + } + var deviceLostCallbackPtr = SAFE_HEAP_LOAD((((descriptor) + (28)) >> 2) * 4, 4, 1); + var deviceLostUserdataPtr = SAFE_HEAP_LOAD((((descriptor) + (32)) >> 2) * 4, 4, 1); + var labelPtr = SAFE_HEAP_LOAD((((descriptor) + (4)) >> 2) * 4, 4, 1); + if (labelPtr) desc["label"] = UTF8ToString(labelPtr); + } + adapter.requestDevice(desc).then(device => { + callUserCallback(() => { + var deviceWrapper = { + queueId: WebGPU.mgrQueue.create(device.queue) + }; + var deviceId = WebGPU.mgrDevice.create(device, deviceWrapper); + if (deviceLostCallbackPtr) { + device.lost.then(info => { + callUserCallback(() => WebGPU.errorCallback(deviceLostCallbackPtr, WebGPU.Int_DeviceLostReason[info.reason], info.message, deviceLostUserdataPtr)); + }); + } + getWasmTableEntry(callback)(0, deviceId, 0, userdata); + }); + }, function(ex) { + callUserCallback(() => { + var sp = stackSave(); + var messagePtr = stringToUTF8OnStack(ex.message); + getWasmTableEntry(callback)(1, 0, messagePtr, userdata); + stackRestore(sp); + }); + }); +}; + +var _wgpuBindGroupLayoutReference = id => WebGPU.mgrBindGroupLayout.reference(id); + +var _wgpuBindGroupLayoutRelease = id => WebGPU.mgrBindGroupLayout.release(id); + +var _wgpuBindGroupRelease = id => WebGPU.mgrBindGroup.release(id); + +var _wgpuBufferGetConstMappedRange = (bufferId, offset, size) => { + var bufferWrapper = WebGPU.mgrBuffer.objects[bufferId]; + assert(typeof bufferWrapper != "undefined"); + if (size === 0) warnOnce("getMappedRange size=0 no longer means WGPU_WHOLE_MAP_SIZE"); + if (size == -1) size = undefined; + var mapped; + try { + mapped = bufferWrapper.object.getMappedRange(offset, size); + } catch (ex) { + err(`wgpuBufferGetConstMappedRange(${offset}, ${size}) failed: ${ex}`); + return 0; + } + var data = _memalign(16, mapped.byteLength); + HEAPU8.set(new Uint8Array(mapped), data); + bufferWrapper.onUnmap.push(() => _free(data)); + return data; +}; + +var _wgpuBufferGetMappedRange = (bufferId, offset, size) => { + var bufferWrapper = WebGPU.mgrBuffer.objects[bufferId]; + assert(typeof bufferWrapper != "undefined"); + if (size === 0) warnOnce("getMappedRange size=0 no longer means WGPU_WHOLE_MAP_SIZE"); + if (size == -1) size = undefined; + if (bufferWrapper.mapMode !== 2) { + abort("GetMappedRange called, but buffer not mapped for writing"); + return 0; + } + var mapped; + try { + mapped = bufferWrapper.object.getMappedRange(offset, size); + } catch (ex) { + err(`wgpuBufferGetMappedRange(${offset}, ${size}) failed: ${ex}`); + return 0; + } + var data = _memalign(16, mapped.byteLength); + HEAPU8.fill(0, data, mapped.byteLength); + bufferWrapper.onUnmap.push(() => { + new Uint8Array(mapped).set(HEAPU8.subarray(data, data + mapped.byteLength)); + _free(data); + }); + return data; +}; + +var _wgpuBufferMapAsync = (bufferId, mode, offset, size, callback, userdata) => { + var bufferWrapper = WebGPU.mgrBuffer.objects[bufferId]; + assert(typeof bufferWrapper != "undefined"); + bufferWrapper.mapMode = mode; + bufferWrapper.onUnmap = []; + var buffer = bufferWrapper.object; + if (size == -1) size = undefined; + buffer.mapAsync(mode, offset, size).then(() => { + callUserCallback(() => { + getWasmTableEntry(callback)(0, userdata); + }); + }, () => { + callUserCallback(() => { + getWasmTableEntry(callback)(1, userdata); + }); + }); +}; + +var _wgpuBufferReference = id => WebGPU.mgrBuffer.reference(id); + +var _wgpuBufferRelease = id => WebGPU.mgrBuffer.release(id); + +var _wgpuBufferUnmap = bufferId => { + var bufferWrapper = WebGPU.mgrBuffer.objects[bufferId]; + assert(typeof bufferWrapper != "undefined"); + if (!bufferWrapper.onUnmap) { + return; + } + for (var i = 0; i < bufferWrapper.onUnmap.length; ++i) { + bufferWrapper.onUnmap[i](); + } + bufferWrapper.onUnmap = undefined; + bufferWrapper.object.unmap(); +}; + +var _wgpuCommandBufferRelease = id => WebGPU.mgrCommandBuffer.release(id); + +var _wgpuCommandEncoderBeginRenderPass = (encoderId, descriptor) => { + assert(descriptor); + function makeColorAttachment(caPtr) { + var viewPtr = SAFE_HEAP_LOAD((((caPtr) + (4)) >> 2) * 4, 4, 1); + if (viewPtr === 0) { + return undefined; + } + var depthSlice = SAFE_HEAP_LOAD((((caPtr) + (8)) >> 2) * 4, 4, 0); + if (depthSlice == -1) depthSlice = undefined; + var loadOpInt = SAFE_HEAP_LOAD((((caPtr) + (16)) >> 2) * 4, 4, 1); + assert(loadOpInt !== 0); + var storeOpInt = SAFE_HEAP_LOAD((((caPtr) + (20)) >> 2) * 4, 4, 1); + assert(storeOpInt !== 0); + var clearValue = WebGPU.makeColor(caPtr + 24); + return { + "view": WebGPU.mgrTextureView.get(viewPtr), + "depthSlice": depthSlice, + "resolveTarget": WebGPU.mgrTextureView.get(SAFE_HEAP_LOAD((((caPtr) + (12)) >> 2) * 4, 4, 1)), + "clearValue": clearValue, + "loadOp": WebGPU.LoadOp[loadOpInt], + "storeOp": WebGPU.StoreOp[storeOpInt] + }; + } + function makeColorAttachments(count, caPtr) { + var attachments = []; + for (var i = 0; i < count; ++i) { + attachments.push(makeColorAttachment(caPtr + 56 * i)); + } + return attachments; + } + function makeDepthStencilAttachment(dsaPtr) { + if (dsaPtr === 0) return undefined; + return { + "view": WebGPU.mgrTextureView.get(SAFE_HEAP_LOAD(((dsaPtr) >> 2) * 4, 4, 1)), + "depthClearValue": SAFE_HEAP_LOAD_D((((dsaPtr) + (12)) >> 2) * 4, 4, 0), + "depthLoadOp": WebGPU.LoadOp[SAFE_HEAP_LOAD((((dsaPtr) + (4)) >> 2) * 4, 4, 1)], + "depthStoreOp": WebGPU.StoreOp[SAFE_HEAP_LOAD((((dsaPtr) + (8)) >> 2) * 4, 4, 1)], + "depthReadOnly": !!(SAFE_HEAP_LOAD((((dsaPtr) + (16)) >> 2) * 4, 4, 1)), + "stencilClearValue": SAFE_HEAP_LOAD((((dsaPtr) + (28)) >> 2) * 4, 4, 1), + "stencilLoadOp": WebGPU.LoadOp[SAFE_HEAP_LOAD((((dsaPtr) + (20)) >> 2) * 4, 4, 1)], + "stencilStoreOp": WebGPU.StoreOp[SAFE_HEAP_LOAD((((dsaPtr) + (24)) >> 2) * 4, 4, 1)], + "stencilReadOnly": !!(SAFE_HEAP_LOAD((((dsaPtr) + (32)) >> 2) * 4, 4, 1)) + }; + } + function makeRenderPassTimestampWrites(twPtr) { + if (twPtr === 0) return undefined; + return { + "querySet": WebGPU.mgrQuerySet.get(SAFE_HEAP_LOAD(((twPtr) >> 2) * 4, 4, 1)), + "beginningOfPassWriteIndex": SAFE_HEAP_LOAD((((twPtr) + (4)) >> 2) * 4, 4, 1), + "endOfPassWriteIndex": SAFE_HEAP_LOAD((((twPtr) + (8)) >> 2) * 4, 4, 1) + }; + } + function makeRenderPassDescriptor(descriptor) { + assert(descriptor); + var nextInChainPtr = SAFE_HEAP_LOAD(((descriptor) >> 2) * 4, 4, 1); + var maxDrawCount = undefined; + if (nextInChainPtr !== 0) { + var sType = SAFE_HEAP_LOAD((((nextInChainPtr) + (4)) >> 2) * 4, 4, 1); + assert(sType === 15); + assert(0 === SAFE_HEAP_LOAD(((nextInChainPtr) >> 2) * 4, 4, 1)); + var renderPassDescriptorMaxDrawCount = nextInChainPtr; + assert(renderPassDescriptorMaxDrawCount); + assert(SAFE_HEAP_LOAD(((renderPassDescriptorMaxDrawCount) >> 2) * 4, 4, 1) === 0); + maxDrawCount = SAFE_HEAP_LOAD(((((renderPassDescriptorMaxDrawCount + 4)) + (8)) >> 2) * 4, 4, 1) * 4294967296 + SAFE_HEAP_LOAD((((renderPassDescriptorMaxDrawCount) + (8)) >> 2) * 4, 4, 1); + } + var desc = { + "label": undefined, + "colorAttachments": makeColorAttachments(SAFE_HEAP_LOAD((((descriptor) + (8)) >> 2) * 4, 4, 1), SAFE_HEAP_LOAD((((descriptor) + (12)) >> 2) * 4, 4, 1)), + "depthStencilAttachment": makeDepthStencilAttachment(SAFE_HEAP_LOAD((((descriptor) + (16)) >> 2) * 4, 4, 1)), + "occlusionQuerySet": WebGPU.mgrQuerySet.get(SAFE_HEAP_LOAD((((descriptor) + (20)) >> 2) * 4, 4, 1)), + "timestampWrites": makeRenderPassTimestampWrites(SAFE_HEAP_LOAD((((descriptor) + (24)) >> 2) * 4, 4, 1)), + "maxDrawCount": maxDrawCount + }; + var labelPtr = SAFE_HEAP_LOAD((((descriptor) + (4)) >> 2) * 4, 4, 1); + if (labelPtr) desc["label"] = UTF8ToString(labelPtr); + return desc; + } + var desc = makeRenderPassDescriptor(descriptor); + var commandEncoder = WebGPU.mgrCommandEncoder.get(encoderId); + return WebGPU.mgrRenderPassEncoder.create(commandEncoder.beginRenderPass(desc)); +}; + +function _wgpuCommandEncoderCopyBufferToBuffer(encoderId, srcId, srcOffset_low, srcOffset_high, dstId, dstOffset_low, dstOffset_high, size_low, size_high) { + var srcOffset = convertI32PairToI53Checked(srcOffset_low, srcOffset_high); + var dstOffset = convertI32PairToI53Checked(dstOffset_low, dstOffset_high); + var size = convertI32PairToI53Checked(size_low, size_high); + var commandEncoder = WebGPU.mgrCommandEncoder.get(encoderId); + var src = WebGPU.mgrBuffer.get(srcId); + var dst = WebGPU.mgrBuffer.get(dstId); + commandEncoder.copyBufferToBuffer(src, srcOffset, dst, dstOffset, size); +} + +var _wgpuCommandEncoderCopyTextureToBuffer = (encoderId, srcPtr, dstPtr, copySizePtr) => { + var commandEncoder = WebGPU.mgrCommandEncoder.get(encoderId); + var copySize = WebGPU.makeExtent3D(copySizePtr); + commandEncoder.copyTextureToBuffer(WebGPU.makeImageCopyTexture(srcPtr), WebGPU.makeImageCopyBuffer(dstPtr), copySize); +}; + +var _wgpuCommandEncoderFinish = (encoderId, descriptor) => { + var commandEncoder = WebGPU.mgrCommandEncoder.get(encoderId); + return WebGPU.mgrCommandBuffer.create(commandEncoder.finish()); +}; + +var _wgpuCommandEncoderRelease = id => WebGPU.mgrCommandEncoder.release(id); + +var readI53FromI64 = ptr => SAFE_HEAP_LOAD(((ptr) >> 2) * 4, 4, 1) + SAFE_HEAP_LOAD((((ptr) + (4)) >> 2) * 4, 4, 0) * 4294967296; + +var _wgpuDeviceCreateBindGroup = (deviceId, descriptor) => { + assert(descriptor); + assert(SAFE_HEAP_LOAD(((descriptor) >> 2) * 4, 4, 1) === 0); + function makeEntry(entryPtr) { + assert(entryPtr); + var bufferId = SAFE_HEAP_LOAD((((entryPtr) + (8)) >> 2) * 4, 4, 1); + var samplerId = SAFE_HEAP_LOAD((((entryPtr) + (32)) >> 2) * 4, 4, 1); + var textureViewId = SAFE_HEAP_LOAD((((entryPtr) + (36)) >> 2) * 4, 4, 1); + assert((bufferId !== 0) + (samplerId !== 0) + (textureViewId !== 0) === 1); + var binding = SAFE_HEAP_LOAD((((entryPtr) + (4)) >> 2) * 4, 4, 1); + if (bufferId) { + var size = readI53FromI64((entryPtr) + (24)); + if (size == -1) size = undefined; + return { + "binding": binding, + "resource": { + "buffer": WebGPU.mgrBuffer.get(bufferId), + "offset": SAFE_HEAP_LOAD(((((entryPtr + 4)) + (16)) >> 2) * 4, 4, 1) * 4294967296 + SAFE_HEAP_LOAD((((entryPtr) + (16)) >> 2) * 4, 4, 1), + "size": size + } + }; + } else if (samplerId) { + return { + "binding": binding, + "resource": WebGPU.mgrSampler.get(samplerId) + }; + } else { + return { + "binding": binding, + "resource": WebGPU.mgrTextureView.get(textureViewId) + }; + } + } + function makeEntries(count, entriesPtrs) { + var entries = []; + for (var i = 0; i < count; ++i) { + entries.push(makeEntry(entriesPtrs + 40 * i)); + } + return entries; + } + var desc = { + "label": undefined, + "layout": WebGPU.mgrBindGroupLayout.get(SAFE_HEAP_LOAD((((descriptor) + (8)) >> 2) * 4, 4, 1)), + "entries": makeEntries(SAFE_HEAP_LOAD((((descriptor) + (12)) >> 2) * 4, 4, 1), SAFE_HEAP_LOAD((((descriptor) + (16)) >> 2) * 4, 4, 1)) + }; + var labelPtr = SAFE_HEAP_LOAD((((descriptor) + (4)) >> 2) * 4, 4, 1); + if (labelPtr) desc["label"] = UTF8ToString(labelPtr); + var device = WebGPU.mgrDevice.get(deviceId); + return WebGPU.mgrBindGroup.create(device.createBindGroup(desc)); +}; + +var _wgpuDeviceCreateBindGroupLayout = (deviceId, descriptor) => { + assert(descriptor); + assert(SAFE_HEAP_LOAD(((descriptor) >> 2) * 4, 4, 1) === 0); + function makeBufferEntry(entryPtr) { + assert(entryPtr); + var typeInt = SAFE_HEAP_LOAD((((entryPtr) + (4)) >> 2) * 4, 4, 1); + if (!typeInt) return undefined; + return { + "type": WebGPU.BufferBindingType[typeInt], + "hasDynamicOffset": !!(SAFE_HEAP_LOAD((((entryPtr) + (8)) >> 2) * 4, 4, 1)), + "minBindingSize": SAFE_HEAP_LOAD(((((entryPtr + 4)) + (16)) >> 2) * 4, 4, 1) * 4294967296 + SAFE_HEAP_LOAD((((entryPtr) + (16)) >> 2) * 4, 4, 1) + }; + } + function makeSamplerEntry(entryPtr) { + assert(entryPtr); + var typeInt = SAFE_HEAP_LOAD((((entryPtr) + (4)) >> 2) * 4, 4, 1); + if (!typeInt) return undefined; + return { + "type": WebGPU.SamplerBindingType[typeInt] + }; + } + function makeTextureEntry(entryPtr) { + assert(entryPtr); + var sampleTypeInt = SAFE_HEAP_LOAD((((entryPtr) + (4)) >> 2) * 4, 4, 1); + if (!sampleTypeInt) return undefined; + return { + "sampleType": WebGPU.TextureSampleType[sampleTypeInt], + "viewDimension": WebGPU.TextureViewDimension[SAFE_HEAP_LOAD((((entryPtr) + (8)) >> 2) * 4, 4, 1)], + "multisampled": !!(SAFE_HEAP_LOAD((((entryPtr) + (12)) >> 2) * 4, 4, 1)) + }; + } + function makeStorageTextureEntry(entryPtr) { + assert(entryPtr); + var accessInt = SAFE_HEAP_LOAD((((entryPtr) + (4)) >> 2) * 4, 4, 1); + if (!accessInt) return undefined; + return { + "access": WebGPU.StorageTextureAccess[accessInt], + "format": WebGPU.TextureFormat[SAFE_HEAP_LOAD((((entryPtr) + (8)) >> 2) * 4, 4, 1)], + "viewDimension": WebGPU.TextureViewDimension[SAFE_HEAP_LOAD((((entryPtr) + (12)) >> 2) * 4, 4, 1)] + }; + } + function makeEntry(entryPtr) { + assert(entryPtr); + return { + "binding": SAFE_HEAP_LOAD((((entryPtr) + (4)) >> 2) * 4, 4, 1), + "visibility": SAFE_HEAP_LOAD((((entryPtr) + (8)) >> 2) * 4, 4, 1), + "buffer": makeBufferEntry(entryPtr + 16), + "sampler": makeSamplerEntry(entryPtr + 40), + "texture": makeTextureEntry(entryPtr + 48), + "storageTexture": makeStorageTextureEntry(entryPtr + 64) + }; + } + function makeEntries(count, entriesPtrs) { + var entries = []; + for (var i = 0; i < count; ++i) { + entries.push(makeEntry(entriesPtrs + 80 * i)); + } + return entries; + } + var desc = { + "entries": makeEntries(SAFE_HEAP_LOAD((((descriptor) + (8)) >> 2) * 4, 4, 1), SAFE_HEAP_LOAD((((descriptor) + (12)) >> 2) * 4, 4, 1)) + }; + var labelPtr = SAFE_HEAP_LOAD((((descriptor) + (4)) >> 2) * 4, 4, 1); + if (labelPtr) desc["label"] = UTF8ToString(labelPtr); + var device = WebGPU.mgrDevice.get(deviceId); + return WebGPU.mgrBindGroupLayout.create(device.createBindGroupLayout(desc)); +}; + +var _wgpuDeviceCreateBuffer = (deviceId, descriptor) => { + assert(descriptor); + assert(SAFE_HEAP_LOAD(((descriptor) >> 2) * 4, 4, 1) === 0); + var mappedAtCreation = !!(SAFE_HEAP_LOAD((((descriptor) + (24)) >> 2) * 4, 4, 1)); + var desc = { + "label": undefined, + "usage": SAFE_HEAP_LOAD((((descriptor) + (8)) >> 2) * 4, 4, 1), + "size": SAFE_HEAP_LOAD(((((descriptor + 4)) + (16)) >> 2) * 4, 4, 1) * 4294967296 + SAFE_HEAP_LOAD((((descriptor) + (16)) >> 2) * 4, 4, 1), + "mappedAtCreation": mappedAtCreation + }; + var labelPtr = SAFE_HEAP_LOAD((((descriptor) + (4)) >> 2) * 4, 4, 1); + if (labelPtr) desc["label"] = UTF8ToString(labelPtr); + var device = WebGPU.mgrDevice.get(deviceId); + var bufferWrapper = {}; + var id = WebGPU.mgrBuffer.create(device.createBuffer(desc), bufferWrapper); + if (mappedAtCreation) { + bufferWrapper.mapMode = 2; + bufferWrapper.onUnmap = []; + } + return id; +}; + +var _wgpuDeviceCreateCommandEncoder = (deviceId, descriptor) => { + var desc; + if (descriptor) { + assert(descriptor); + assert(SAFE_HEAP_LOAD(((descriptor) >> 2) * 4, 4, 1) === 0); + desc = { + "label": undefined + }; + var labelPtr = SAFE_HEAP_LOAD((((descriptor) + (4)) >> 2) * 4, 4, 1); + if (labelPtr) desc["label"] = UTF8ToString(labelPtr); + } + var device = WebGPU.mgrDevice.get(deviceId); + return WebGPU.mgrCommandEncoder.create(device.createCommandEncoder(desc)); +}; + +var _wgpuDeviceCreatePipelineLayout = (deviceId, descriptor) => { + assert(descriptor); + assert(SAFE_HEAP_LOAD(((descriptor) >> 2) * 4, 4, 1) === 0); + var bglCount = SAFE_HEAP_LOAD((((descriptor) + (8)) >> 2) * 4, 4, 1); + var bglPtr = SAFE_HEAP_LOAD((((descriptor) + (12)) >> 2) * 4, 4, 1); + var bgls = []; + for (var i = 0; i < bglCount; ++i) { + bgls.push(WebGPU.mgrBindGroupLayout.get(SAFE_HEAP_LOAD((((bglPtr) + (4 * i)) >> 2) * 4, 4, 1))); + } + var desc = { + "label": undefined, + "bindGroupLayouts": bgls + }; + var labelPtr = SAFE_HEAP_LOAD((((descriptor) + (4)) >> 2) * 4, 4, 1); + if (labelPtr) desc["label"] = UTF8ToString(labelPtr); + var device = WebGPU.mgrDevice.get(deviceId); + return WebGPU.mgrPipelineLayout.create(device.createPipelineLayout(desc)); +}; + +var generateRenderPipelineDesc = descriptor => { + assert(descriptor); + assert(SAFE_HEAP_LOAD(((descriptor) >> 2) * 4, 4, 1) === 0); + function makePrimitiveState(rsPtr) { + if (!rsPtr) return undefined; + assert(rsPtr); + var nextInChainPtr = SAFE_HEAP_LOAD(((rsPtr) >> 2) * 4, 4, 1); + var sType = nextInChainPtr ? SAFE_HEAP_LOAD((((nextInChainPtr) + (4)) >> 2) * 4, 4, 1) : 0; + return { + "topology": WebGPU.PrimitiveTopology[SAFE_HEAP_LOAD((((rsPtr) + (4)) >> 2) * 4, 4, 1)], + "stripIndexFormat": WebGPU.IndexFormat[SAFE_HEAP_LOAD((((rsPtr) + (8)) >> 2) * 4, 4, 1)], + "frontFace": WebGPU.FrontFace[SAFE_HEAP_LOAD((((rsPtr) + (12)) >> 2) * 4, 4, 1)], + "cullMode": WebGPU.CullMode[SAFE_HEAP_LOAD((((rsPtr) + (16)) >> 2) * 4, 4, 1)], + "unclippedDepth": sType === 7 && !!(SAFE_HEAP_LOAD((((nextInChainPtr) + (8)) >> 2) * 4, 4, 1)) + }; + } + function makeBlendComponent(bdPtr) { + if (!bdPtr) return undefined; + return { + "operation": WebGPU.BlendOperation[SAFE_HEAP_LOAD(((bdPtr) >> 2) * 4, 4, 1)], + "srcFactor": WebGPU.BlendFactor[SAFE_HEAP_LOAD((((bdPtr) + (4)) >> 2) * 4, 4, 1)], + "dstFactor": WebGPU.BlendFactor[SAFE_HEAP_LOAD((((bdPtr) + (8)) >> 2) * 4, 4, 1)] + }; + } + function makeBlendState(bsPtr) { + if (!bsPtr) return undefined; + return { + "alpha": makeBlendComponent(bsPtr + 12), + "color": makeBlendComponent(bsPtr + 0) + }; + } + function makeColorState(csPtr) { + assert(csPtr); + assert(SAFE_HEAP_LOAD(((csPtr) >> 2) * 4, 4, 1) === 0); + var formatInt = SAFE_HEAP_LOAD((((csPtr) + (4)) >> 2) * 4, 4, 1); + return formatInt === 0 ? undefined : { + "format": WebGPU.TextureFormat[formatInt], + "blend": makeBlendState(SAFE_HEAP_LOAD((((csPtr) + (8)) >> 2) * 4, 4, 1)), + "writeMask": SAFE_HEAP_LOAD((((csPtr) + (12)) >> 2) * 4, 4, 1) + }; + } + function makeColorStates(count, csArrayPtr) { + var states = []; + for (var i = 0; i < count; ++i) { + states.push(makeColorState(csArrayPtr + 16 * i)); + } + return states; + } + function makeStencilStateFace(ssfPtr) { + assert(ssfPtr); + return { + "compare": WebGPU.CompareFunction[SAFE_HEAP_LOAD(((ssfPtr) >> 2) * 4, 4, 1)], + "failOp": WebGPU.StencilOperation[SAFE_HEAP_LOAD((((ssfPtr) + (4)) >> 2) * 4, 4, 1)], + "depthFailOp": WebGPU.StencilOperation[SAFE_HEAP_LOAD((((ssfPtr) + (8)) >> 2) * 4, 4, 1)], + "passOp": WebGPU.StencilOperation[SAFE_HEAP_LOAD((((ssfPtr) + (12)) >> 2) * 4, 4, 1)] + }; + } + function makeDepthStencilState(dssPtr) { + if (!dssPtr) return undefined; + assert(dssPtr); + return { + "format": WebGPU.TextureFormat[SAFE_HEAP_LOAD((((dssPtr) + (4)) >> 2) * 4, 4, 1)], + "depthWriteEnabled": !!(SAFE_HEAP_LOAD((((dssPtr) + (8)) >> 2) * 4, 4, 1)), + "depthCompare": WebGPU.CompareFunction[SAFE_HEAP_LOAD((((dssPtr) + (12)) >> 2) * 4, 4, 1)], + "stencilFront": makeStencilStateFace(dssPtr + 16), + "stencilBack": makeStencilStateFace(dssPtr + 32), + "stencilReadMask": SAFE_HEAP_LOAD((((dssPtr) + (48)) >> 2) * 4, 4, 1), + "stencilWriteMask": SAFE_HEAP_LOAD((((dssPtr) + (52)) >> 2) * 4, 4, 1), + "depthBias": SAFE_HEAP_LOAD((((dssPtr) + (56)) >> 2) * 4, 4, 0), + "depthBiasSlopeScale": SAFE_HEAP_LOAD_D((((dssPtr) + (60)) >> 2) * 4, 4, 0), + "depthBiasClamp": SAFE_HEAP_LOAD_D((((dssPtr) + (64)) >> 2) * 4, 4, 0) + }; + } + function makeVertexAttribute(vaPtr) { + assert(vaPtr); + return { + "format": WebGPU.VertexFormat[SAFE_HEAP_LOAD(((vaPtr) >> 2) * 4, 4, 1)], + "offset": SAFE_HEAP_LOAD(((((vaPtr + 4)) + (8)) >> 2) * 4, 4, 1) * 4294967296 + SAFE_HEAP_LOAD((((vaPtr) + (8)) >> 2) * 4, 4, 1), + "shaderLocation": SAFE_HEAP_LOAD((((vaPtr) + (16)) >> 2) * 4, 4, 1) + }; + } + function makeVertexAttributes(count, vaArrayPtr) { + var vas = []; + for (var i = 0; i < count; ++i) { + vas.push(makeVertexAttribute(vaArrayPtr + i * 24)); + } + return vas; + } + function makeVertexBuffer(vbPtr) { + if (!vbPtr) return undefined; + var stepModeInt = SAFE_HEAP_LOAD((((vbPtr) + (8)) >> 2) * 4, 4, 1); + return stepModeInt === 1 ? null : { + "arrayStride": SAFE_HEAP_LOAD((((vbPtr + 4)) >> 2) * 4, 4, 1) * 4294967296 + SAFE_HEAP_LOAD(((vbPtr) >> 2) * 4, 4, 1), + "stepMode": WebGPU.VertexStepMode[stepModeInt], + "attributes": makeVertexAttributes(SAFE_HEAP_LOAD((((vbPtr) + (12)) >> 2) * 4, 4, 1), SAFE_HEAP_LOAD((((vbPtr) + (16)) >> 2) * 4, 4, 1)) + }; + } + function makeVertexBuffers(count, vbArrayPtr) { + if (!count) return undefined; + var vbs = []; + for (var i = 0; i < count; ++i) { + vbs.push(makeVertexBuffer(vbArrayPtr + i * 24)); + } + return vbs; + } + function makeVertexState(viPtr) { + if (!viPtr) return undefined; + assert(viPtr); + assert(SAFE_HEAP_LOAD(((viPtr) >> 2) * 4, 4, 1) === 0); + var desc = { + "module": WebGPU.mgrShaderModule.get(SAFE_HEAP_LOAD((((viPtr) + (4)) >> 2) * 4, 4, 1)), + "constants": WebGPU.makePipelineConstants(SAFE_HEAP_LOAD((((viPtr) + (12)) >> 2) * 4, 4, 1), SAFE_HEAP_LOAD((((viPtr) + (16)) >> 2) * 4, 4, 1)), + "buffers": makeVertexBuffers(SAFE_HEAP_LOAD((((viPtr) + (20)) >> 2) * 4, 4, 1), SAFE_HEAP_LOAD((((viPtr) + (24)) >> 2) * 4, 4, 1)) + }; + var entryPointPtr = SAFE_HEAP_LOAD((((viPtr) + (8)) >> 2) * 4, 4, 1); + if (entryPointPtr) desc["entryPoint"] = UTF8ToString(entryPointPtr); + return desc; + } + function makeMultisampleState(msPtr) { + if (!msPtr) return undefined; + assert(msPtr); + assert(SAFE_HEAP_LOAD(((msPtr) >> 2) * 4, 4, 1) === 0); + return { + "count": SAFE_HEAP_LOAD((((msPtr) + (4)) >> 2) * 4, 4, 1), + "mask": SAFE_HEAP_LOAD((((msPtr) + (8)) >> 2) * 4, 4, 1), + "alphaToCoverageEnabled": !!(SAFE_HEAP_LOAD((((msPtr) + (12)) >> 2) * 4, 4, 1)) + }; + } + function makeFragmentState(fsPtr) { + if (!fsPtr) return undefined; + assert(fsPtr); + assert(SAFE_HEAP_LOAD(((fsPtr) >> 2) * 4, 4, 1) === 0); + var desc = { + "module": WebGPU.mgrShaderModule.get(SAFE_HEAP_LOAD((((fsPtr) + (4)) >> 2) * 4, 4, 1)), + "constants": WebGPU.makePipelineConstants(SAFE_HEAP_LOAD((((fsPtr) + (12)) >> 2) * 4, 4, 1), SAFE_HEAP_LOAD((((fsPtr) + (16)) >> 2) * 4, 4, 1)), + "targets": makeColorStates(SAFE_HEAP_LOAD((((fsPtr) + (20)) >> 2) * 4, 4, 1), SAFE_HEAP_LOAD((((fsPtr) + (24)) >> 2) * 4, 4, 1)) + }; + var entryPointPtr = SAFE_HEAP_LOAD((((fsPtr) + (8)) >> 2) * 4, 4, 1); + if (entryPointPtr) desc["entryPoint"] = UTF8ToString(entryPointPtr); + return desc; + } + var desc = { + "label": undefined, + "layout": WebGPU.makePipelineLayout(SAFE_HEAP_LOAD((((descriptor) + (8)) >> 2) * 4, 4, 1)), + "vertex": makeVertexState(descriptor + 12), + "primitive": makePrimitiveState(descriptor + 40), + "depthStencil": makeDepthStencilState(SAFE_HEAP_LOAD((((descriptor) + (60)) >> 2) * 4, 4, 1)), + "multisample": makeMultisampleState(descriptor + 64), + "fragment": makeFragmentState(SAFE_HEAP_LOAD((((descriptor) + (80)) >> 2) * 4, 4, 1)) + }; + var labelPtr = SAFE_HEAP_LOAD((((descriptor) + (4)) >> 2) * 4, 4, 1); + if (labelPtr) desc["label"] = UTF8ToString(labelPtr); + return desc; +}; + +var _wgpuDeviceCreateRenderPipeline = (deviceId, descriptor) => { + var desc = generateRenderPipelineDesc(descriptor); + var device = WebGPU.mgrDevice.get(deviceId); + return WebGPU.mgrRenderPipeline.create(device.createRenderPipeline(desc)); +}; + +var _wgpuDeviceCreateShaderModule = (deviceId, descriptor) => { + assert(descriptor); + var nextInChainPtr = SAFE_HEAP_LOAD(((descriptor) >> 2) * 4, 4, 1); + assert(nextInChainPtr !== 0); + var sType = SAFE_HEAP_LOAD((((nextInChainPtr) + (4)) >> 2) * 4, 4, 1); + var desc = { + "label": undefined, + "code": "" + }; + var labelPtr = SAFE_HEAP_LOAD((((descriptor) + (4)) >> 2) * 4, 4, 1); + if (labelPtr) desc["label"] = UTF8ToString(labelPtr); + switch (sType) { + case 5: + { + var count = SAFE_HEAP_LOAD((((nextInChainPtr) + (8)) >> 2) * 4, 4, 1); + var start = SAFE_HEAP_LOAD((((nextInChainPtr) + (12)) >> 2) * 4, 4, 1); + var offset = ((start) >> 2); + desc["code"] = HEAPU32.subarray(offset, offset + count); + break; + } + + case 6: + { + var sourcePtr = SAFE_HEAP_LOAD((((nextInChainPtr) + (8)) >> 2) * 4, 4, 1); + if (sourcePtr) { + desc["code"] = UTF8ToString(sourcePtr); + } + break; + } + + default: + abort("unrecognized ShaderModule sType"); + } + var device = WebGPU.mgrDevice.get(deviceId); + return WebGPU.mgrShaderModule.create(device.createShaderModule(desc)); +}; + +var _wgpuDeviceCreateSwapChain = (deviceId, surfaceId, descriptor) => { + assert(descriptor); + assert(SAFE_HEAP_LOAD(((descriptor) >> 2) * 4, 4, 1) === 0); + var device = WebGPU.mgrDevice.get(deviceId); + var context = WebGPU.mgrSurface.get(surfaceId); + assert(1 === SAFE_HEAP_LOAD((((descriptor) + (24)) >> 2) * 4, 4, 1)); + var canvasSize = [ SAFE_HEAP_LOAD((((descriptor) + (16)) >> 2) * 4, 4, 1), SAFE_HEAP_LOAD((((descriptor) + (20)) >> 2) * 4, 4, 1) ]; + if (canvasSize[0] !== 0) { + context["canvas"]["width"] = canvasSize[0]; + } + if (canvasSize[1] !== 0) { + context["canvas"]["height"] = canvasSize[1]; + } + var configuration = { + "device": device, + "format": WebGPU.TextureFormat[SAFE_HEAP_LOAD((((descriptor) + (12)) >> 2) * 4, 4, 1)], + "usage": SAFE_HEAP_LOAD((((descriptor) + (8)) >> 2) * 4, 4, 1), + "alphaMode": "opaque" + }; + context.configure(configuration); + return WebGPU.mgrSwapChain.create(context); +}; + +var _wgpuDeviceCreateTexture = (deviceId, descriptor) => { + assert(descriptor); + assert(SAFE_HEAP_LOAD(((descriptor) >> 2) * 4, 4, 1) === 0); + var desc = { + "label": undefined, + "size": WebGPU.makeExtent3D(descriptor + 16), + "mipLevelCount": SAFE_HEAP_LOAD((((descriptor) + (32)) >> 2) * 4, 4, 1), + "sampleCount": SAFE_HEAP_LOAD((((descriptor) + (36)) >> 2) * 4, 4, 1), + "dimension": WebGPU.TextureDimension[SAFE_HEAP_LOAD((((descriptor) + (12)) >> 2) * 4, 4, 1)], + "format": WebGPU.TextureFormat[SAFE_HEAP_LOAD((((descriptor) + (28)) >> 2) * 4, 4, 1)], + "usage": SAFE_HEAP_LOAD((((descriptor) + (8)) >> 2) * 4, 4, 1) + }; + var labelPtr = SAFE_HEAP_LOAD((((descriptor) + (4)) >> 2) * 4, 4, 1); + if (labelPtr) desc["label"] = UTF8ToString(labelPtr); + var viewFormatCount = SAFE_HEAP_LOAD((((descriptor) + (40)) >> 2) * 4, 4, 1); + if (viewFormatCount) { + var viewFormatsPtr = SAFE_HEAP_LOAD((((descriptor) + (44)) >> 2) * 4, 4, 1); + desc["viewFormats"] = Array.from(HEAP32.subarray((((viewFormatsPtr) >> 2)), ((viewFormatsPtr + viewFormatCount * 4) >> 2)), function(format) { + return WebGPU.TextureFormat[format]; + }); + } + var device = WebGPU.mgrDevice.get(deviceId); + return WebGPU.mgrTexture.create(device.createTexture(desc)); +}; + +var _wgpuDeviceGetQueue = deviceId => { + var queueId = WebGPU.mgrDevice.objects[deviceId].queueId; + assert(queueId, "wgpuDeviceGetQueue: queue was missing or null"); + WebGPU.mgrQueue.reference(queueId); + return queueId; +}; + +var _wgpuDeviceReference = id => WebGPU.mgrDevice.reference(id); + +var _wgpuDeviceRelease = id => WebGPU.mgrDevice.release(id); + +var _wgpuDeviceSetUncapturedErrorCallback = (deviceId, callback, userdata) => { + var device = WebGPU.mgrDevice.get(deviceId); + device.onuncapturederror = function(ev) { + callUserCallback(() => { + var Validation = 1; + var OutOfMemory = 2; + var type; + assert(typeof GPUValidationError != "undefined"); + assert(typeof GPUOutOfMemoryError != "undefined"); + if (ev.error instanceof GPUValidationError) type = Validation; else if (ev.error instanceof GPUOutOfMemoryError) type = OutOfMemory; + WebGPU.errorCallback(callback, type, ev.error.message, userdata); + }); + }; +}; + +var maybeCStringToJsString = cString => cString > 2 ? UTF8ToString(cString) : cString; + +/** @type {Object} */ var specialHTMLTargets = [ 0, typeof document != "undefined" ? document : 0, typeof window != "undefined" ? window : 0 ]; + +/** @suppress {duplicate } */ var findEventTarget = target => { + target = maybeCStringToJsString(target); + var domElement = specialHTMLTargets[target] || (typeof document != "undefined" ? document.querySelector(target) : undefined); + return domElement; +}; + +var findCanvasEventTarget = findEventTarget; + +var _wgpuInstanceCreateSurface = (instanceId, descriptor) => { + assert(descriptor); + assert(instanceId === 1, "WGPUInstance must be created by wgpuCreateInstance"); + var nextInChainPtr = SAFE_HEAP_LOAD(((descriptor) >> 2) * 4, 4, 1); + assert(nextInChainPtr !== 0); + assert(4 === SAFE_HEAP_LOAD((((nextInChainPtr) + (4)) >> 2) * 4, 4, 1)); + var descriptorFromCanvasHTMLSelector = nextInChainPtr; + assert(descriptorFromCanvasHTMLSelector); + assert(SAFE_HEAP_LOAD(((descriptorFromCanvasHTMLSelector) >> 2) * 4, 4, 1) === 0); + var selectorPtr = SAFE_HEAP_LOAD((((descriptorFromCanvasHTMLSelector) + (8)) >> 2) * 4, 4, 1); + assert(selectorPtr); + var canvas = findCanvasEventTarget(selectorPtr); + var context = canvas.getContext("webgpu"); + assert(context); + if (!context) return 0; + var labelPtr = SAFE_HEAP_LOAD((((descriptor) + (4)) >> 2) * 4, 4, 1); + if (labelPtr) context.surfaceLabelWebGPU = UTF8ToString(labelPtr); + return WebGPU.mgrSurface.create(context); +}; + +var _wgpuInstanceRequestAdapter = (instanceId, options, callback, userdata) => { + assert(instanceId === 1, "WGPUInstance must be created by wgpuCreateInstance"); + var opts; + if (options) { + assert(options); + assert(SAFE_HEAP_LOAD(((options) >> 2) * 4, 4, 1) === 0); + opts = { + "powerPreference": WebGPU.PowerPreference[SAFE_HEAP_LOAD((((options) + (8)) >> 2) * 4, 4, 1)], + "forceFallbackAdapter": !!(SAFE_HEAP_LOAD((((options) + (16)) >> 2) * 4, 4, 1)) + }; + } + if (!("gpu" in navigator)) { + var sp = stackSave(); + var messagePtr = stringToUTF8OnStack("WebGPU not available on this browser (navigator.gpu is not available)"); + getWasmTableEntry(callback)(1, 0, messagePtr, userdata); + stackRestore(sp); + return; + } + navigator["gpu"]["requestAdapter"](opts).then(adapter => { + callUserCallback(() => { + if (adapter) { + var adapterId = WebGPU.mgrAdapter.create(adapter); + getWasmTableEntry(callback)(0, adapterId, 0, userdata); + } else { + var sp = stackSave(); + var messagePtr = stringToUTF8OnStack("WebGPU not available on this system (requestAdapter returned null)"); + getWasmTableEntry(callback)(1, 0, messagePtr, userdata); + stackRestore(sp); + } + }); + }, ex => { + callUserCallback(() => { + var sp = stackSave(); + var messagePtr = stringToUTF8OnStack(ex.message); + getWasmTableEntry(callback)(2, 0, messagePtr, userdata); + stackRestore(sp); + }); + }); +}; + +var _wgpuPipelineLayoutRelease = id => WebGPU.mgrPipelineLayout.release(id); + +var _wgpuQuerySetRelease = id => WebGPU.mgrQuerySet.release(id); + +var _wgpuQueueRelease = id => WebGPU.mgrQueue.release(id); + +var _wgpuQueueSubmit = (queueId, commandCount, commands) => { + assert(commands % 4 === 0); + var queue = WebGPU.mgrQueue.get(queueId); + var cmds = Array.from(HEAP32.subarray((((commands) >> 2)), ((commands + commandCount * 4) >> 2)), id => WebGPU.mgrCommandBuffer.get(id)); + queue.submit(cmds); +}; + +var _wgpuRenderPassEncoderDraw = (passId, vertexCount, instanceCount, firstVertex, firstInstance) => { + var pass = WebGPU.mgrRenderPassEncoder.get(passId); + pass.draw(vertexCount, instanceCount, firstVertex, firstInstance); +}; + +var _wgpuRenderPassEncoderEnd = encoderId => { + var encoder = WebGPU.mgrRenderPassEncoder.get(encoderId); + encoder.end(); +}; + +var _wgpuRenderPassEncoderRelease = id => WebGPU.mgrRenderPassEncoder.release(id); + +var _wgpuRenderPassEncoderSetPipeline = (passId, pipelineId) => { + var pass = WebGPU.mgrRenderPassEncoder.get(passId); + var pipeline = WebGPU.mgrRenderPipeline.get(pipelineId); + pass.setPipeline(pipeline); +}; + +var _wgpuRenderPipelineRelease = id => WebGPU.mgrRenderPipeline.release(id); + +var _wgpuShaderModuleReference = id => WebGPU.mgrShaderModule.reference(id); + +var _wgpuShaderModuleRelease = id => WebGPU.mgrShaderModule.release(id); + +var _wgpuSurfaceRelease = id => WebGPU.mgrSurface.release(id); + +var _wgpuSwapChainGetCurrentTextureView = swapChainId => { + var context = WebGPU.mgrSwapChain.get(swapChainId); + return WebGPU.mgrTextureView.create(context.getCurrentTexture().createView()); +}; + +var _wgpuSwapChainRelease = id => WebGPU.mgrSwapChain.release(id); + +var _wgpuTextureCreateView = (textureId, descriptor) => { + var desc; + if (descriptor) { + assert(descriptor); + assert(SAFE_HEAP_LOAD(((descriptor) >> 2) * 4, 4, 1) === 0); + var mipLevelCount = SAFE_HEAP_LOAD((((descriptor) + (20)) >> 2) * 4, 4, 1); + var arrayLayerCount = SAFE_HEAP_LOAD((((descriptor) + (28)) >> 2) * 4, 4, 1); + desc = { + "format": WebGPU.TextureFormat[SAFE_HEAP_LOAD((((descriptor) + (8)) >> 2) * 4, 4, 1)], + "dimension": WebGPU.TextureViewDimension[SAFE_HEAP_LOAD((((descriptor) + (12)) >> 2) * 4, 4, 1)], + "baseMipLevel": SAFE_HEAP_LOAD((((descriptor) + (16)) >> 2) * 4, 4, 1), + "mipLevelCount": mipLevelCount === 4294967295 ? undefined : mipLevelCount, + "baseArrayLayer": SAFE_HEAP_LOAD((((descriptor) + (24)) >> 2) * 4, 4, 1), + "arrayLayerCount": arrayLayerCount === 4294967295 ? undefined : arrayLayerCount, + "aspect": WebGPU.TextureAspect[SAFE_HEAP_LOAD((((descriptor) + (32)) >> 2) * 4, 4, 1)] + }; + var labelPtr = SAFE_HEAP_LOAD((((descriptor) + (4)) >> 2) * 4, 4, 1); + if (labelPtr) desc["label"] = UTF8ToString(labelPtr); + } + var texture = WebGPU.mgrTexture.get(textureId); + return WebGPU.mgrTextureView.create(texture.createView(desc)); +}; + +var _wgpuTextureReference = id => WebGPU.mgrTexture.reference(id); + +var _wgpuTextureRelease = id => WebGPU.mgrTexture.release(id); + +var _wgpuTextureViewReference = id => WebGPU.mgrTextureView.reference(id); + +var _wgpuTextureViewRelease = id => WebGPU.mgrTextureView.release(id); + +Module["requestFullscreen"] = Browser.requestFullscreen; + +Module["requestFullScreen"] = Browser.requestFullScreen; + +Module["requestAnimationFrame"] = Browser.requestAnimationFrame; + +Module["setCanvasSize"] = Browser.setCanvasSize; + +Module["pauseMainLoop"] = Browser.mainLoop.pause; + +Module["resumeMainLoop"] = Browser.mainLoop.resume; + +Module["getUserMedia"] = Browser.getUserMedia; + +Module["createContext"] = Browser.createContext; + +var preloadedImages = {}; + +var preloadedAudios = {}; + +WebGPU.initManagers(); + +function checkIncomingModuleAPI() { + ignoredModuleProp("fetchSettings"); +} + +var wasmImports = { + /** @export */ __assert_fail: ___assert_fail, + /** @export */ _abort_js: __abort_js, + /** @export */ _emscripten_memcpy_js: __emscripten_memcpy_js, + /** @export */ alignfault: alignfault, + /** @export */ emscripten_cancel_main_loop: _emscripten_cancel_main_loop, + /** @export */ emscripten_resize_heap: _emscripten_resize_heap, + /** @export */ emscripten_set_main_loop: _emscripten_set_main_loop, + /** @export */ exit: _exit, + /** @export */ fd_close: _fd_close, + /** @export */ fd_seek: _fd_seek, + /** @export */ fd_write: _fd_write, + /** @export */ segfault: segfault, + /** @export */ wgpuAdapterRelease: _wgpuAdapterRelease, + /** @export */ wgpuAdapterRequestDevice: _wgpuAdapterRequestDevice, + /** @export */ wgpuBindGroupLayoutReference: _wgpuBindGroupLayoutReference, + /** @export */ wgpuBindGroupLayoutRelease: _wgpuBindGroupLayoutRelease, + /** @export */ wgpuBindGroupRelease: _wgpuBindGroupRelease, + /** @export */ wgpuBufferGetConstMappedRange: _wgpuBufferGetConstMappedRange, + /** @export */ wgpuBufferGetMappedRange: _wgpuBufferGetMappedRange, + /** @export */ wgpuBufferMapAsync: _wgpuBufferMapAsync, + /** @export */ wgpuBufferReference: _wgpuBufferReference, + /** @export */ wgpuBufferRelease: _wgpuBufferRelease, + /** @export */ wgpuBufferUnmap: _wgpuBufferUnmap, + /** @export */ wgpuCommandBufferRelease: _wgpuCommandBufferRelease, + /** @export */ wgpuCommandEncoderBeginRenderPass: _wgpuCommandEncoderBeginRenderPass, + /** @export */ wgpuCommandEncoderCopyBufferToBuffer: _wgpuCommandEncoderCopyBufferToBuffer, + /** @export */ wgpuCommandEncoderCopyTextureToBuffer: _wgpuCommandEncoderCopyTextureToBuffer, + /** @export */ wgpuCommandEncoderFinish: _wgpuCommandEncoderFinish, + /** @export */ wgpuCommandEncoderRelease: _wgpuCommandEncoderRelease, + /** @export */ wgpuDeviceCreateBindGroup: _wgpuDeviceCreateBindGroup, + /** @export */ wgpuDeviceCreateBindGroupLayout: _wgpuDeviceCreateBindGroupLayout, + /** @export */ wgpuDeviceCreateBuffer: _wgpuDeviceCreateBuffer, + /** @export */ wgpuDeviceCreateCommandEncoder: _wgpuDeviceCreateCommandEncoder, + /** @export */ wgpuDeviceCreatePipelineLayout: _wgpuDeviceCreatePipelineLayout, + /** @export */ wgpuDeviceCreateRenderPipeline: _wgpuDeviceCreateRenderPipeline, + /** @export */ wgpuDeviceCreateShaderModule: _wgpuDeviceCreateShaderModule, + /** @export */ wgpuDeviceCreateSwapChain: _wgpuDeviceCreateSwapChain, + /** @export */ wgpuDeviceCreateTexture: _wgpuDeviceCreateTexture, + /** @export */ wgpuDeviceGetQueue: _wgpuDeviceGetQueue, + /** @export */ wgpuDeviceReference: _wgpuDeviceReference, + /** @export */ wgpuDeviceRelease: _wgpuDeviceRelease, + /** @export */ wgpuDeviceSetUncapturedErrorCallback: _wgpuDeviceSetUncapturedErrorCallback, + /** @export */ wgpuInstanceCreateSurface: _wgpuInstanceCreateSurface, + /** @export */ wgpuInstanceRequestAdapter: _wgpuInstanceRequestAdapter, + /** @export */ wgpuPipelineLayoutRelease: _wgpuPipelineLayoutRelease, + /** @export */ wgpuQuerySetRelease: _wgpuQuerySetRelease, + /** @export */ wgpuQueueRelease: _wgpuQueueRelease, + /** @export */ wgpuQueueSubmit: _wgpuQueueSubmit, + /** @export */ wgpuRenderPassEncoderDraw: _wgpuRenderPassEncoderDraw, + /** @export */ wgpuRenderPassEncoderEnd: _wgpuRenderPassEncoderEnd, + /** @export */ wgpuRenderPassEncoderRelease: _wgpuRenderPassEncoderRelease, + /** @export */ wgpuRenderPassEncoderSetPipeline: _wgpuRenderPassEncoderSetPipeline, + /** @export */ wgpuRenderPipelineRelease: _wgpuRenderPipelineRelease, + /** @export */ wgpuShaderModuleReference: _wgpuShaderModuleReference, + /** @export */ wgpuShaderModuleRelease: _wgpuShaderModuleRelease, + /** @export */ wgpuSurfaceRelease: _wgpuSurfaceRelease, + /** @export */ wgpuSwapChainGetCurrentTextureView: _wgpuSwapChainGetCurrentTextureView, + /** @export */ wgpuSwapChainRelease: _wgpuSwapChainRelease, + /** @export */ wgpuTextureCreateView: _wgpuTextureCreateView, + /** @export */ wgpuTextureReference: _wgpuTextureReference, + /** @export */ wgpuTextureRelease: _wgpuTextureRelease, + /** @export */ wgpuTextureViewReference: _wgpuTextureViewReference, + /** @export */ wgpuTextureViewRelease: _wgpuTextureViewRelease +}; + +var wasmExports = createWasm(); + +var ___wasm_call_ctors = createExportWrapper("__wasm_call_ctors", 0); + +var _main = Module["_main"] = createExportWrapper("main", 2); + +var _fflush = createExportWrapper("fflush", 1); + +var _emscripten_get_sbrk_ptr = createExportWrapper("emscripten_get_sbrk_ptr", 0); + +var _sbrk = createExportWrapper("sbrk", 1); + +var _malloc = createExportWrapper("malloc", 1); + +var _free = createExportWrapper("free", 1); + +var _memalign = createExportWrapper("memalign", 2); + +var __emscripten_tempret_set = createExportWrapper("_emscripten_tempret_set", 1); + +var _emscripten_stack_init = () => (_emscripten_stack_init = wasmExports["emscripten_stack_init"])(); + +var _emscripten_stack_get_free = () => (_emscripten_stack_get_free = wasmExports["emscripten_stack_get_free"])(); + +var _emscripten_stack_get_base = () => (_emscripten_stack_get_base = wasmExports["emscripten_stack_get_base"])(); + +var _emscripten_stack_get_end = () => (_emscripten_stack_get_end = wasmExports["emscripten_stack_get_end"])(); + +var __emscripten_stack_restore = a0 => (__emscripten_stack_restore = wasmExports["_emscripten_stack_restore"])(a0); + +var __emscripten_stack_alloc = a0 => (__emscripten_stack_alloc = wasmExports["_emscripten_stack_alloc"])(a0); + +var _emscripten_stack_get_current = () => (_emscripten_stack_get_current = wasmExports["emscripten_stack_get_current"])(); + +var dynCall_jiji = Module["dynCall_jiji"] = createExportWrapper("dynCall_jiji", 5); + +var missingLibrarySymbols = [ "writeI53ToI64", "writeI53ToI64Clamped", "writeI53ToI64Signaling", "writeI53ToU64Clamped", "writeI53ToU64Signaling", "readI53FromU64", "convertI32PairToI53", "convertU32PairToI53", "getTempRet0", "setTempRet0", "zeroMemory", "growMemory", "isLeapYear", "ydayFromDate", "arraySum", "addDays", "inetPton4", "inetNtop4", "inetPton6", "inetNtop6", "readSockaddr", "writeSockaddr", "initRandomFill", "randomFill", "emscriptenLog", "readEmAsmArgs", "jstoi_q", "getExecutableName", "listenOnce", "autoResumeAudioContext", "dynCallLegacy", "getDynCaller", "dynCall", "runtimeKeepalivePush", "runtimeKeepalivePop", "asmjsMangle", "asyncLoad", "alignMemory", "mmapAlloc", "HandleAllocator", "getNativeTypeSize", "STACK_SIZE", "STACK_ALIGN", "POINTER_SIZE", "ASSERTIONS", "getCFunc", "ccall", "cwrap", "uleb128Encode", "sigToWasmTypes", "generateFuncType", "convertJsFunctionToWasm", "getEmptyTableSlot", "updateTableMap", "getFunctionAddress", "addFunction", "removeFunction", "reallyNegative", "strLen", "reSign", "formatString", "intArrayFromString", "intArrayToString", "AsciiToString", "stringToAscii", "UTF16ToString", "stringToUTF16", "lengthBytesUTF16", "UTF32ToString", "stringToUTF32", "lengthBytesUTF32", "stringToNewUTF8", "writeArrayToMemory", "registerKeyEventCallback", "getBoundingClientRect", "fillMouseEventData", "registerMouseEventCallback", "registerWheelEventCallback", "registerUiEventCallback", "registerFocusEventCallback", "fillDeviceOrientationEventData", "registerDeviceOrientationEventCallback", "fillDeviceMotionEventData", "registerDeviceMotionEventCallback", "screenOrientation", "fillOrientationChangeEventData", "registerOrientationChangeEventCallback", "fillFullscreenChangeEventData", "registerFullscreenChangeEventCallback", "JSEvents_requestFullscreen", "JSEvents_resizeCanvasForFullscreen", "registerRestoreOldStyle", "hideEverythingExceptGivenElement", "restoreHiddenElements", "setLetterbox", "softFullscreenResizeWebGLRenderTarget", "doRequestFullscreen", "fillPointerlockChangeEventData", "registerPointerlockChangeEventCallback", "registerPointerlockErrorEventCallback", "requestPointerLock", "fillVisibilityChangeEventData", "registerVisibilityChangeEventCallback", "registerTouchEventCallback", "fillGamepadEventData", "registerGamepadEventCallback", "registerBeforeUnloadEventCallback", "fillBatteryEventData", "battery", "registerBatteryEventCallback", "setCanvasElementSize", "getCanvasElementSize", "jsStackTrace", "getCallstack", "convertPCtoSourceLocation", "getEnvStrings", "checkWasiClock", "wasiRightsToMuslOFlags", "wasiOFlagsToMuslOFlags", "createDyncallWrapper", "setImmediateWrapped", "clearImmediateWrapped", "polyfillSetImmediate", "getPromise", "makePromise", "idsToPromises", "makePromiseCallback", "ExceptionInfo", "findMatchingCatch", "Browser_asyncPrepareDataCounter", "getSocketFromFD", "getSocketAddress", "FS_createPreloadedFile", "FS_modeStringToFlags", "FS_getMode", "FS_stdin_getChar", "FS_unlink", "FS_createDataFile", "FS_mkdirTree", "_setNetworkCallback", "heapObjectForWebGLType", "toTypedArrayIndex", "webgl_enable_ANGLE_instanced_arrays", "webgl_enable_OES_vertex_array_object", "webgl_enable_WEBGL_draw_buffers", "webgl_enable_WEBGL_multi_draw", "emscriptenWebGLGet", "computeUnpackAlignedImageSize", "colorChannelsInGlTextureFormat", "emscriptenWebGLGetTexPixelData", "emscriptenWebGLGetUniform", "webglGetUniformLocation", "webglPrepareUniformLocationsBeforeFirstUse", "webglGetLeftBracePos", "emscriptenWebGLGetVertexAttrib", "__glGetActiveAttribOrUniform", "writeGLArray", "registerWebGlEventCallback", "runAndAbortIfError", "ALLOC_NORMAL", "ALLOC_STACK", "allocate", "writeStringToMemory", "writeAsciiToMemory", "setErrNo", "demangle", "stackTrace" ]; + +missingLibrarySymbols.forEach(missingLibrarySymbol); + +var unexportedSymbols = [ "run", "addOnPreRun", "addOnInit", "addOnPreMain", "addOnExit", "addOnPostRun", "addRunDependency", "removeRunDependency", "out", "err", "callMain", "abort", "wasmMemory", "wasmExports", "writeStackCookie", "checkStackCookie", "readI53FromI64", "convertI32PairToI53Checked", "stackSave", "stackRestore", "stackAlloc", "ptrToString", "exitJS", "getHeapMax", "abortOnCannotGrowMemory", "ENV", "MONTH_DAYS_REGULAR", "MONTH_DAYS_LEAP", "MONTH_DAYS_REGULAR_CUMULATIVE", "MONTH_DAYS_LEAP_CUMULATIVE", "ERRNO_CODES", "ERRNO_MESSAGES", "DNS", "Protocols", "Sockets", "timers", "warnOnce", "readEmAsmArgsArray", "jstoi_s", "handleException", "keepRuntimeAlive", "callUserCallback", "maybeExit", "wasmTable", "noExitRuntime", "freeTableIndexes", "functionsInTableMap", "unSign", "setValue", "getValue", "PATH", "PATH_FS", "UTF8Decoder", "UTF8ArrayToString", "UTF8ToString", "stringToUTF8Array", "stringToUTF8", "lengthBytesUTF8", "UTF16Decoder", "stringToUTF8OnStack", "JSEvents", "specialHTMLTargets", "maybeCStringToJsString", "findEventTarget", "findCanvasEventTarget", "currentFullscreenStrategy", "restoreOldWindowedStyle", "UNWIND_CACHE", "ExitStatus", "flush_NO_FILESYSTEM", "safeSetTimeout", "promiseMap", "uncaughtExceptionCount", "exceptionLast", "exceptionCaught", "Browser", "setMainLoop", "getPreloadedImageData__data", "wget", "SYSCALLS", "preloadPlugins", "FS_stdin_getChar_buffer", "FS_createPath", "FS_createDevice", "FS_readFile", "FS", "FS_createLazyFile", "MEMFS", "TTY", "PIPEFS", "SOCKFS", "tempFixedLengthArray", "miniTempWebGLFloatBuffers", "miniTempWebGLIntBuffers", "GL", "AL", "GLUT", "EGL", "GLEW", "IDBStore", "SDL", "SDL_gfx", "WebGPU", "JsValStore", "allocateUTF8", "allocateUTF8OnStack", "print", "printErr" ]; + +unexportedSymbols.forEach(unexportedRuntimeSymbol); + +var calledRun; + +dependenciesFulfilled = function runCaller() { + if (!calledRun) run(); + if (!calledRun) dependenciesFulfilled = runCaller; +}; + +function callMain() { + assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on Module["onRuntimeInitialized"])'); + assert(__ATPRERUN__.length == 0, "cannot call main when preRun functions remain to be called"); + var entryFunction = _main; + var argc = 0; + var argv = 0; + try { + var ret = entryFunction(argc, argv); + exitJS(ret, /* implicit = */ true); + return ret; + } catch (e) { + return handleException(e); + } +} + +function stackCheckInit() { + _emscripten_stack_init(); + writeStackCookie(); +} + +function run() { + if (runDependencies > 0) { + return; + } + stackCheckInit(); + preRun(); + if (runDependencies > 0) { + return; + } + function doRun() { + if (calledRun) return; + calledRun = true; + Module["calledRun"] = true; + if (ABORT) return; + initRuntime(); + preMain(); + Module["onRuntimeInitialized"]?.(); + if (shouldRunNow) callMain(); + postRun(); + } + if (Module["setStatus"]) { + Module["setStatus"]("Running..."); + setTimeout(function() { + setTimeout(function() { + Module["setStatus"](""); + }, 1); + doRun(); + }, 1); + } else { + doRun(); + } + checkStackCookie(); +} + +function checkUnflushedContent() { + var oldOut = out; + var oldErr = err; + var has = false; + out = err = x => { + has = true; + }; + try { + flush_NO_FILESYSTEM(); + } catch (e) {} + out = oldOut; + err = oldErr; + if (has) { + warnOnce("stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the Emscripten FAQ), or make sure to emit a newline when you printf etc."); + warnOnce("(this may also be due to not including full filesystem support - try building with -sFORCE_FILESYSTEM)"); + } +} + +if (Module["preInit"]) { + if (typeof Module["preInit"] == "function") Module["preInit"] = [ Module["preInit"] ]; + while (Module["preInit"].length > 0) { + Module["preInit"].pop()(); + } +} + +var shouldRunNow = true; + +if (Module["noInitialRun"]) shouldRunNow = false; + +run(); diff --git a/out/webdbg/hello.wasm b/out/webdbg/hello.wasm new file mode 100755 index 0000000000000000000000000000000000000000..6d404b4dcc6b3562846f172de6a0716d8026b521 GIT binary patch literal 487774 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 %t8Vv^`_VWA|E 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

Omja<<$j~#LQs?pA_~oB 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 Code

Downloading...
Resize canvasLock/hide mouse pointer    
\ No newline at end of file diff --git a/out/webrel/hello.js b/out/webrel/hello.js new file mode 100644 index 0000000..50ce438 --- /dev/null +++ b/out/webrel/hello.js @@ -0,0 +1,63 @@ +var e;e||=typeof Module != 'undefined' ? Module : {};var aa="object"==typeof window,ba="function"==typeof importScripts,ca="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,da=Object.assign({},e),ea=(a,b)=>{throw b;},h="",fa,ha; +if(ca){var fs=require("fs"),ia=require("path");h=__dirname+"/";ha=a=>{a=ja(a)?new URL(a):ia.normalize(a);return fs.readFileSync(a)};fa=a=>{a=ja(a)?new URL(a):ia.normalize(a);return new Promise((b,c)=>{fs.readFile(a,void 0,(f,d)=>{f?c(f):b(d.buffer)})})};process.argv.slice(2);"undefined"!=typeof module&&(module.exports=e);process.on("uncaughtException",a=>{if(!("unwind"===a||a instanceof ka||a.context instanceof ka))throw a;});ea=(a,b)=>{process.exitCode=a;throw b;}}else if(aa||ba)ba?h=self.location.href: +"undefined"!=typeof document&&document.currentScript&&(h=document.currentScript.src),h=h.startsWith("blob:")?"":h.substr(0,h.replace(/[?#].*/,"").lastIndexOf("/")+1),ba&&(ha=a=>{var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)}),fa=a=>ja(a)?new Promise((b,c)=>{var f=new XMLHttpRequest;f.open("GET",a,!0);f.responseType="arraybuffer";f.onload=()=>{(200==f.status||0==f.status&&f.response)&&c(f.response);b(f.status)};f.onerror=b;f.send(null)}): +fetch(a,{credentials:"same-origin"}).then(b=>b.ok?b.arrayBuffer():Promise.reject(Error(b.status+" : "+b.url)));var la=e.print||console.log.bind(console),t=e.printErr||console.error.bind(console);Object.assign(e,da);da=null;e.quit&&(ea=e.quit);var w;e.wasmBinary&&(w=e.wasmBinary);var ma,x=!1,z,A,B,C,na,D,qa=[],ra=[],sa=[],ta=[];function ua(){var a=e.preRun.shift();qa.unshift(a)}var E=0,va=null,wa=null; +function xa(a){e.onAbort?.(a);a="Aborted("+a+")";t(a);x=!0;z=1;throw new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");}var ya=a=>a.startsWith("data:application/octet-stream;base64,"),ja=a=>a.startsWith("file://"),za;function Aa(a){if(a==za&&w)return new Uint8Array(w);if(ha)return ha(a);throw"both async and sync fetching of the wasm failed";}function Ba(a){return w?Promise.resolve().then(()=>Aa(a)):fa(a).then(b=>new Uint8Array(b),()=>Aa(a))} +function Ca(a,b,c){return Ba(a).then(f=>WebAssembly.instantiate(f,b)).then(c,f=>{t(`failed to asynchronously prepare wasm: ${f}`);xa(f)})}function Da(a,b){var c=za;w||"function"!=typeof WebAssembly.instantiateStreaming||ya(c)||ja(c)||ca||"function"!=typeof fetch?Ca(c,a,b):fetch(c,{credentials:"same-origin"}).then(f=>WebAssembly.instantiateStreaming(f,a).then(b,function(d){t(`wasm streaming compile failed: ${d}`);t("falling back to ArrayBuffer instantiation");return Ca(c,a,b)}))} +function ka(a){this.name="ExitStatus";this.message=`Program terminated with exit(${a})`;this.status=a} +var Ea=a=>{for(;0{for(var c=b+NaN,f=b;a[f]&&!(f>=c);)++f;if(16d?c+=String.fromCharCode(d):(d-=65536,c+=String.fromCharCode(55296|d>>10,56320| +d&1023))}}else c+=String.fromCharCode(d)}return c},Sa=(a,b)=>{Ja=a;Ka=b;if(La)if(Ma||=!0,0==a)G=function(){var f=Math.max(0,Na+b-Oa())|0;setTimeout(Pa,f)};else if(1==a)G=function(){Qa(Pa)};else if(2==a){if("undefined"==typeof Ra)if("undefined"==typeof setImmediate){var c=[];addEventListener("message",f=>{if("setimmediate"===f.data||"setimmediate"===f.data.target)f.stopPropagation(),c.shift()()},!0);Ra=function(f){c.push(f);if(ba){let d;(d=e).setImmediates??(d.setImmediates=[]);e.setImmediates.push(f); +postMessage({target:"setimmediate"})}else postMessage("setimmediate","*")}}else Ra=setImmediate;G=function(){Ra(Pa)}}},Oa;Oa=()=>performance.now(); +var Ya=(a,b,c,f,d)=>{La=a;Ta=f;var g=H;Ma=!1;Pa=function(){if(!x)if(0{a instanceof ka||"unwind"==a||ea(1,a)},$a=a=>{z=a;Ha||(e.onExit?.(a),x=!0);ea(a,new ka(a))},I=a=>{if(!x)try{if(a(),!Ha)try{z=a=z,$a(a)}catch(b){Za(b)}}catch(b){Za(b)}},ab=a=>{setTimeout(()=>{I(a)},1E4)},J=()=>{var a="getMappedRange size=0 no longer means WGPU_WHOLE_MAP_SIZE";J.sa||(J.sa={});J.sa[a]||(J.sa[a]=1,ca&&(a="warning: "+a),t(a))},bb=e.preloadPlugins||[],Ma=!1,G=null,H=0,La=null,Ta=0,Ja=0, +Ka=0,Xa=0,Ua=[];function cb(){G=null;H++}var Wa={},Na,Pa,Va,db=!1,eb=!1,fb=[]; +function gb(){function a(){eb=document.pointerLockElement===e.canvas||document.mozPointerLockElement===e.canvas||document.webkitPointerLockElement===e.canvas||document.msPointerLockElement===e.canvas}if(!hb){hb=!0;bb.push({canHandle:function(c){return!e.Ia&&/\.(jpg|jpeg|png|bmp)$/i.test(c)},handle:function(c,f,d,g){var k=new Blob([c],{type:ib(f)});k.size!==c.length&&(k=new Blob([(new Uint8Array(c)).buffer],{type:ib(f)}));var m=URL.createObjectURL(k),n=new Image;n.onload=()=>{var p=document.createElement("canvas"); +p.width=n.width;p.height=n.height;p.getContext("2d").drawImage(n,0,0);URL.revokeObjectURL(m);d?.(c)};n.onerror=()=>{t(`Image ${m} could not be decoded`);g?.()};n.src=m}});bb.push({canHandle:function(c){return!e.Ha&&c.substr(-4)in{".ogg":1,".wav":1,".mp3":1}},handle:function(c,f,d){function g(){k||(k=!0,d?.(c))}var k=!1,m=URL.createObjectURL(new Blob([c],{type:ib(f)})),n=new Audio;n.addEventListener("canplaythrough",()=>g(n),!1);n.onerror=function(){if(!k){t(`warning: browser could not fully decode audio ${f}, trying slower base64 approach`); +for(var p="",u=0,l=0,v=0;v>l-6&63;l-=6;p+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[q]}2==l?(p+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(u&3)<<4],p+="=="):4==l&&(p+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(u&15)<<2],p+="=");n.src="data:audio/x-"+f.substr(-3)+";base64,"+p;g(n)}};n.src=m;ab(()=>{g(n)})}});var b=e.canvas;b&&(b.requestPointerLock=b.requestPointerLock||b.mozRequestPointerLock|| +b.webkitRequestPointerLock||b.msRequestPointerLock||(()=>{}),b.exitPointerLock=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock||document.msExitPointerLock||(()=>{}),b.exitPointerLock=b.exitPointerLock.bind(document),document.addEventListener("pointerlockchange",a,!1),document.addEventListener("mozpointerlockchange",a,!1),document.addEventListener("webkitpointerlockchange",a,!1),document.addEventListener("mspointerlockchange",a,!1),e.elementPointerLock&&b.addEventListener("click", +c=>{!eb&&e.canvas.requestPointerLock&&(e.canvas.requestPointerLock(),c.preventDefault())},!1))}}var jb=!1,kb=void 0,K=void 0;function lb(){if(!db)return!1;(document.exitFullscreen||document.cancelFullScreen||document.mozCancelFullScreen||document.msExitFullscreen||document.webkitCancelFullScreen||(()=>{})).apply(document,[]);return!0}var mb=0; +function Qa(a){if("function"==typeof requestAnimationFrame)requestAnimationFrame(a);else{var b=Date.now();if(0===mb)mb=b+1E3/60;else for(;b+2>=mb;)mb+=1E3/60;setTimeout(a,Math.max(mb-b,0))}}function ib(a){return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",bmp:"image/bmp",ogg:"audio/ogg",wav:"audio/wav",mp3:"audio/mpeg"}[a.substr(a.lastIndexOf(".")+1)]}var nb=[];function ob(){var a=e.canvas;nb.forEach(b=>b(a.width,a.height))} +function pb(a,b,c){b&&c?(a.ya=b,a.va=c):(b=a.ya,c=a.va);var f=b,d=c;e.forcedAspectRatio&&0{var b=qb[a];b||(a>=qb.length&&(qb.length=a+1),qb[a]=b=rb.get(a));return b},sb=[null,[],[]],M=a=>{for(var b=0,c=0;c=f?b++:2047>=f?b+=2:55296<=f&&57343>=f?(b+=4,++c):b+=3}var d=b+1;b=tb(d);c=b;f=A;if(0=k){var m=a.charCodeAt(++g);k=65536+((k&1023)<<10)|m&1023}if(127>=k){if(c>=d)break;f[c++]=k}else{if(2047>=k){if(c+1>=d)break;f[c++]=192|k>>6}else{if(65535>= +k){if(c+2>=d)break;f[c++]=224|k>>12}else{if(c+3>=d)break;f[c++]=240|k>>18;f[c++]=128|k>>12&63}f[c++]=128|k>>6&63}f[c++]=128|k&63}}f[c]=0}return b},ub=a=>({width:C[a>>2],height:C[a+4>>2],depthOrArrayLayers:C[a+8>>2]}),vb=(a,b)=>{if(a){for(var c={},f=0;f>2])?F(A,g):"";c[g]=D[d+8>>3]}return c}},xb=a=>a?wb.get(a):"auto",yb={undefined:1,La:1,Ca:2},zb=[,"zero","one","src","one-minus-src","src-alpha","one-minus-src-alpha","dst","one-minus-dst","dst-alpha","one-minus-dst-alpha", +"src-alpha-saturated","constant","one-minus-constant"],Ab=[,"add","subtract","reverse-subtract","min","max"],Bb=[,"uniform","storage","read-only-storage"],Cb=[,"never","less","equal","less-equal","greater","not-equal","greater-equal","always"],Db=[,"none","front","back"],Eb=[,"depth-clip-control","depth32float-stencil8","timestamp-query","texture-compression-bc","texture-compression-etc2","texture-compression-astc","indirect-first-instance","shader-f16","rg11b10ufloat-renderable","bgra8unorm-storage", +"float32-filterable"],Fb=[,"ccw","cw"],Hb=[,"uint16","uint32"],Ib=[,"clear","load"],Jb=[,"low-power","high-performance"],Kb=[,"point-list","line-list","line-strip","triangle-list","triangle-strip"],Lb=[,"filtering","non-filtering","comparison"],Mb=[,"keep","zero","replace","invert","increment-clamp","decrement-clamp","increment-wrap","decrement-wrap"],Nb=[,"write-only","read-only","read-write"],Ob=[,"store","discard"],Pb=[,"all","stencil-only","depth-only"],Qb=[,"1d","2d","3d"],N=[,"r8unorm","r8snorm", +"r8uint","r8sint","r16uint","r16sint","r16float","rg8unorm","rg8snorm","rg8uint","rg8sint","r32float","r32uint","r32sint","rg16uint","rg16sint","rg16float","rgba8unorm","rgba8unorm-srgb","rgba8snorm","rgba8uint","rgba8sint","bgra8unorm","bgra8unorm-srgb","rgb10a2uint","rgb10a2unorm","rg11b10ufloat","rgb9e5ufloat","rg32float","rg32uint","rg32sint","rgba16uint","rgba16sint","rgba16float","rgba32float","rgba32uint","rgba32sint","stencil8","depth16unorm","depth24plus","depth24plus-stencil8","depth32float", +"depth32float-stencil8","bc1-rgba-unorm","bc1-rgba-unorm-srgb","bc2-rgba-unorm","bc2-rgba-unorm-srgb","bc3-rgba-unorm","bc3-rgba-unorm-srgb","bc4-r-unorm","bc4-r-snorm","bc5-rg-unorm","bc5-rg-snorm","bc6h-rgb-ufloat","bc6h-rgb-float","bc7-rgba-unorm","bc7-rgba-unorm-srgb","etc2-rgb8unorm","etc2-rgb8unorm-srgb","etc2-rgb8a1unorm","etc2-rgb8a1unorm-srgb","etc2-rgba8unorm","etc2-rgba8unorm-srgb","eac-r11unorm","eac-r11snorm","eac-rg11unorm","eac-rg11snorm","astc-4x4-unorm","astc-4x4-unorm-srgb","astc-5x4-unorm", +"astc-5x4-unorm-srgb","astc-5x5-unorm","astc-5x5-unorm-srgb","astc-6x5-unorm","astc-6x5-unorm-srgb","astc-6x6-unorm","astc-6x6-unorm-srgb","astc-8x5-unorm","astc-8x5-unorm-srgb","astc-8x6-unorm","astc-8x6-unorm-srgb","astc-8x8-unorm","astc-8x8-unorm-srgb","astc-10x5-unorm","astc-10x5-unorm-srgb","astc-10x6-unorm","astc-10x6-unorm-srgb","astc-10x8-unorm","astc-10x8-unorm-srgb","astc-10x10-unorm","astc-10x10-unorm-srgb","astc-12x10-unorm","astc-12x10-unorm-srgb","astc-12x12-unorm","astc-12x12-unorm-srgb"], +Rb=[,"float","unfilterable-float","depth","sint","uint"],Sb=[,"1d","2d","2d-array","cube","cube-array","3d"],Tb=[,"uint8x2","uint8x4","sint8x2","sint8x4","unorm8x2","unorm8x4","snorm8x2","snorm8x4","uint16x2","uint16x4","sint16x2","sint16x4","unorm16x2","unorm16x4","snorm16x2","snorm16x4","float16x2","float16x4","float32","float32x2","float32x3","float32x4","uint32","uint32x2","uint32x3","uint32x4","sint32","sint32x2","sint32x3","sint32x4","unorm10-10-10-2"],Ub=[,"vertex-buffer-not-used","vertex", +"instance"],O,Vb,Wb,Xb,P,Yb,Q,R,Zb,$b,S,ac,T,U,bc,V,wb,cc,dc,W,ec,fc,gc=a=>{function b(d){if(d)return{operation:Ab[C[d>>2]],srcFactor:zb[C[d+4>>2]],dstFactor:zb[C[d+8>>2]]}}function c(d){return{compare:Cb[C[d>>2]],failOp:Mb[C[d+4>>2]],depthFailOp:Mb[C[d+8>>2]],passOp:Mb[C[d+12>>2]]}}var f={label:void 0,layout:xb(C[a+8>>2]),vertex:function(d){if(d){var g=W.get(C[d+4>>2]),k=vb(C[d+12>>2],C[d+16>>2]);var m=C[d+20>>2];var n=C[d+24>>2];if(m){for(var p=[],u=0;u>2];if(1===r)var y=null;else{y=4294967296*C[q+4>>2]+C[q>>2];r=Ub[r];var oa=C[q+12>>2];q=C[q+16>>2];for(var Fa=[],pa=0;pa>2]],offset:4294967296*C[Ga+4+8>>2]+C[Ga+8>>2],shaderLocation:C[Ga+16>>2]})}y={arrayStride:y,stepMode:r,attributes:Fa}}}else y=void 0;v.call(l,y)}m=p}else m=void 0;g={module:g,constants:k,buffers:m};(d=C[d+8>>2])&&(g.entryPoint=d?F(A,d):"");return g}}(a+12),primitive:function(d){if(d){var g=C[d>>2];return{topology:Kb[C[d+ +4>>2]],stripIndexFormat:Hb[C[d+8>>2]],frontFace:Fb[C[d+12>>2]],cullMode:Db[C[d+16>>2]],unclippedDepth:7===(g?C[g+4>>2]:0)&&!!C[g+8>>2]}}}(a+40),depthStencil:function(d){if(d)return{format:N[C[d+4>>2]],depthWriteEnabled:!!C[d+8>>2],depthCompare:Cb[C[d+12>>2]],stencilFront:c(d+16),stencilBack:c(d+32),stencilReadMask:C[d+48>>2],stencilWriteMask:C[d+52>>2],depthBias:B[d+56>>2],depthBiasSlopeScale:na[d+60>>2],depthBiasClamp:na[d+64>>2]}}(C[a+60>>2]),multisample:function(d){if(d)return{count:C[d+4>>2], +mask:C[d+8>>2],alphaToCoverageEnabled:!!C[d+12>>2]}}(a+64),fragment:function(d){if(d){for(var g=W.get(C[d+4>>2]),k=vb(C[d+12>>2],C[d+16>>2]),m=C[d+20>>2],n=C[d+24>>2],p=[],u=0;u>2];if(0===r)q=void 0;else{r=N[r];var y=(y=C[q+8>>2])?{alpha:b(y+12),color:b(y+0)}:void 0;q={format:r,blend:y,writeMask:C[q+12>>2]}}v.call(l,q)}g={module:g,constants:k,targets:p};(d=C[d+8>>2])&&(g.entryPoint=d?F(A,d):"");return g}}(C[a+80>>2])};(a=C[a+4>>2])&&(f.label=a?F(A,a):""); +return f},hc=[0,"undefined"!=typeof document?document:0,"undefined"!=typeof window?window:0]; +e.requestFullscreen=function(a,b){function c(){db=!1;var g=f.parentNode;(document.fullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement)===g?(f.exitFullscreen=lb,kb&&f.requestPointerLock(),db=!0,K?("undefined"!=typeof SDL&&(B[SDL.screen>>2]=C[SDL.screen>>2]|8388608),pb(e.canvas),ob()):pb(f)):(g.parentNode.insertBefore(f,g),g.parentNode.removeChild(g),K?("undefined"!=typeof SDL&&(B[SDL.screen>>2]=C[SDL.screen>> +2]&-8388609),pb(e.canvas),ob()):pb(f));e.onFullScreen?.(db);e.onFullscreen?.(db)}kb=a;K=b;"undefined"==typeof kb&&(kb=!0);"undefined"==typeof K&&(K=!1);var f=e.canvas;jb||(jb=!0,document.addEventListener("fullscreenchange",c,!1),document.addEventListener("mozfullscreenchange",c,!1),document.addEventListener("webkitfullscreenchange",c,!1),document.addEventListener("MSFullscreenChange",c,!1));var d=document.createElement("div");f.parentNode.insertBefore(d,f);d.appendChild(f);d.requestFullscreen=d.requestFullscreen|| +d.mozRequestFullScreen||d.msRequestFullscreen||(d.webkitRequestFullscreen?()=>d.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT):null)||(d.webkitRequestFullScreen?()=>d.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT):null);d.requestFullscreen()};e.requestAnimationFrame=Qa;e.setCanvasSize=function(a,b,c){pb(e.canvas,a,b);c||ob()};e.pauseMainLoop=cb;e.resumeMainLoop=function(){H++;var a=Ja,b=Ka,c=La;La=null;Ya(c,0,!1,Ta,!0);Sa(a,b);G()}; +e.getUserMedia=function(a){let b;(b=window).getUserMedia||(b.getUserMedia=navigator.getUserMedia||navigator.mozGetUserMedia);window.getUserMedia(a)};e.createContext=function(a,b,c,f){if(b&&e.ta&&a==e.canvas)return e.ta;var d;if(b){var g={antialias:!1,alpha:!1,Fa:1};if(f)for(var k in f)g[k]=f[k];if("undefined"!=typeof GL&&(d=GL.createContext(a,g)))var m=GL.getContext(d).za}else m=a.getContext("2d");if(!m)return null;c&&(e.ta=m,b&&GL.Ga(d),e.Ma=b,fb.forEach(n=>n()),gb());return m}; +(()=>{function a(){this.oa={};this.wa=1;this.create=function(b,c={}){var f=this.wa++;c.ra=1;c.object=b;this.oa[f]=c;return f};this.get=function(b){if(b)return this.oa[b].object};this.qa=function(b){this.oa[b].ra++};this.release=function(b){var c=this.oa[b];c.ra--;0>=c.ra&&delete this.oa[b]}}O||(Vb=Vb||new a,Wb=Wb||new a,Xb=Xb||new a,O=O||new a,P=P||new a,Yb=Yb||new a,Q=Q||new a,R=R||new a,Zb=Zb||new a,$b=$b||new a,S=S||new a,ac=ac||new a,T=T||new a,U=U||new a,bc=bc||new a,V=V||new a,wb=wb||new a, +cc=cc||new a,dc=dc||new a,W=W||new a,ec=ec||new a,fc=fc||new a)})(); +var kc={d:(a,b,c,f)=>{xa(`Assertion failed: ${a?F(A,a):""}, at: `+[b?b?F(A,b):"":"unknown filename",c,f?f?F(A,f):"":"unknown function"])},z:()=>{xa("")},O:(a,b,c)=>A.copyWithin(a,b,b+c),ea:()=>{cb();La=null},A:()=>{xa("OOM")},W:(a,b,c)=>{a=L(a);Ya(a,b,c)},v:a=>{z=a;$a(a)},G:(a,b,c,f)=>{for(var d=0,g=0;g>2],m=C[b+4>>2];b+=8;for(var n=0;n>2]=d;return 0},x:a=>Xb.release(a),y:(a,b,c,f)=>{a= +Xb.get(a);var d={};if(b){var g=C[b+8>>2];if(g){var k=C[b+12>>2];d.requiredFeatures=Array.from(B.subarray(k>>2,k+4*g>>2),l=>Eb[l])}if(g=C[b+16>>2]){var m=g+8,n={};function l(q,r){r=C[m+r>>2];4294967295!=r&&(n[q]=r)}function v(q,r){r=m+r;var y=C[r+4>>2];if(4294967295!=C[r>>2]||4294967295!=y)n[q]=4294967296*C[r+4>>2]+C[r>>2]}l("maxTextureDimension1D",0);l("maxTextureDimension2D",4);l("maxTextureDimension3D",8);l("maxTextureArrayLayers",12);l("maxBindGroups",16);l("maxBindGroupsPlusVertexBuffers",20); +l("maxDynamicUniformBuffersPerPipelineLayout",28);l("maxDynamicStorageBuffersPerPipelineLayout",32);l("maxSampledTexturesPerShaderStage",36);l("maxSamplersPerShaderStage",40);l("maxStorageBuffersPerShaderStage",44);l("maxStorageTexturesPerShaderStage",48);l("maxUniformBuffersPerShaderStage",52);l("minUniformBufferOffsetAlignment",72);l("minStorageBufferOffsetAlignment",76);v("maxUniformBufferBindingSize",56);v("maxStorageBufferBindingSize",64);l("maxVertexBuffers",80);l("maxBufferSize",88);l("maxVertexAttributes", +96);l("maxVertexBufferArrayStride",100);l("maxInterStageShaderComponents",104);l("maxInterStageShaderVariables",108);l("maxColorAttachments",112);l("maxColorAttachmentBytesPerSample",116);l("maxComputeWorkgroupStorageSize",120);l("maxComputeInvocationsPerWorkgroup",124);l("maxComputeWorkgroupSizeX",128);l("maxComputeWorkgroupSizeY",132);l("maxComputeWorkgroupSizeZ",136);l("maxComputeWorkgroupsPerDimension",140);d.requiredLimits=n}if(k=C[b+20>>2])g={},(k=C[k+4>>2])&&(g.label=k?F(A,k):""),d.defaultQueue= +g;var p=C[b+28>>2],u=C[b+32>>2];(k=C[b+4>>2])&&(d.label=k?F(A,k):"")}a.requestDevice(d).then(l=>{I(()=>{var v={xa:P.create(l.queue)};v=O.create(l,v);p&&l.lost.then(q=>{I(()=>{var r=p,y=yb[q.reason],oa=q.message,Fa=u,pa=X();oa=M(oa);L(r)(y,oa,Fa);Y(pa)})});L(c)(0,v,0,f)})},function(l){I(()=>{var v=X(),q=M(l.message);L(c)(1,0,q,f);Y(v)})})},ca:a=>V.qa(a),w:a=>V.release(a),da:a=>$b.release(a),ba:(a,b,c)=>{a=S.oa[a];0===c&&J();-1==c&&(c=void 0);try{var f=a.object.getMappedRange(b,c)}catch(g){return 0}var d= +ic(16,f.byteLength);A.set(new Uint8Array(f),d);a.pa.push(()=>jc(d));return d},m:(a,b,c)=>{a=S.oa[a];0===c&&J();-1==c&&(c=void 0);if(2!==a.ua)return 0;try{var f=a.object.getMappedRange(b,c)}catch(g){return 0}var d=ic(16,f.byteLength);A.fill(0,d,f.byteLength);a.pa.push(()=>{(new Uint8Array(f)).set(A.subarray(d,d+f.byteLength));jc(d)});return d},c:(a,b,c,f,d,g)=>{a=S.oa[a];a.ua=b;a.pa=[];a=a.object;-1==f&&(f=void 0);a.mapAsync(b,c,f).then(()=>{I(()=>{L(d)(0,g)})},()=>{I(()=>{L(d)(1,g)})})},b:a=>S.qa(a), +a:a=>S.release(a),s:a=>{a=S.oa[a];if(a.pa){for(var b=0;bYb.release(a),aa:(a,b)=>{var c=C[b>>2],f=void 0;0!==c&&(f=4294967296*C[c+12>>2]+C[c+8>>2]);var d=C[b+8>>2],g=C[b+12>>2];c=[];for(var k=0;k>2];if(0!==u){var l=B[p+8>>2];-1==l&&(l=void 0);var v=C[p+16>>2],q=C[p+20>>2];var r=p+24;r={r:D[r>>3],g:D[r+8>>3],b:D[r+16>>3],a:D[r+24>>3]};p={view:U.get(u),depthSlice:l,resolveTarget:U.get(C[p+ +12>>2]),clearValue:r,loadOp:Ib[v],storeOp:Ob[q]}}else p=void 0;n.call(m,p)}d=C[b+16>>2];d=0!==d?{view:U.get(C[d>>2]),depthClearValue:na[d+12>>2],depthLoadOp:Ib[C[d+4>>2]],depthStoreOp:Ob[C[d+8>>2]],depthReadOnly:!!C[d+16>>2],stencilClearValue:C[d+28>>2],stencilLoadOp:Ib[C[d+20>>2]],stencilStoreOp:Ob[C[d+24>>2]],stencilReadOnly:!!C[d+32>>2]}:void 0;g=bc.get(C[b+20>>2]);k=C[b+24>>2];k=0!==k?{querySet:bc.get(C[k>>2]),beginningOfPassWriteIndex:C[k+4>>2],endOfPassWriteIndex:C[k+8>>2]}:void 0;f={label:void 0, +colorAttachments:c,depthStencilAttachment:d,occlusionQuerySet:g,timestampWrites:k,maxDrawCount:f};(b=C[b+4>>2])&&(f.label=b?F(A,b):"");a=Q.get(a);return R.create(a.beginRenderPass(f))},B:function(a,b,c,f,d,g,k,m,n){c=f+2097152>>>0<4194305-!!c?(c>>>0)+4294967296*f:NaN;g=k+2097152>>>0<4194305-!!g?(g>>>0)+4294967296*k:NaN;m=n+2097152>>>0<4194305-!!m?(m>>>0)+4294967296*n:NaN;a=Q.get(a);b=S.get(b);d=S.get(d);a.copyBufferToBuffer(b,c,d,g,m)},$:(a,b,c,f)=>{a=Q.get(a);f=ub(f);var d=a.copyTextureToBuffer, +g=T.get(C[b+4>>2]),k=b+12;b={texture:g,mipLevel:C[b+8>>2],origin:{x:C[k>>2],y:C[k+4>>2],z:C[k+8>>2]},aspect:Pb[C[b+24>>2]]};g=c+8;k=C[g+16>>2];var m=C[g+20>>2];g={offset:4294967296*C[g+4+8>>2]+C[g+8>>2],bytesPerRow:4294967295===k?void 0:k,rowsPerImage:4294967295===m?void 0:m};g.buffer=S.get(C[c+32>>2]);d.call(a,b,g,f)},k:a=>{a=Q.get(a);return Yb.create(a.finish())},j:a=>Q.release(a),_:(a,b)=>{for(var c=V.get(C[b+8>>2]),f=C[b+12>>2],d=C[b+16>>2],g=[],k=0;k>2],l=C[p+32>>2],v=C[p+36>>2],q=C[p+4>>2];u?(l=p+24,l=C[l>>2]+4294967296*B[l+4>>2],-1==l&&(l=void 0),p={binding:q,resource:{buffer:S.get(u),offset:4294967296*C[p+4+16>>2]+C[p+16>>2],size:l}}):p=l?{binding:q,resource:ac.get(l)}:{binding:q,resource:U.get(v)};n.call(m,p)}c={label:void 0,layout:c,entries:g};(b=C[b+4>>2])&&(c.label=b?F(A,b):"");a=O.get(a);return $b.create(a.createBindGroup(c))},Z:(a,b)=>{for(var c=C[b+8>>2],f=C[b+12>>2],d=[],g=0;g>2],u=C[n+ +8>>2];var l=n+16;var v=C[l+4>>2];l=v?{type:Bb[v],hasDynamicOffset:!!C[l+8>>2],minBindingSize:4294967296*C[l+4+16>>2]+C[l+16>>2]}:void 0;v=(v=C[n+40+4>>2])?{type:Lb[v]}:void 0;var q=n+48;var r=C[q+4>>2];q=r?{sampleType:Rb[r],viewDimension:Sb[C[q+8>>2]],multisampled:!!C[q+12>>2]}:void 0;n+=64;n=(r=C[n+4>>2])?{access:Nb[r],format:N[C[n+8>>2]],viewDimension:Sb[C[n+12>>2]]}:void 0;m.call(k,{binding:p,visibility:u,buffer:l,sampler:v,texture:q,storageTexture:n})}c={entries:d};(b=C[b+4>>2])&&(c.label=b?F(A, +b):"");a=O.get(a);return V.create(a.createBindGroupLayout(c))},f:(a,b)=>{var c=!!C[b+24>>2],f={label:void 0,usage:C[b+8>>2],size:4294967296*C[b+4+16>>2]+C[b+16>>2],mappedAtCreation:c};(b=C[b+4>>2])&&(f.label=b?F(A,b):"");b=O.get(a);a={};f=S.create(b.createBuffer(f),a);c&&(a.ua=2,a.pa=[]);return f},i:(a,b)=>{if(b){var c={label:void 0};(b=C[b+4>>2])&&(c.label=b?F(A,b):"")}a=O.get(a);return Q.create(a.createCommandEncoder(c))},Y:(a,b)=>{for(var c=C[b+8>>2],f=C[b+12>>2],d=[],g=0;g>2]));c={label:void 0,bindGroupLayouts:d};(b=C[b+4>>2])&&(c.label=b?F(A,b):"");a=O.get(a);return wb.create(a.createPipelineLayout(c))},X:(a,b)=>{b=gc(b);a=O.get(a);return cc.create(a.createRenderPipeline(b))},V:(a,b)=>{var c=C[b>>2],f=C[c+4>>2],d={label:void 0,code:""};(b=C[b+4>>2])&&(d.label=b?F(A,b):"");switch(f){case 5:f=C[c+12>>2]>>2;d.code=C.subarray(f,f+C[c+8>>2]);break;case 6:(c=C[c+8>>2])&&(d.code=c?F(A,c):"")}a=O.get(a);return W.create(a.createShaderModule(d))},U:(a,b,c)=>{a=O.get(a); +b=Vb.get(b);var f=[C[c+16>>2],C[c+20>>2]];0!==f[0]&&(b.canvas.width=f[0]);0!==f[1]&&(b.canvas.height=f[1]);b.configure({device:a,format:N[C[c+12>>2]],usage:C[c+8>>2],alphaMode:"opaque"});return Wb.create(b)},r:(a,b)=>{var c={label:void 0,size:ub(b+16),mipLevelCount:C[b+32>>2],sampleCount:C[b+36>>2],dimension:Qb[C[b+12>>2]],format:N[C[b+28>>2]],usage:C[b+8>>2]},f=C[b+4>>2];f&&(c.label=f?F(A,f):"");if(f=C[b+40>>2])b=C[b+44>>2],c.viewFormats=Array.from(B.subarray(b>>2,b+4*f>>2),function(d){return N[d]}); +a=O.get(a);return T.create(a.createTexture(c))},T:a=>{a=O.oa[a].xa;P.qa(a);return a},u:a=>O.qa(a),q:a=>O.release(a),S:(a,b,c)=>{O.get(a).onuncapturederror=function(f){I(()=>{var d;f.error instanceof GPUValidationError?d=1:f.error instanceof GPUOutOfMemoryError&&(d=2);var g=f.error.message,k=X();g=M(g);L(b)(d,g,c);Y(k)})}},R:(a,b)=>{a=C[C[b>>2]+8>>2];a=2>2])a.Ka= +b?F(A,b):"";return Vb.create(a)},Q:(a,b,c,f)=>{var d;b&&(d={powerPreference:Jb[C[b+8>>2]],forceFallbackAdapter:!!C[b+16>>2]});"gpu"in navigator?navigator.gpu.requestAdapter(d).then(g=>{I(()=>{if(g){var k=Xb.create(g);L(c)(0,k,0,f)}else{k=X();var m=M("WebGPU not available on this system (requestAdapter returned null)");L(c)(1,0,m,f);Y(k)}})},g=>{I(()=>{var k=X(),m=M(g.message);L(c)(2,0,m,f);Y(k)})}):(a=X(),b=M("WebGPU not available on this browser (navigator.gpu is not available)"),L(c)(1,0,b,f),Y(a))}, +P:a=>wb.release(a),N:a=>bc.release(a),M:a=>P.release(a),h:(a,b,c)=>{a=P.get(a);b=Array.from(B.subarray(c>>2,c+4*b>>2),f=>Yb.get(f));a.submit(b)},L:(a,b,c,f,d)=>{R.get(a).draw(b,c,f,d)},K:a=>{R.get(a).end()},I:a=>R.release(a),J:(a,b)=>{a=R.get(a);b=cc.get(b);a.setPipeline(b)},H:a=>cc.release(a),t:a=>W.qa(a),p:a=>W.release(a),F:a=>Vb.release(a),E:a=>{a=Wb.get(a);return U.create(a.getCurrentTexture().createView())},D:a=>Wb.release(a),o:(a,b)=>{if(b){var c=C[b+20>>2];var f=C[b+28>>2];c={format:N[C[b+ +8>>2]],dimension:Sb[C[b+12>>2]],baseMipLevel:C[b+16>>2],mipLevelCount:4294967295===c?void 0:c,baseArrayLayer:C[b+24>>2],arrayLayerCount:4294967295===f?void 0:f,aspect:Pb[C[b+32>>2]]};(b=C[b+4>>2])&&(c.label=b?F(A,b):"")}a=T.get(a);return U.create(a.createView(c))},C:a=>T.qa(a),g:a=>T.release(a),n:a=>U.qa(a),e:a=>U.release(a)},Z=function(){function a(c){Z=c.exports;ma=Z.fa;c=ma.buffer;e.HEAP8=new Int8Array(c);e.HEAP16=new Int16Array(c);e.HEAPU8=A=new Uint8Array(c);e.HEAPU16=new Uint16Array(c);e.HEAP32= +B=new Int32Array(c);e.HEAPU32=C=new Uint32Array(c);e.HEAPF32=na=new Float32Array(c);e.HEAPF64=D=new Float64Array(c);rb=Z.ia;ra.unshift(Z.ga);E--;e.monitorRunDependencies?.(E);0==E&&(null!==va&&(clearInterval(va),va=null),wa&&(c=wa,wa=null,c()));return Z}var b={a:kc};E++;e.monitorRunDependencies?.(E);if(e.instantiateWasm)try{return e.instantiateWasm(b,a)}catch(c){return t(`Module.instantiateWasm callback failed with error: ${c}`),!1}za||=ya("hello.wasm")?"hello.wasm":e.locateFile?e.locateFile("hello.wasm", +h):h+"hello.wasm";Da(b,function(c){a(c.instance)});return{}}(),lc=e._main=(a,b)=>(lc=e._main=Z.ha)(a,b),jc=a=>(jc=Z.ja)(a),ic=(a,b)=>(ic=Z.ka)(a,b),Y=a=>(Y=Z.la)(a),tb=a=>(tb=Z.ma)(a),X=()=>(X=Z.na)(),mc;wa=function nc(){mc||oc();mc||(wa=nc)}; +function oc(){function a(){if(!mc&&(mc=!0,e.calledRun=!0,!x)){Ea(ra);Ea(sa);e.onRuntimeInitialized?.();if(pc){var b=lc;try{var c=b(0,0);z=c;$a(c)}catch(f){Za(f)}}if(e.postRun)for("function"==typeof e.postRun&&(e.postRun=[e.postRun]);e.postRun.length;)b=e.postRun.shift(),ta.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 EFMtF-2LJ#7 literal 0 HcmV?d00001