Hacker News | 📄 原文链接 | 2026-10-01 收录

用 Facet 给 WebGPU 数据布局上单元测试

来源:mattkeeter.com — 77 分 · by luu

📋 概述

在写 GPU compute shader 时,经常需要在主机和着色器之间共享一小段配置数据。作者给出了一个来自 fidget-wgpu 的示例:WGSL 里定义 mat3x3f、vec2u、f32 组成的 Config,Rust 侧用 zerocopy 派生并标 repr(C),靠 as_bytes() 直接写进 WebGPU buffer,看起来很方便,但 Rust 与 WebGPU 的内存布局规则常有微妙差异,这个例子其实是错的。更要命的是他在写字节码虚拟机,失败模式常常是 GPU 线程永久自旋、只能重启电脑。在又一次重启后,他决定系统性地解决:不引入 wgsl_to_wgpu、wgsl_bindgen、encase 等外部依赖,而是用已经在依赖树里的 naga 解析 WGSL 结构布局,然后写单元测试来比对两侧布局。

🔑 核心要点

💡 金句

更不幸的是,我在写的字节码虚拟机跑在 compute shader 里,它们的失败模式往往是:恭喜,你的 GPU 现在有永久自旋的线程,只能靠重启电脑来杀掉。
← 返回 Hacker News 首页