解码 Radeon™ Vulkan® 版本

最初发布:
Rys Sommefeldt's avatar
Rys Sommefeldt

更新于 2020 年 8 月

计算机科学中传统上只有两个难题——命名、缓存失效和偏移 1 错误——但我长期以来一直认为应该有第三个:软件版本控制。

我们遇到了一个实际问题,对于任何复杂打包软件的开发者来说,这个问题都会很熟悉:我们需要发布多个以不同节奏开发的驱动程序组件,并将它们以某种方式打包分发,作为单元进行安装。组件之间节奏的脱节意味着对每个组件的版本号进行对齐很困难,而且由于我们对大多数组件都有内部和外部版本控制方案,这个问题更加复杂。

您可以看到,将这个问题添加到我们领域中最困难问题的崇高列表中是有道理的!

当您下载并安装 AMD 提供的 GPU 驱动程序时,您获得的是一个带有公开名称的软件,今天称为 Radeon Software Adrenalin Edition Graphics Driver 18.8.1,但您无法可靠地将名称中的重要部分——18.8.1 – 映射到磁盘上实际安装并由操作系统加载的内容。这还不考虑它是否经过 WHQL 测试等细节。

那么,作为使用 Vulkan 编写软件的开发者,您如何将用户安装的 AMD GPU 驱动程序与驱动程序中的 Vulkan 组件版本进行映射呢?直到今天,您可能只能拔剑四顾心茫然!我们希望改变这一点。

我们提供了一个您可以集成到您的软件中的机器可读映射,以及这个页面下方附有方便的表格,每当出现新驱动版本时,我们都会对其进行更新。机器可读映射是一个 XML 文件,其结构将公共驱动版本号(例如 18.8.1)映射到其中包含的所有内容,包括 Vulkan 软件组件版本,这个版本号在驱动程序版本之间可能会发生变化,也可能不会。这是 Windows 上 18.6.1 的一个示例条目。

<driver version="18.6.1" operating-system="Windows">
<whql>Optional</whql>
<download-url>
https://support.amd.com/en-us/kb-articles/Pages/Radeon-Software-Adrenalin-Edition-18.6.1-Release-Notes.aspx
</download-url>
<internal-version>118.10.21.01</internal-version>
<windows-version>24.20.11021.1000</windows-version>
<vulkan-version>2.0.33</vulkan-version>
</driver>

今天,它为您提供了在 Windows 上从公共版本号查询内部版本号所需的信息。 

<whql> 如果驱动程序已通过 WHQL 认证,则为 WHQL,否则为 Optional<download-url> 允许您在需要时将用户指向获取驱动程序的正确位置,而 AMD GPU Services 可以通过读取 AGSGPUInfo->radeonSoftwareVersion 来让您以稳健的方式查询正在运行的版本号, 在您的游戏或应用程序中

更新 – 2020 年 8 月

对于 Radeon™ 驱动程序 19.11.1 或更高版本,您可以通过查询 VkPhysicalDeviceDriverProperties 结构并访问 driverInfo 字段来检索 Adrenalin Release 版本。例如,对于驱动程序 Radeon™ Software Adrenalin 2020 Edition 20.5.1,它返回 20.5.1。但请注意,返回的类型是字符串,不应用于您的应用程序中的决策制定,尤其是因为用户可能根本不使用 Adrenalin 驱动程序版本。例如,OEM 和 Pro 驱动程序使用不同的版本控制方案,并通过 driverInfo 返回字符串。尽管如此,它仍然可以方便地呈现给用户。

要访问 VkPhysicalDeviceDriverProperties 结构,请使用 VK_KHR_driver_properties 扩展。它已成为 Vulkan®1.2 的核心,并且在 Radeon™ 驱动程序 20.1.2 或更高版本中受支持。

如果您想查询 Vulkan® 驱动程序版本,则在 VkPhysicalDeviceProperties 中查询 driverVersion。检索到的值采用 10.22 的位字段格式,前 10 位代表第一个组件,第二个组件始终为 0,最后 22 位构成最后一个组件。如果您想知道它为何采用此特定格式,它遵循与 Vulkan® 的 VK_MAKE_VERSION 宏相同的格式。

例如,值 0x00080005e 映射到 Vulkan® 驱动程序版本 2.0.94。

Vulkan® 驱动程序版本用于所有不同的驱动程序类型(例如,Adrenalin 驱动程序版本和 Pro 驱动程序之间)。

机器可读 XML

资源

Rys Sommefeldt's avatar

Rys Sommefeldt

Rys Sommefeldt 是 AMD 的 GPU 硬件架构师。

相关新闻和技术文章

© . This site is unofficial and not affiliated with AMD.