告别 dxil-spirv 中的意大利面恶魔
Killing what can't be handled – putting a spaghetti demon to eternal rest

dxil-spirv 中的控制流图结构化器多年来一直是个巨大的痛点,架构摇摇欲坠,每次游戏更新都可能引发崩溃。面对无法处理的复杂 shader,我最终决定放弃对代码可读性的执念,转而借鉴 Mesa 的 goto_if 实现来确保正确性。通过引入 SPV_FROG_unstructured_control_flow 进行暴力验证,并构建 fuzzing 工具链对随机 CFG 进行压力测试,我成功修复了多个 Mesa 的底层 bug。这次重构虽然牺牲了调试便利性,但彻底终结了那个令人抓狂的“意大利面恶魔”,让 GPU 性能与代码稳定性得以兼顾。
最大的错误在于,我曾以为能在 dxil-spirv 中一次性解决所有问题,同时还能保持生成代码的最佳人类可读性。
- e1ghtSpace
提个网站反馈,虽然我也不太确定你在说什么,但我习惯用鼠标中键点击并拖拽来滚动页面,发现如果在图片上方这么做,图片会在新标签页打开,而不是滚动页面。我不确定这算不算需要修复的问题,只是在这里报告一下,以防万一。:)
- cowlevel
我从来没想过 SIMD 编译器内部究竟是如何工作的。天哪!
- FrustratedMonky
不错。
谢谢分享。我会去研究一下如何使用。