无法读取 null 的属性“requestDevice”
我正在尝试在 WebGpu 中渲染 Web GPU 着色器对象
并且它返回此错误
未捕获(在承诺中)TypeError:无法读取 cube.html:28 的 null 属性“requestDevice”
这是我对 requestDevice 的代码
(async () => {
const [adapter, glslang] = await Promise.all([
navigator.gpu.requestAdapter(),
import("https://unpkg.com/@webgpu/[email protected]/web/glslang.js").then(m => m.default())
]);
const device = await adapter.requestDevice();
const canvas = document.getElementById("webgpu-canvas");
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
});
有什么想法可以修复此错误?
尝试了很多方法后,我通过重新启用 about:flags 中的 --enable-unsafe-webgpu 标志解决了这个问题!
之前刷新页面几次都可以,但后来就停止了……现在好像没问题了!
发生这种情况的原因如下。请按特定顺序查看这些原因:
-
当用户在
chrome://settings/system
中关闭“在可用时使用图形加速”时,WebGPU 将被禁用。请检查此设置是否已关闭,然后重新打开 -
此平台尚不支持 WebGPU。您可以启用
chrome://flags/#enable-unsafe-webgpu
标志并重新启动 Chrome。对于 Linux 实验性支持,您还需要启用chrome://flags/#enable-vulkan
标志。查看 Headless Chrome 中的 WebGPU 支持 以了解更多信息。 -
GPU 硬件已被特别列入黑名单。如果您在
chrome://gpu
中看到“已通过阻止列表或命令行禁用 WebGPU”,则可以通过启用chrome://flags/#enable-unsafe-webgpu
标志并重新启动 Chrome 来禁用 WebGPU 适配器阻止列表。 -
对于
requestAdapter()
中传递的选项,没有匹配的 GPU 适配器。 尝试使用不同的选项调用requestAdapter()
。 -
WebGPU 需要 GPU(硬件或软件模拟)。您可以通过访问
chrome://gpu
检查 Chrome 是否检测到 GPU。
有关更多提示,请参阅 https://developer.chrome.com/docs/web-platform/webgpu/troubleshooting-tips