これは、Apple AGX G13 および G14 シリーズ GPU 用のかなり包括的なドライバーです。
現在のコントローラは SoC と互換性があります
最近、Apple M1およびM2チップで使用されているApple AGX G13およびG14シリーズGPU向けのdrm-asahiドライバの暫定的な実装が、 Linuxカーネル開発者メーリングリストで提案されたことが発表されました。
このドライバはRustで記述されており、Rustで他のグラフィックドライバを開発する際に使用できる、DRM(Direct Rendering Manager)サブシステムに関する汎用リンクも含まれています。
これまでに公開されたパッチセットは、コア開発者による議論(RFC)のために提案されたものであり、レビューが完了し、特定された不具合が解消された後にコアチームに採用される可能性があります。
これは、DRMサブシステム向けのRust抽象化の最初のバージョンです。抽象化自体、C言語側のいくつかの小さな前提条件の変更、およびdrm-asahi GPUドライバ(抽象化の使用方法の参考として、ただし必ずしも一緒に使用することを意図したものではありません)が含まれています。
これらのパッチは[1]のツリーの最上位に適用されます。[1]は6.3-rc1をベースに、多数のRust抽象化/サポートの妥協点を追加したものです。これらのパッチのほとんどはDRM抽象化自体の前提条件ではなく、ドライバの前提条件です。
12月以降、このドライバはAsahi Linuxディストリビューションのカーネルパッケージに組み込まれ、このプロジェクトのユーザーによってテストされてきました。
このドライバは、Linuxディストリビューションで使用して、M1、M1 Pro、M1 Max、M1 Ultra、およびM2 SoCを搭載したAppleデバイスのグラフィカル環境を管理できます。ドライバの開発においては、CPU側のコードでメモリを操作する際のエラーを最小限に抑えることでセキュリティを強化するだけでなく、ファームウェアとの相互作用から生じる問題に対する部分的な保護も提供することに重点が置かれました。
具体的には、このドライバは、ファームウェアがドライバとのやり取りに使用する複雑なポインタ文字列を持つ、安全でない共有メモリ構造に対する特定のバインディングを提供します。提案されているドライバは、ユーザー空間のOpenGLをサポートし、OpenGL ES 2互換性テストに合格しており、OpenGL ES 3.0のサポート準備がほぼ整っているAsahi Mesaドライバと組み合わせて使用されます。
同時に、カーネルレベルのドライバは、将来的なVulkan APIのサポートを念頭に置いて開発されており、ユーザー空間とやり取りするためのプログラミングインターフェースは、新しいIntel Xeドライバが提供するUAPIを念頭に置いて設計されています。
既知の問題点としては、以下のようなものがあります。
- 既存の Rust 統合は現在、抽象化をモジュールとして構築することをサポートしていないため、Rust 抽象化は組み込み DRM コンポーネントでのみ使用できます。
- DRM はコントローラー オブジェクトの「サブクラス化」パターンに大きく依存しており、これは Rust には適していません。
- 現在、コントローラーに必要なものだけが実装されています (さらに、少量の
より優れた API 整合性が理にかなっている明らかな追加機能)。 - drm::mm は、代わりに抽象化に組み込まれたミューテックスを必要とすることになります
通常のRustの可変性ルールを使用してユーザーに委任します。
これは、ノードがいつでも削除される可能性があり、それらの操作が行われるためです。
同期する必要があります。 - Mesa 側では現在、Gallium ドライバーを持っていますが、これはほとんど既にアップストリームにあり (UAPI ビットはほとんど欠落しています)、
dEQP GLES2/EGL テストに合格し、GLES3.0 のほとんどが合格
進行中の作業の上流ブランチ。 これはコミュニティ ドライバーのリバース エンジニアリングであるため、この面でまだやるべきことがたくさんあると言われています。
最後に、これについてさらに詳しく知りたい場合は、以下のリンクから詳細をご覧いただけます。