#3694·dxvk

[功能请求] eGPU 的性能更好

作者: sysrq-reisub创建于 2023年10月22日更新于 2026年9月1日
标签performance

系统信息

Asus TUF F15 FX516PM

  • GPU: ASRock AMD Radeon RX 7800 XT 16GB
  • 驱动: Mesa RADV 23.3-oibaf PPA
  • Wine 版本: 8.16
  • DXVK 版本: 2.3
  • eGPU: Razer Core X
  • 分发和内核: Ubuntu 23.04 23.10, Arch Linux, Linux-Next 内核

测试过的 Vulkan 驱动程序

  • AMDVLK
  • Mesa RADV
  • AMDGPU PRO

测试过的解决方案

RADV_PERFTEST=dmashaders RADV_PERFTEST=nosam DXVK_ASYNC=1 (无变化)

概要

众所周知,Linux 上的 eGPU 是一个噩梦,尤其是在新的显卡上,看起来在老的显卡(如 RX 550)上并没有太大的影响。 我还测试了 NVIDIA 显卡(RTX 3060),问题大致相同。 这方面最显著的一点,除了 FPS 非常低和 GPU 使用率低外,就是使用 DXVK 时单核 CPU 使用率飙升到 100%(并非总是使用同一个核)。 然而,我相信 Windows 上的 DXVK 使用相同的设置似乎对性能影响不大。 稍微 OT,vulkan 仅支持的游戏也有问题,它们似乎即使不使用 DXVK 也有性能问题(例如 Baldurs Gate 3 在 VK 上,即使使用 eGPU,甚至在 Linux 上也表现得不错,或者集成的 NVIDIA 显卡)。 因此,我还在 mesa 和内核驱动程序上跟踪这个问题,以确认可能存在一些与实际 PCIe 速度检测相关的问题,至少对于 AMD 显卡。 然而,这并不总是如此,因为某些游戏在 Windows 上表现得很好,例如 DOOM Eternal,它运行得非常好。 我也必须说,让 eGPU 以明显的 3.0 4x PCIe 速度运行,必须添加一个内核参数 options amdgpu pcie_gen_cap=0x40000 强制限制为 1.0 x4 速度似乎没有太大影响。在下面的比较中,比较了在强制 PCIe 1.0 4x 速度和 3.0 4x 速度之间的差异。 https://GitLab.freedesktop.org/mesa/mesa/uploads/a431d19be845fd639f7a5989578e2aa0/immagine.png 使用 OpenCL 基准测试工具,我已经确认,至少在计算工作负载方面,PCIe 带宽是正确的,并根据该内核参数而变化。 回到 Linux,即使在老游戏中,该问题也非常明显,例如 Half-Life 2、Far Cry 5、Killing Floor 2 无论分发、内核、mesa 驱动程序、dxvk 版本等如何,都没有改变。 唯一有帮助的方法是使用 WINED3D 而不是 DXVK 使用 OpenGL。WineD3D Vulkan 后端具有相同的影响。

软件信息

Half Life 2:即使在低设置、低分辨率下,也不会超过 130-140 fps,没有帧限制 Killing Floor 2:在屏幕上繁忙时,即使在低分辨率和低设置下,也只有 35 fps Far Cry 5:即使在低分辨率和低设置下,也只有 40 fps Cyberpunk 2077:内置基准测试显示的 fps 不超过 39-40,无论视频设置如何。 在提高此类游戏的设置时,结果不会改变。CPU 使用率也总体上更高。 …