周四,Mesa 24.2 中合并了对基于 CPU 的 Lavapipe 驱动程序的 Vulkan 稀疏绑定支持。
在 David Airlie 所做工作的基础上,Konstantin Seurer 成功完成了对 Lavapipe 的 Vulkan 稀疏绑定支持。对 Lavapipe 的稀疏绑定支持应该能让这个基于 CPU 的驱动程序处理更多的 Vulkan 游戏/应用,但性能并不一定会很好。
大卫-艾尔利(David Airlie)早在 2023 年 5 月就在一篇博文中解释了基于 CPU 的 Vulkan 驱动程序支持稀疏内存所面临的挑战:
“稀疏绑定本质上允许创建一定大小的 Vulkan 缓冲区/映像,然后插入大块内存,以页面大小的多块内存支持它。
这在我们设计的 GPU 应用程序接口中非常有效,但在 CPU 上却很难实现。
目前,lavapipe 使用对齐的 malloc 来分配内存。它分配的对象不带任何支持,而非稀疏绑定会将对象连接到 malloced 内存。
但对于稀疏对象,创建对象时应分配一大块虚拟内存空间,然后稀疏绑定应将分配的设备内存绑定到虚拟内存空间。只是 Linux 没有不使用文件描述符就能做到这一点的接口”。
这个合并请求在过去一个月的审查过程中,成功地将 Lavapipe 的稀疏支持推向了终点。很高兴看到这种基于 CPU、独立于硬件的 Vulkan API 软件实现在复杂功能上也能不断进步。
对 Lavapipe 的稀疏支持将出现在 8 月份发布的 Mesa 24.2 稳定版中。
转自 Vulkan Sparse Binding Support Comes To Lavapipe Software Driver – Phoronix