PowerVR:推动开源 Zink 与 OpenGL ES 支持的发展路径

PowerVR:推动开源 Zink 与 OpenGL ES 支持的发展路径

作者:Luigi Santivetti


我很高兴能和大家分享本周实现的一项重要成就:PowerVR 开源 Vulkan 驱动(自 Mesa 26.1 起)现已支持 Zink。借助这一能力,该驱动可以支持更为庞大的应用程序库。

Zink:https://docs.mesa3d.org/drivers/zink.html

Zink 解决了通过 Vulkan 运行 OpenGL 和 OpenGL ES 应用的问题。它是一种转换层,不针对特定 GPU 架构,而是生成 Vulkan API 调用。通过 Zink,原本仅支持 Vulkan 的设备也能够实现完整的桌面级 OpenGL 支持,同时也为移动和嵌入式领域的应用开发者和厂商提供 OpenGL ES 支持。

点击观看演示视频

在业界,转换层已成为一种有价值的解决方案,通过基于更先进、功能更强大且性能更优的图形API(例如Vulkan)构建,从而缓解上一代图形API的淘汰问题。Zink并非唯一的转换层:例如,谷歌就维护着名为ANGLE的自有解决方案,以帮助安卓系统应对WebGL和OpenGL ES的逐步淘汰。

在软件图形行业中,OpenGL 和 OpenGL ES 自 20 世纪 90 年代初以来一直是无可争议的里程碑,也是整整一代 3D 加速应用的基础支柱。其中一些应用至今仍在使用,但可能不会被移植到 Vulkan 平台。

我们希望开源驱动能够为这些基于 OpenGL(ES)的应用提供硬件加速,但由于该驱动仅支持 Vulkan,因此必须具备向后兼容的能力。引入 Zink 支持,是 Imagination 在软件领域做出的最具前瞻性、面向未来的设计决策之一。

截至 2025 年 10 月,我们工程团队已将所有基于 Vulkan 1.2 的工作已合并到上游 Mesa 项目中;

https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36412
https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37512
https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37761

在过去的几个月里,我们仍在不断的进行适配工作,以全面启用上游对 Zink 的支持。这项工作包括:

  • VK_EXT_dynamic_rendering 带来的挑战:它体积庞大、(从代码角度看)侵入性强,且可能导致大量测试出现回归。我们的目标是以一种简洁的方式添加新代码,确保这些代码仅在动态渲染时被调用,从而缩小潜在回归的范围。未来的改进包括移除旧版渲染通道代码。事实上,得益于 Mesa Vulkan 运行时中的现有实现,我们可以通过动态渲染提供相同的功能
  • VK_EXT_image_drm_format_modifier:在这个扩展上的工作真切地证明了开源软件能够受益于社区的贡献。过去几个月里,Imagination 成功将众多代码更新推送到了上游主线中。我们希望在公共领域推动开发进程,而社区给予的反馈也非常积极——最终,这让更多人能够参与到贡献中来。我们要感谢 Icenowy Zheng 在基于PowerVR的平台(如BXM-4-64 GPU)上提供的帮助与协作,主动测试并将KMSRO相关的修改推向上游,并分享了 VK_EXT_image_drm_format_ modifier 的实现。同样,衷心感谢 Erico Nunes 为Weston上游合入了Vulkan渲染器,并率先将其与PowerVR驱动配合使用。
  • 还要感谢Ella Stanforth在 VK_KHR_sampler_ycbcr_conversion 上提供的帮助,Zink间接需要这个扩展,它实际上是 VK_EXT_image_drm_format_modifier 的一个依赖项。这个YCbCr扩展与硬件密切相关,依赖于GPU如何处理全新类型的像素格式及其在内存中的布局。
  • 我们完成的最后一项重要工作,是扩展 Zink,使其能够利用 KMSRO(Kernel Mode Setting Render Only)Mesa 框架。

随着所有环节就绪,Imagination 的开源驱动程序现在能够支持Zink。目前,我们已启动通过 Khronos Vulkan 1.2 和 OpenGL ES 一致性测试套件的工作,在未来几个月内我们会随时向大家更新进展。

借此机会,我要感谢 Mesa 社区对 Zink 框架的设计、开发和维护工作。

这个项目充分展现了开源开发过程中多方协作后带来的成就。我们感激每一位投入时间和精力,通过审阅代码、提供补丁等方式推动PowerVR向前迈进的开发者!


作者:Luigi Santivetti

英文链接:https://blog.imaginationtech.com/powervr-the-path-to-open-source-zink-and-opengl-es-support

声明:本文为原创文章,转载需注明作者、出处及原文链接。

最新文章