Hacker News 中文摘要

RSS订阅

剖析苹果M1 GPU,终章 -- Dissecting the Apple M1 GPU, the end

文章摘要

2020年苹果发布M1芯片,作者参与逆向工程并移植Linux,成功在M1和M2 Mac上运行Linux,支持无线、音频和图形加速。作者从2020年12月开始研究,逐步实现绘制三角形、开发着色器编译器,并最终完成OpenGL驱动。

文章总结

标题:解析苹果M1 GPU的终章

2020年,苹果发布了搭载定制GPU的M1芯片。我们开始着手逆向工程硬件并移植Linux系统。如今,你可以在多款M1和M2 Mac上运行Linux,几乎所有硬件都能正常工作,包括无线网络、音频和完整的图形加速。

故事始于2020年12月,当时Hector Martin启动了Asahi Linux项目。我当时在Collabora工作,负责Panfrost项目,这是一个为Arm Mali GPU开发的开源Mesa3D驱动程序。Hector公开征求上游开源维护者的指导,我决定参与其中。原本只是想提供一些快速建议,但最终我给自己买了一份圣诞礼物,并开始投入工作。在大学的课程和Collabora的工作之间,我研究了M1的着色器指令集。

几周后,我成功绘制了一个三角形。在3D图形领域,一旦你能绘制三角形,你就能做任何事情。

不久后,我开始着手开发一个着色器编译器。在学期期末考试结束后,我请了几天假,利用新编译器开发了一个能够旋转齿轮的OpenGL驱动程序。

接下来的一年里,我继续逆向工程并改进驱动程序,直到它能够在macOS上运行3D游戏。

与此同时,Asahi Lina为苹果GPU编写了一个内核驱动程序。我的用户空间OpenGL驱动程序在macOS上运行,而她的内核驱动程序成为了开源图形堆栈中缺失的一环。2022年12月,我们在Asahi Linux中发布了图形加速功能。

2023年1月,我在多伦多大学开始了计算机科学专业的最后一个学期。多年来,我一直在课程、兼职工作和驱动程序开发之间周旋。我和同学们一样,面临着一个问题:毕业后我要做什么?

也许是继续Panfrost项目?我早在2017年就开始逆向工程Mali Midgard GPU,那时我还在高中。这让我在2019年毕业后获得了Collabora的实习机会,并在大学四年期间转为正式工作。在此期间,Panfrost从一个基于黑箱逆向工程的业余项目,发展成为一个由Arm支持和硬件文档支持的团队开发的专业驱动程序。我完成了自己的目标,项目也超出了我的预期。是时候继续前进了。

接下来我想做什么?

  • 完成M1的驱动程序开发,发布一个优秀的驱动程序。
  • 为M1提供完全符合标准的OpenGL驱动程序。苹果的驱动程序并不符合标准,但我们应该努力达到行业标准。
  • 在苹果平台上提供完全符合标准的Vulkan支持,打破Vulkan不适合苹果硬件的迷思。
  • 将Proton游戏带到Asahi Linux。得益于Valve为Steam Deck所做的工作,Windows游戏在Linux上的运行效果甚至比在Windows上更好。为什么不在M1上享受这些好处呢?

Panfrost是我的挑战,直到我们“胜利”。我的下一个挑战?在M1上运行Linux游戏。

完成课程后,我开始全职投入Linux游戏开发。一个月内,我们在Asahi Linux上发布了OpenGL 3.1支持。几周后,我们通过了OpenGL ES 3.1的官方符合性测试。这让我们达到了与Panfrost相同的功能水平。我想更进一步。

OpenGL (ES) 3.2需要几何着色器,这是一个不被Arm或苹果硬件支持的遗留功能。专有的OpenGL驱动程序通过计算模拟几何着色器,但没有开源的前例可借鉴。尽管多个Mesa驱动程序需要几何/曲面细分模拟,但没有人完成这项工作。

得益于Mesa中成熟的通用代码,我在OpenGL上的早期进展很快。是时候回馈社区了。在接下来的一年里,我实现了几何/曲面细分着色器模拟。2024年1月,我通过了完整的OpenGL 4.6规范的符合性测试,完成了OpenGL的开发。

Vulkan的开发也不难。我花几个月时间打磨了OpenGL驱动程序,但一旦我开始编写Vulkan驱动程序,几周内就通过了1.3的符合性测试。

剩下的工作是将几何/曲面细分模拟与我的新Vulkan驱动程序连接起来,因为这些功能是Direct3D所必需的。最终,我们实现了Proton游戏的支持。

与此同时,Karol Herbst在M1上通过了OpenCL 3.0的符合性测试,他在我的编译器基础上运行了他的“rusticl”前端。

当Vulkan 1.4规范发布时,我们已经准备好,并在同一天发布了符合标准的实现。

之后,我实现了稀疏纹理支持,通过Proton解锁了Direct3D 12。

现在呢?

  • 发布一个优秀的驱动程序?完成
  • 符合标准的OpenGL 4.6、OpenGL ES 3.2和OpenCL 3.0?完成
  • 符合标准的Vulkan 1.4?完成
  • Proton游戏支持?完成

这就是全部。

我们取得的成功超出了我的预期。我追逐的挑战,我已经一一攻克。驱动程序已经完全集成到Mesa中。性能也不错。随着Vulkan在苹果平台上的迷思被打破,符合标准的Vulkan现在通过LunarG的KosmicKrisp项目进入macOS,该项目基于我的工作。

心满意足,我现在将离开苹果生态系统。Asahi Linux的朋友们将继续前行。至于我?

迎接下一个挑战!

评论总结

评论主要围绕一位年轻工程师在Asahi Linux项目中的成就及其未来的职业发展展开,观点多样且认可度较高。

  1. 对成就的赞扬

    • 许多评论者对其在Asahi Linux项目中的贡献表示高度赞赏,认为她在短时间内完成了艰巨的任务。
      • "What an end to an era. It's crazy to think she started this journey at 18 and now finished 5 years later."(评论1)
      • "She’s probably achieved more at 23 than I have after over a decade in the industry."(评论8)
  2. 对其未来发展的期待

    • 评论者对其未来的职业发展充满好奇,尤其是她可能加入Intel Xe-HPG团队的猜测。
      • "Kinda curious what her 'Onto the next challenge!' link means. Is she working for Intel Xe-HPG next?"(评论1)
      • "Lucky you, Intel."(评论10)
  3. 对Asahi Linux项目未来的担忧

    • 一些评论者对其离开Asahi Linux表示遗憾,并担心项目的未来发展,尤其是对新硬件的支持。
      • "Honestly kind of heartbreaking to see her leave asahi Linux."(评论12)
      • "With major contributors leaving the project I'm kind of worried for the future of Asahi (on newer Apple hardware)."(评论9)
  4. 对其职业选择的看法

    • 部分评论者认为她离开Asahi Linux是正确的选择,认为她应该专注于更具创新性的项目,而非逆向工程。
      • "Im glad she stepped away from Asahi linux. Talented people like her shouldn't be trying to reverse engineer software/hardware from shitty anti-consumer company."(评论5)

总结:评论者普遍认可她的技术成就,并对她的未来发展充满期待,同时也对Asahi Linux项目的未来表示担忧。