From 7d49dff0747f69e96ab83a98b97ece96d4268b36 Mon Sep 17 00:00:00 2001
From: anthops <32993852+anthops@users.noreply.github.com>
Date: Wed, 23 Apr 2025 16:32:52 +0000
Subject: [PATCH] fix: prefer webgl for devices with webgpu and no float32-blendable feature flag #1899 (#1933)
---
quartz/components/scripts/graph.inline.ts | 12 +++++++++++-
1 files changed, 11 insertions(+), 1 deletions(-)
diff --git a/quartz/components/scripts/graph.inline.ts b/quartz/components/scripts/graph.inline.ts
index a669b05..87e2958 100644
--- a/quartz/components/scripts/graph.inline.ts
+++ b/quartz/components/scripts/graph.inline.ts
@@ -68,6 +68,15 @@
stop: () => void
}
+async function determineGraphicsAPI(): Promise<"webgpu" | "webgl"> {
+ const adapter = await navigator.gpu?.requestAdapter().catch(() => null)
+ if (!adapter) {
+ return "webgl"
+ }
+ // Devices with WebGPU but no float32-blendable feature fail to render the graph
+ return adapter.features.has("float32-blendable") ? "webgpu" : "webgl"
+}
+
async function renderGraph(graph: HTMLElement, fullSlug: FullSlug) {
const slug = simplifySlug(fullSlug)
const visited = getVisited()
@@ -349,6 +358,7 @@
tweens.forEach((tween) => tween.stop())
tweens.clear()
+ const pixiPreference = await determineGraphicsAPI()
const app = new Application()
await app.init({
width,
@@ -357,7 +367,7 @@
autoStart: false,
autoDensity: true,
backgroundAlpha: 0,
- preference: "webgpu",
+ preference: pixiPreference,
resolution: window.devicePixelRatio,
eventMode: "static",
})
--
Gitblit v1.10.0