Skip to content

Commit 88d52d8

Browse files
authored
Merge pull request #61 from csyonghe/main
Fix UI problems when webgpu is not available.
2 parents d1d0688 + 8ecfbfb commit 88d52d8

File tree

2 files changed

+19
-13
lines changed

2 files changed

+19
-13
lines changed

index.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
<script src="compiler.js"></script>
4848
<script src="try-slang.js"></script>
4949
<script src="language-server.js"></script>
50-
<script src="slang-wasm.js"></script>
50+
<script async src="slang-wasm.js"></script>
5151
<script async src="https://www.googletagmanager.com/gtag/js?id=G-TMTZVLLMBP"></script>
5252
<script>
5353
window.dataLayer = window.dataLayer || [];

try-slang.js

+18-12
Original file line numberDiff line numberDiff line change
@@ -38,20 +38,23 @@ var randFloatPipeline;
3838
var randFloatResources;
3939

4040
async function webgpuInit() {
41-
const adapter = await navigator.gpu?.requestAdapter();
42-
if (!adapter) {
43-
console.log('need a browser that supports WebGPU');
44-
return;
45-
}
46-
const requiredFeatures = [];
41+
try {
42+
const adapter = await navigator.gpu?.requestAdapter();
43+
if (!adapter) {
44+
console.log('need a browser that supports WebGPU');
45+
return;
46+
}
47+
const requiredFeatures = [];
4748

48-
device = await adapter?.requestDevice({ requiredFeatures });
49-
if (!device) {
50-
console.log('need a browser that supports WebGPU');
51-
return;
49+
device = await adapter?.requestDevice({ requiredFeatures });
50+
if (!device) {
51+
console.log('need a browser that supports WebGPU');
52+
return;
53+
}
54+
context = configContext(device, canvas);
55+
}
56+
catch {
5257
}
53-
context = configContext(device, canvas);
54-
5558
// The default resolution of a canvas element is 300x150, which is too small compared to the container size of the canvas,
5659
// therefore, we have to set the resolution same as the container size.
5760

@@ -60,6 +63,9 @@ async function webgpuInit() {
6063
}
6164

6265
function resizeCanvas(entries) {
66+
if (device == null)
67+
return;
68+
6369
const canvas = entries[0].target;
6470

6571
const width = canvas.clientWidth;

0 commit comments

Comments
 (0)