M4 Mac Mini用LinuxGPUドライバを1か月で開発
原題: Building a Linux GPU Driver for the M4 Mac Mini in One Month
なぜ重要か
Apple SiliconへのLinux本格対応はコミュニティの悲願であり、GPUドライバの高速開発手法はオープンソースハードウェア支援全体に波及し得る。
エンジニアのCody Ho氏とNiklas氏は、Apple M4 Mac MiniおよびMacBook Neo向けに完全なOpenGL ES 3.0準拠のLinux GPUドライバを約1か月で開発した。通常は数年を要するGPUドライバ開発を、独自のハイパーバイザーを用いたリバースエンジニアリングと、クリーンルーム手法を組み合わせることで大幅に短縮。Minecraftを200fpsで動作させることにも成功している。
Cody Ho氏とNiklas氏のチームは、Apple Silicon搭載のM4 Mac MiniおよびMacBook Neo向けに、OpenGL ES 3.0に完全準拠するLinux GPUドライバを約1か月で完成させた。ChromeとFirefoxがWebGLとコンポジティングを動作させる映像に加え、Minecraftが200fpsで稼働するデモも公開されている。
AppleのGPU「AGX」向けドライバ開発の最大の障壁は、カーネルドライバがハードウェアと直接通信せず、「RTKit」と呼ばれる独自RTOSで動くGPUファームウェアを経由する点だ。Appleはいわば通常のカーネルドライバを二分割し、片方をAGXファームウェアに組み込んだ構造を採っており、両者が共有メモリ上の構造体を介して通信する。この設計が、ファームウェアABIの解読を特に困難にしていた。
チームはHo氏が以前開発したmacOSのハイパーバイザーを活用し、ライブプロービングのみでM4・A18 Pro・ほぼM5のユーザー空間をリバースエンジニアリング。Appleのバイナリには一切アクセスせず、ハードウェアトレースと自作シェーダーだけを用いた。Apple製ブロブはそのまま不透明なオブジェクトとして扱い、友人に別途ドキュメント化を依頼した上でクリーンルーム実装を完成させるという、透明性を担保した手法を徹底した。
成果物として、カスタムIR・シェーダーコンパイラ、コマンドストリームビルダーを含む完全なユーザー空間ドライバと、ファームウェアABI向けのLinuxカーネルドライバを構築。すべての実験ログをリポジトリで公開し、成果物の来歴を第三者が検証できるようにしている。コードはまだエンドユーザー向けではないが、早期リリースを目指しているという。将来的にはVulkan対応も視野に入れている。