Proton 使用的 mesa+vulkan 驱动程序版本与主机 mesa 驱动程序版本不匹配

Proton 使用的 mesa+vulkan 驱动程序版本与主机 mesa 驱动程序版本不匹配

Proton 在最新的 DXVK 实施中运行良好,但是当我浏览 Proton 使用的游戏的日志文件时,我注意到我的主机系统的台面驱动程序版本与那里列出的不匹配。到目前为止我所知道的是 dxvk 是一个桥梁,因此来自 D3D10/D3D11 的调用可以转换为 Vulkan 并在您的主机系统中进行处理,从而依赖于您的图形驱动程序和 Vulkan mesa 驱动程序(在我的例子中是 Amdgpu RADV)。

这些是 Vulkan 使用的 mesa 驱动程序版本和 api 版本列在 Proton 加载的游戏日志中(win64游戏):

AMD RADV POLARIS10 (LLVM 7.0.1):
驱动程序:18.3.6
Vulkan:1.1.70

的输出沃尔坎信息报告 apiversion“1.1.90”与版本“1.1.70”不同用于质子:

Vulkan 实例版本:1.1.107
GPU id:0
(AMD RADV POLARIS10 (LLVM 8.0.0))
apiVersion = 0x40105a (1.1.90)
driverInfo = Mesa 19.1.0 (LLVM 8.0.0)

输出来自环球信息网同意 mesa 驱动程序版本和 LLVM 版本沃尔坎信息:

OpenGL 渲染器字符串:Radeon RX 570 系列(POLARIS10、DRM 3.30.0、5.1.14-arch1-1-ARCH、LLVM 8.0.0)
OpenGL 核心配置文件版本字符串:4.5(核心配置文件)Mesa 19.1.0

此外,在 vulkan 环境初始化发生之前,根据游戏日志的报告加载以下 DLL:

已加载 L"C:\windows\system32\vulkan-1.dll" 在 0x7fa05e6e0000: 内置

已加载 L"C:\windows\system32\winevulkan.dll" 在 0x7fa05e6a0000: 内置

也许这些 DLL 就是造成这种不匹配的原因。

编辑:打开另一个游戏时卢特里斯使用自定义 DXVK_HUD 选项我可以看到两个都vulkan API版本和mesa版本匹配我的主机上的各个版本。仍然不知道为什么 Proton 有这种行为。

总结

  1. Proton 的 LLVM 版本与我的图形驱动程序上找到的版本不同:LLVM 7.0.1 (Proton) - LLVM 8.0.0 (Host)
  2. Proton 的 Mesa 驱动程序版本与在我的主机系统上提供 GL 和 VK 实现的 mesa 驱动程序版本不同:Mesa 18.3.6 (Proton) - Mesa 19.1.0 (Host)
  3. Proton 的 Vulkan API 版本与 vulkaninfo 报告的 Vulkan 实现所使用的版本不同:1.1.70 (Proton) - 1.1.90 (Host)

我在这里遗漏了一些东西,据我所知,Proton 没有提供自己的台面实现。谁能解释一下并告诉我为什么这些版本之间存在如此不匹配的情况?

答案1

问题是我的 Steam 安装来自 Flathub 存储库,其中运行时加载在隔离环境(沙箱)中。因此,steam 无法看到远离其根路径(/home/user/var/app.valve...)。似乎隔离是运行 DXVK_HUD 时显示版本之间不匹配的原因,但我无法确认,正如您将在第三段中看到的那样。

可能 Flathub 的 steam 读取我的主机包版本很糟糕,报告了不正确的版本,但由于我什至没有安装 LLVM 7,所以也使用它们,那么 DXVK_HUD 为何会说我正在使用它呢?

现在起,我已经解决了这个问题删除 Steam 的 Flathub 版本并安装位于 multilib(32 位 ARCH 存储库)中的软件包。现在,我的主机与 DXVK_HUD 显示的主机之间的 Mesa、Vulkan-API 和 LLVM 版本相匹配。我开始认为这个问题可能存在于Flathub Steam版本的用户之间,但谁知道我没有在网上找到任何讨论我的问题的帖子。

相关内容