[Industry News] dmabuf v6 可使 跨显卡传输性能涨超80%
Tofloor
poster avatar
望不穿这暧昧的眼
deepin
10 hours ago
Author

两年前首次提出的 linux-dmabuf v6 协议现已正式落地——它终结了 Linux 桌面毫无必要地将每一帧渲染画面在总线上来回传输的尴尬局面。

KDE开发者泽维尔·胡格尔公布了他在2023年首次提出的修复方案背后的实测数据,效果十分显著。在一台搭载外置Radeon RX 5700 XT显卡坞的Framework Laptop 13上,以5120×1440分辨率、120Hz驱动显示器运行《赛博朋克2077》低画质预设时,帧率从27 FPS提升至50 FPS——提升幅度超过85%,且整机硬件配置未做任何改动。

没人想来的这趟往返行程

根本问题由来已久,一旦摊开来讲,甚至显得有些荒唐。在 Wayland 下,应用程序通过 linux‑dmabuf 协议将图像数据提交给合成器。在第 5 版之前,合成器只能声明使用单一 GPU。因此,当游戏在独立显卡上渲染,而合成器运行在集成显卡上时,图形驱动会拒绝直接共享缓冲区——它会在系统内存中复制一份再传递过去,因为即便交由内核处理,缓冲区最终也还是要被搬进系统内存。

接着情况更糟。如果你的显示屏直连独立显卡——大多数带HDMI接口的游戏本都是如此——合成器会先把那份系统内存中的帧副本导入核显,在核显端完成画面合成,再将最终图像复制回独立显卡进行扫描输出。每一帧都要在系统内存里走一个完整的往返,兜兜转转回到原点。

在笔记本电脑上这简直是种税,到了外接显卡上更是致命——所有数据流量全得挤过一根USB-C线缆。Hugl的设备连运行vkcube(一款绘制旋转立方体的测试应用)都撑不住120Hz,帧率最高只能到55 FPS。

第6版究竟更新了什么

修复思路其实很简单:让合成器上报一份GPU列表,而非单一GPU,并允许应用指定某个缓冲区应导入到哪块GPU。保持帧在原绘制位置,省去拷贝步骤。这样一来,vkcube的帧率直接飙升至显示器满血的120 FPS。

实现这一目标所耗费的时间,远超出了这个创意本身应有的分量。Hugl 特别感谢了 System76 的 Victoria Brekenfeld 在 Mesa 与 Smithay 上的实现工作;而在 KWin 这一侧,则需要让合成器学会追踪每个缓冲区位处哪块 GPU,在帧渲染中途经受住 GPU 热插拔与复位,适配奇特的嵌入式 GPU 布局,并以不慢于 Mesa 内部实现的效率完成跨 GPU 拷贝。他还顺带为 KWin 加入了 Vulkan 支持,纯粹是为了加速这些拷贝——他补充道,这也是为未来的 Vulkan 渲染器打下基础。

协议已合并。KWin 的实现已并入主线,Mesa 的实现预计很快跟进,而 NVIDIA 在驱动中已完成相关实现,但尚未发布。

兴奋之前请先阅读注意事项。

有两处关键点,而且它们至关重要。首先,性能的大幅提升仅在游戏启用直连扫描输出(direct scanout)时才会显现。以Hugl使用的RX 5700 XT为例,由于该显卡缺乏色彩管线支持,这意味着必须关闭HDR、关闭夜灯功能,且不使用任何色彩配置文件。目前,旨在解除这一限制的代码合并请求(MR)已提交,后续第二部分更新也已承诺将跟进。

其次,也是更棘手的一点:这仅对原生运行在 Wayland 上的游戏有效。目前大多数游戏仍通过 X11 运行,而 Hugl 坦言,要在 Xwayland 中切实实现该协议“难度极高”——他甚至不确定是否可行。实际操作中,这意味着要么针对原生游戏采用方案一,要么使用搭载 Wine Wayland 驱动的 Proton 分支来运行 Windows 游戏;他表示这套方案现已足够稳定,连 HDR 效果也能正常呈现。

传统笔记本电脑的性能预期同样需理性看待。Hugl目前尚未对搭载标准集成显卡/独立显卡的机型进行基准测试,据其推测,这类设备的性能提升幅度可能仅在5%至10%之间。外置显卡的性能跃升之所以如此显著,恰恰是因为数据线此前一直是瓶颈所在——而按他的分析,《赛博朋克2077》即使在修复后仍存在带宽限制,这意味着仍有进一步的优化空间。

https://zamundaaa.github.io/wayland/2026/07/31/fixing-multi-gpu.html
https://videocardz.com/newz/linux-multi-gpu-fix-boosts-cyberpunk-2077-performance-by-over-80-on-an-egpu
https://hwbusters.com/news/linux-multi-gpu-performance-gets-its-big-fix-cyberpunk-2077-up-85-on-an-egpu/

Reply Favorite View the author
All Replies

No replies yet