- 2024 年 6 月 5 日:为 M1 推出符合规范的 Vulkan,新的“Honeykrisp”驱动是苹果硬件在任何操作系统上的第一个符合规范的 Vulkan,实现了完整的 1.3 规范且无“可移植性”豁免,尚未面向终端用户发布,开发者可获取源代码。
- 4 月 2 日:开始着手写 Vulkan 驱动,从无复制粘贴开始,逐步添加 M1 代码并移除 NVIDIA 相关代码,通过内核连接“NVK”和 Asahi Lina 的内核驱动,为后续工作做准备。
- 4 月 3 日:处理 GPU 使用的“描述符”,将其捆绑为“集合”以适应应用的“描述符集布局”,并开始适配 NVK 的描述符集降低。
- 4 月 4 日:实现工作描述符后可编译计算着色器,编程固定功能硬件以调度计算,通过复制 OpenGL 驱动代码实现缓冲区和图像的“复制”,第一个复制测试通过。
- 4 月 5 日:完善昨日代码,所有复制测试通过。
- 4 月 6 日:开始处理图形,将所有“动态状态”收集到单个结构中并转换为硬件控制字,继续从 OpenGL 驱动中获取翻译并与 NVK 融合。
- 4 月 7 日:解释动态状态和静态状态的区别,介绍 Vulkan 中使更多状态动态化的扩展,面对 M1 硬件的限制,决定将所有状态视为动态,添加构建、编译和缓存前导和结尾代码的功能。
- 4 月 8 日:修复遗漏的小部分代码,如翻译边框颜色,测试通过率达到一定水平,可运行 vkQuake 游戏。
- 4 月 9 日:进行大量小修复,达到 99.6%的 1.1 版本通过率,随后宣称 1.3 版本并继续优化,一周年时达到 98.3%的 1.3 版本通过率。
- 4 月 10 日:SuperTuxKart 有了 Vulkan 渲染器。
- 4 月 11 日:Zink 也可正常工作。
- 4 月 12 日:追踪到测试错误并提交报告,几周内得到解决。
- 4 月 16 日:“描述符索引”测试暴露编译器错误,修复后解决该问题。
- 4 月 17 日:一些测试在寄存器分配器中崩溃,原因是特定的无效循环构造,修复该问题。
- 4 月 18 日:实现
EXT_image_drm_format_modifier
扩展以实现“零复制”渲染,通过复制来解决问题。 - 4 月 20 日:提及一个有趣的场景需求。
- 4 月 22 日:检查驱动架构,虽理论上有 CPU 开销但实际性能良好。
- 4 月 24 日:添加 YCbCr 功能,Mohamed Ahmed 为此花费一整个夏天将其添加到 NVK 和 Honeykrisp 中。
- 4 月 25 日:实现 Vulkan 中的查询复制,通过一些技巧在 GPU 上实现与 C 代码类似的查询复制。
- 4 月 26 日:解决边界颜色的难题,实现自定义边界颜色以处理特殊情况,虽有性能开销但通过了测试。
- 4 月 27 日:完成最后一分钟的 bug 修复,所有测试通过,取得成功。未来任务是实现 DXVK 和 vkd3d-proton 所需的功能以运行 Windows 游戏,同时可享受符合规范的 OpenGL 4.6 驱动。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。