Files
micarrsim/packages/ui/webgpu-status.js
T
2026-08-28 12:34:11 +09:00

34 lines
996 B
JavaScript

let capabilityPromise;
export function detectWebGpuCapability() {
capabilityPromise ??= detect();
return capabilityPromise;
}
async function detect() {
if (!navigator.gpu) {
return { available: false, label: "CPU fallback", detail: "WebGPU API 없음" };
}
try {
const adapter = await navigator.gpu.requestAdapter({ powerPreference: "high-performance" });
if (!adapter) {
return { available: false, label: "CPU fallback", detail: "WebGPU adapter 없음" };
}
const info = adapter.info;
const adapterName = [info?.vendor, info?.architecture || info?.device]
.filter(Boolean)
.join(" · ");
return {
available: true,
label: adapterName ? `WebGPU · ${adapterName}` : "WebGPU adapter 준비됨",
detail: adapterName || "WebGPU adapter 준비됨",
};
} catch (error) {
return {
available: false,
label: "CPU fallback",
detail: error instanceof Error ? error.message : String(error),
};
}
}