Vulkan驱动程序现在使用Valve的ACO构建后端

在用于形成Mesa 20.2版本的代码库中, RADV驱动程序 适用于AMD芯片的Vulkan 切换到后端 默认编译 Valve开发的着色器»ACO« 替代LLVM着色器编译器。

此指定的更改 最终获得了游戏生产力的提高 并缩短了发布时间。

改变 从RADV控制器到新的后端 与旧的AMD开发的后端在ACO功能方面达到同等水平之后, 适用于AMDGPU驱动程序,该驱动程序继续在RadeonSI OpenGL驱动程序中使用。

Valve进行的测试表明,ACO的运行速度几乎是AMDGPU着色器构建编译器的两倍,并且在某些带有RADV驱动程序的系统上运行时,证明了某些游戏中FPS的提高。

AMD OpenGL和Vulkan驱动程序当前使用的着色器编译器是LLVM上游项目的一部分。 该项目是巨大的,有许多不同的目标,在线游戏着色器只是其中之一。 

这可能会导致开发权衡,在这种情况下,改进游戏特定功能的难度比其他方面困难,或者游戏特定功能通常被从事其他工作的LLVM开发人员意外破坏。

的后端 ACO旨在确保以最佳方式生成代码 可能适用于游戏应用着色器,并具有很高的编译速度。

ACO 它是用C ++编写的 开发时要牢记JIT编译的适用性, 并使用快速迭代遍历数据结构, 避免使用def等基于指针的结构(如链表和字符串)。 该代码的中间表示完全基于SSA(单一静态分配),并且可以分配记录,并基于着色器准确地计算记录。

该代码的中间表示完全基于SSA(单一静态分配),并且可以分配记录,并基于着色器准确地计算记录。

目前仅支持像素 (片段) 并在离散的AMD GPU上计算着色器 (dGPU VI +)。 但是,ACO已经为所有经过测试的游戏正确收集了着色器,包括《古墓丽影》和《德军总部II》中的复杂着色器。

拟议的ACO原型 为了测试 它几乎是AMDGPU着色器编译器的两倍 并展示了在带有RADV控制器的系统上运行时某些游戏中FPS的增加。

为了进一步了解采用Valve的代码的相关性,重要的是 目的是保证尽可能最佳的代码生成 适用于游戏应用着色器,以及很高的编译速度。

Mesa中可用的着色器编译器使用LLVM组件, 不允许达到期望的编译速度,并且不能完全控制控制流,而在过去,这种控制流已经引起了严重的错误。

另外, 避免使用LLVM可以实施更积极的分析 差异和更好的日志负载管理,从而可以更高效地生成可执行文件。

最后,它也是 重要的是要注意,目前ACO仅适用于Mesa RADV Vulkan控制器。 但是ACO开发人员已经确认,他们的下一步将是开始扩展ACO的功能以支持OpenGL RadeonSI驱动程序,以便将来和对于该驱动程序,ACO可以替换默认的LLVM着色器编译器。

多少 那些喜欢继续使用以前使用的后端的人 从LLVM着色器编译器,他们可以返回它,他们只需要更改一个变量。

提供用于进行此更改的环境变量是 “ RADV_DEBUG = llvm”。


发表评论,留下您的评论

发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。

  1.   瓦里·哈维(VaryHeavy)

    用户如何选择与哪个后端一起运行游戏? 它必须修改哪些文件?