由...所提交 新实验 Vulkan驱动程序 猿 — 一个 Vulkan ICD 的开源软件实现,几乎完全用以下语言编写: 齐格 并且未使用 Mesa 代码。该项目尚未声称适用于工业用途:作者明确将其描述为“手工构建驱动程序”的教育尝试,并警告不要在严肃项目中使用 Ape。该代码以许可证发布。 麻省理工学院简介.
人们对猿猴的兴趣是在……之后产生的。 在规范中 为 Vulkan 添加了一个单独的供应商 ID 猿 以及驾驶员 ID ApeSoftKhronosGroup/Vulkan-Docs 仓库中相应的拉取请求已合并。 6月6 2026年作者在评论中表示,他正在开发一个业余的 Vulkan 驱动程序,并且即将通过所有 Vulkan 1.0 测试。
事实上,Ape 并不是特定显卡的驱动程序,而是…… Vulkan软件渲染器Lavapipe 的用途与 Mesa Lavapipe 类似:Vulkan 命令由其自身的实现执行,无需访问硬件 GPU 驱动程序。然而,Lavapipe 并非基于 Mesa,而是使用 Zig 编写的独立代码库。
猿猴已经能做到的事
工作原理类似于 Vulkan ICD。
猿猴的设计是 可安装客户端驱动程序 也就是说,它是一个可以通过 ICD 清单文件被标准 Vulkan 加载器识别的驱动程序。构建完成后,作者建议将 Vulkan 加载器指向相应的清单文件。这使得该项目不仅仅是一系列实验,而是 Vulkan 驱动程序的实际实现,尽管只是一个训练版本。Vulkan 加载器专门用于检测和启用系统中的多个 ICD 驱动程序。完全用Zig编写。
Ape 的主要代码库是用 Zig 编写的;该语言在项目的 Forge 主页上列出。 Zig 99,9%Phoronix强调,该项目独立于Mesa,并且使用Zig而非C/C++实现。图形驱动程序通常使用C/C++编写,但Ape证明Vulkan ICD可以使用更现代的系统语言来实现。ApeSoft公司提供了一款软件实现方案。
该项目重点介绍软件实现 软它位于驱动程序代码库内部。它使用自己的 SPIR-V解释器 Ape 拥有自己的渲染器。它不只是简单地接受 Vulkan 调用,而是尝试在自己的 CPU 上运行着色器和渲染。支持使用 Zig build 进行构建。
软件实现方面,README 文件中指定了使用 `zig build soft` 命令的构建方法。之后,您需要在 ICD 清单中配置 Vulkan 加载器。目前来看,这显然是一个面向开发者和爱好者的工具,而不是一个“即装即用”的软件包。Vulkan 1.0 的大部分功能已经实现。
README 文件列出了 Vulkan 1.0 的各项功能状态。已实现的功能包括实例和设备创建、内存分配、缓冲区、图像、命令缓冲区、渲染通道、帧缓冲区、图形管线、计算管线、着色器模块、描述符集、交换链以及基本渲染命令。就已实现的功能而言,该项目已经超越了“hello triangle”实验阶段,但仍需进行验证并完成一些未完成的工作,才能成为一个完全兼容的驱动程序。有绘图和计算命令。
已实现的函数包括 vkCmdDraw、vkCmdDrawIndexed、vkCmdDrawIndirect、vkCmdDrawIndexedIndirect、vkCmdDispatch 和 vkCmdDispatchIndirect。Ape 不仅涵盖了 Vulkan 的核心基础架构,还涵盖了两个关键的 API 场景:图形渲染和计算管线。支持Swapchain和Wayland提现。
实现状态包括 vkCreateSwapchainKHR、vkQueuePresentKHR、vkCreateWaylandSurfaceKHR 以及对 Wayland 呈现支持的检查。交换链和 Wayland Surface 的存在意味着该驱动程序不仅设计用于离线测试,还设计用于在实际窗口环境中显示图像。 Linux.WSI 的一部分,适用于 X11 和 Windows 仍在进行中。
vkCreateXcbSurfaceKHR、vkCreateXlibSurfaceKHR、vkCreateWin32SurfaceKHR 以及相应的呈现支持检查函数均标记为 WIP(开发中)。Wayland 已存在,并且 X11/Windows- 支持功能尚未准备就绪。Vulkan 1.0 的某些功能尚未准备就绪或得到支持。
WIP 状态包括 vkCreatePipelineCache、vkCreateSemaphore、vkGetQueryPoolResults、vkMergePipelineCaches、一些动态状态以及时间戳命令。诸如 vkQueueBindSparse 和 vkGetImageSparseMemoryRequirements 之类的稀疏函数被标记为不支持。Ape 的覆盖范围已接近 Vulkan 1.0,但目前还不能完全替代普通的 Vulkan 驱动程序。新增了渲染和同步方面的改进。
该项目在6月5日至6日期间进行了多项更改,包括新增图元重启、整数纹理采样、mip/lod采样管理以及实现二进制信号量。该项目正积极开发,旨在实现与Vulkan基准测试和实际图形场景的兼容性。该项目并非以提高生产力为目标。
作者明确指出,Ape 的创建目的是为了探索 Vulkan,并非旨在成为一款高性能或可用于生产环境的驱动程序。Ape 应被视为一个研究项目,一个 Vulkan 的学习性实现,以及对 Zig 的一次实验,而非 Mesa RADV、ANV、NVK 或 Lavapipe 的竞争对手。
归根结底,Ape 的有趣之处不在于它明天就能取代 Mesa,而在于它是 Zig 平台上 Vulkan ICD 的独立实现,拥有自己的 SPIR-V 解释器、软件渲染器,并且已经对 Vulkan 1.0 进行了相当程度的覆盖。虽然它对普通用户来说用处不大,但对于驱动程序开发者、运行时作者以及研究 Vulkan 内部机制的人来说,这个项目提供了一个引人入胜且充满活力的测试平台。
来源: linux.org.ru
