Valve 为 AMD GPU 开放了新的着色器编译器

阀门公司 提供 Mesa 开发者邮件列表有一个新的着色器编译器 ACO 对于 Vulkan 驱动程序 RADV, 可定位的 作为 AMD 图形芯片的 OpenGL 和 Vulkan 驱动程序 RadeonSI 和 RADV 中使用的 AMDGPU 着色器编译器的替代方案。
一旦测试完成且功能最终确定,ACO 计划包含在主要的 Mesa 组合中。

Valve 提议的代码旨在为游戏应用程序着色器提供尽可能优化的代码生成,并实现非常高的编译速度。 Mesa的着色器编译器使用LLVM组件,它不能提供所需的编译速度,并且不允许完全控制控制流,这在过去导致了严重的错误。 此外,摆脱 LLVM 可以实现更积极的差异分析和更精细的寄存器负载控制,从而使您能够生成更高效的可执行文件。

ACO 用 C++ 编写,设计时考虑到了 JIT 编译,并使用快速迭代数据结构,避免了基于指针的结构,例如链表和 def-use 链。 中间代码表示完全基于 公共福利金 (静态单一分配)并允许通过根据着色器准确地预先计算寄存器来分配寄存器。

目前,独立 AMD GPU (dGPU VI+) 仅支持像素(片段)和计算着色器。 然而,ACO 已经正确收集了所有测试游戏的着色器,包括《古墓丽影:暗影》和《德军总部 II》中的复杂着色器。 提议用于测试的 ACO 原型在编译速度方面几乎是 AMDGPU 着色器编译器的两倍,并且在使用 RADV 驱动程序的系统上运行时,某些游戏的 FPS 有所提高。

Valve 为 AMD GPU 开放了新的着色器编译器

Valve 为 AMD GPU 开放了新的着色器编译器

来源: opennet.ru

添加评论