Spaces:
Running
Running
File size: 3,674 Bytes
4d67bef edfffcc 4d67bef edfffcc | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | <!DOCTYPE html>
<html>
<head>
<!--
If you are serving your web app in a path other than the root, change the
href value below to reflect the base path you are serving from.
The path provided below has to start and end with a slash "/" in order for
it to work correctly.
For more details:
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base
This is a placeholder for base href that will be replaced by the value of
the `--base-href` argument provided to `flutter build`.
-->
<base href="/">
<meta charset="UTF-8">
<meta content="IE=Edge" http-equiv="X-UA-Compatible">
<meta name="description" content="Real-time Tetris played by the Laya decision model through llamadart.">
<!-- iOS meta tags & icons -->
<meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-title" content="Laya Tetris">
<link rel="apple-touch-icon" href="icons/Icon-192.png">
<!-- Favicon -->
<link rel="icon" type="image/png" href="favicon.png"/>
<title>Laya Tetris</title>
<link rel="manifest" href="manifest.json">
</head>
<body>
<!--
Loads the llama.cpp WebGPU bridge from webgpu_bridge/, which
scripts/fetch_webgpu_bridge_assets.sh fills, before llamadart looks for it.
-->
<script type="module">
let resolveReady, rejectReady;
window.__llamadartBridgeReady = false;
window.__llamadartBridgeReadyPromise = new Promise((resolve, reject) => {
resolveReady = resolve;
rejectReady = reject;
});
window.__llamadartBridgeReadyPromise.catch(() => {});
const cores = Math.trunc(Number(navigator.hardwareConcurrency)) || 2;
window.__llamadartBridgeThreadPoolSize = window.crossOriginIsolated
? Math.max(2, Math.min(4, cores))
: 1;
try {
const dir = new URL('webgpu_bridge/', document.baseURI);
const response = await fetch(new URL('manifest.json', dir), {
cache: 'no-cache',
});
if (!response.ok) {
throw new Error(`webgpu_bridge/manifest.json: HTTP ${response.status}`);
}
const { bridge_assets_tag: tag } = await response.json();
const asset = (name) => {
const url = new URL(name, dir);
url.searchParams.set('v', tag);
return url.href;
};
const mod = await import(asset('llama_webgpu_bridge.js'));
if (!mod.LlamaWebGpuBridge) {
throw new Error('The bridge module has no LlamaWebGpuBridge export.');
}
Object.assign(window, {
__llamadartBridgeCoreModuleUrl: asset('llama_webgpu_core.js'),
__llamadartBridgeCoreModuleUrlMem64: asset('llama_webgpu_core_mem64.js'),
__llamadartBridgeWasmUrl: asset('llama_webgpu_core.wasm'),
__llamadartBridgeWasmUrlMem64: asset('llama_webgpu_core_mem64.wasm'),
__llamadartBridgeWorkerUrl:
typeof mod.enableBridgeWorkerHost === 'function'
? asset('llama_webgpu_bridge_worker.js')
: null,
LlamaWebGpuBridge: mod.LlamaWebGpuBridge,
__llamadartBridgeReady: true,
});
resolveReady();
} catch (error) {
window.__llamadartBridgeLoadError = `WebGPU bridge failed to load: ${error}`;
rejectReady(error);
}
</script>
<!--
You can customize the "flutter_bootstrap.js" script.
This is useful to provide a custom configuration to the Flutter loader
or to give the user feedback during the initialization process.
For more details:
* https://docs.flutter.dev/platform-integration/web/initialization
-->
<script src="flutter_bootstrap.js" async></script>
</body>
</html>
|