AMD 在 Linux 下维护着两套开源 Vulkan 驱动:

  • AMDVLK
    • 从闭源 Windows Vulkan 驱动适配而来,主要不同在 shader 编译后端, AMDVLK 使用基于 LLVM 的 LLPC
  • RADV
    • 是 Mesa 项目的一部分,主要由社区驱动。使用的 shader 编译后端是基于 NIR 的 ACO (AMD COmpiler)

这里主要是记录一下两者的异同点,学习两者不同的设计策略及其作出选择的背后理念。

AMDVLK

AMDVLK 的 README 有一张架构图, 非常清晰地展示了整个驱动包含的组件和层次结构。

topLevelArch

AMDVLK 驱动由 5 个代码仓库构建:

  • LLVM
  • XGL Vulkan API Translator
  • LLPC LLVM-based Pipeline Compiler
  • GPURT GPU Ray Tracing Library
  • PAL Platform Abstraction Library

其中 XGL, LLPC, GPURT 都与 PAL 有关联。