出品
开源中国
历时两年,AsahiLinux宣布推出第一个公开的AppleSiliconGPU驱动程序版本。目前尚处在alpha阶段,“但它已经足够好,可以运行流畅的桌面体验和一些游戏”。
根据介绍,此版本为所有当前的AppleM系列系统提供work-in-progressOpenGL2.1和OpenGLES2.0支持;其足以满足GNOME和KDE等桌面环境的硬件加速,以及较老的3D游戏(如Quake3和Neverball)等的运行,可以在4K条件下以每秒60帧的速度运行上述所有的游戏。但值得注意的是,这些驱动程序尚未通过OpenGL(ES)一致性测试,所以可能会存在一些bug。
开发团队表示,他们下一步的计划是支持更多应用。虽然OpenGL(ES)2对某些应用来说已经足够了,但新的应用(尤其是游戏)需要更多的OpenGL功能。OpenGL(ES)3带来了大量的新功能,如multiplerendertargets、multisampling和transformfeedback。关于这些功能的工作正在进行中,但它们都需要大量的额外开发工作,而且都需要在OpenGL(ES)3.0问世之前完成。
此外,Vulkan相关的工作也在计划当中。虽然现在只提供OpenGL,但开发团队在设计时已经考虑到了Vulkan;其为OpenGL所做的大部分工作都将重新用于Vulkan。不过按照估计,开发团队将优先推出OpenGL2驱动而不是Vulkan1.0驱动。原因在于OpenGL使用范围更广,因此优先支持OpenGL更有意义。
AsahiLinux开发团队的工作内容包括有:
用于映射内存和提交内存映射工作的内核驱动程序
一个用户空间驱动程序,用于将OpenGL和Vulkan调用转换为图形内存中的硬件特定数据结构
将GLSL等着色编程语言翻译成硬件指令集的编译器
团队成员间进行了分工合作:由AlyssaRosenzweig编写OpenGL驱动和编译器、AsahiLina编写内核驱动程序并帮助开发OpenGL、DougallJohnson与Alyssa一起进行指令集的逆向工程,以及EllaStanforth研究Vulkan驱动程序,重用内核驱动、编译器和一些与OpenGL驱动共享的代码。
“当然,仅凭我们自己是不可能在两年内构建一个OpenGL驱动的。感谢自由和开源软件的力量,我们站在了FOSS巨头的肩膀上”。
编译器实现了一个“NIR”后端、内核驱动程序使用了Linux内核的“直接渲染管理器(DRM)”子系统来以最小化boilerplate;OpenGL驱动程序在Mesa内部实现了“Gallium3D”API,“通过Mesa和Gallium3D,我们受益于30年的OpenGL驱动程序开发,以及将OpenGL转换为更简单的Gallium3D的通用代码。感谢NIR、Mesa和Gallium3D令人难以置信的工程设计,我们的逆向工程师团队可以专注于剩下的东西:Apple硬件”。
由于驱动程序尚处于开发中,因此仍存在许多已知问题,官方提供了一份如何报告bug的快速指南。用户可定期更新软件包以获得更新和错误修复,更多详情可查看公告。