Rust и WebGPU не сходятся в размерах: как Facet спасает от зависших потоков GPU

Testing WebGPU data layouts with Facet

При работе с вычислительными шейдерами WebGPU данные конфигурации часто передаются из Rust в буферы, но правила выравнивания в WGSL и Rust различаются. Например, mat3x3 в WGSL занимает 48 байт из-за паддинга, а в Rust — всего 36. Автор показывает, как с помощью рантайм-рефлексии Facet автоматически сверять смещения и размеры полей, чтобы избежать ошибок, приводящих к зависанию GPU, которое лечится только перезагрузкой.

Их режим отказа часто звучит так: «поздравляем, теперь у вашего GPU есть постоянно крутящиеся потоки, которые можно убить только перезагрузкой компьютера».

Ещё за этот день

2026-09-30