自从两年前苹果公司宣布推出 M1 作为其内部使用的 Apple Silicon,并配备强大的 AArch64 处理器和定制设计的图形处理器以来;外界就一直在猜测 Apple M1(以及现在的 M2)的图形是采用了一个全新的设计,还是沿用了苹果在早期 SoC 中使用的 Imagination PowerVR 图形设计。而一直致力于在 Linux 下启用 Apple M1/M2 的 Asahi Linux 团队就曾在研究过程中,发现了两者设计的一些相似之处。
近日,一些最新的 Mesa 驱动活动则表明,PowerVR 图形硬件和 Apple AGX 图形之间存在更多的共同点。一直领导 Apple 开源 Mesa Gallium3D/OpenGL 驱动程序支持工作的 Alyssa Rosenzweig 在新提交的一个名为“asahi: Rewrite state emit code using information from the Mesa PowerVR driver”的合并请求中表示:
查看 PowerVR 的 PPP 定义在 Mesa (src/imagination/csbgen/) 中的树状结构时,我们发现 AGX 的“tagged”数据结构实际上是状态项序列,其前缀是一个可指定后续 state 的 header。我们不需要对 Apple 驱动程序选择捆绑状态的序列进行硬编码,而是需要 XML 足够灵活,以编码或解码任何有效的状态组合。这意味着需要重新设计 XML。在这样做的时候,我们发现 RGX 和 AGX 之间有许多相同的字段,并在此过程中修复了 names(例如,W Clamp floating point)。
科技网站 Phoronix 指出,今年早些时候 Imagination 曾发布了一个开源的 PowerVR Vulkan 驱动,并将其并入主线 Mesa;且 Imagination 也一直在为 PowerVR Rogue 开发一个开源的 DRM 内核图形驱动。此次正是通过查看 PowerVR Mesa 的代码,才发现了其与苹果图形硬件的最新相似之处。不过最终范围还是有限,并且也尚未清楚苹果 M1/M2 图形究竟是在多大程度上衍生自 PowerVR IP。