1751918816
2025-07-07 19:07:00
ダニエル・アルメイダ
2025年7月7日
昨年は、GPUドライバーを錆びて書くために必要なDRMインフラストラクチャに大きな進歩を遂げました。その大部分は、NOVA(GSPベースのNVIDIA GPUの新しいドライバー)の開発、およびAGX(AppleのMシリーズチップのGPUのドライバーであるNOVAに先行するドライバー)によって燃料を供給されましたが、いくつかのコンポーネントが、舞台裏でプロトタイプされていた当時の非公開ドライバーに対応するために取り組んでいました。私たちが今、非常に早い段階でコミュニティ全体に紹介しているドライバー。
Tyrは、CSFベースのARM Mali GPUの新しいRustベースのDRMドライバーであり、CollaboraがRust-for-Linuxイニシアチブに正式に参加した最初のコンサルティングとなっています。これは、同じハードウェアのためにCで書かれた成熟したドライバーであるPanthorの港であり、Collabora、Arm、およびGoogleの共同の努力です。
この意味で、Tyrは、互換性の理由でPanthorが提供する同じユーザースペースAPIを最終的に実装することを目指しているため、Panvkと呼ばれるVulkanドライバーのドロップイン交換として使用できます。エコシステムで大きな採用を伴う成熟したドライバーであるため、比較的長い間使用されていることを予測しています。 Tyrが完全に拾うのにおそらく数年かかるでしょう。
今後数週間にわたって、TYRの内部の仕組みとそのコンポーネントを詳細に説明する一連のブログ投稿をリリースします。これは、Linux上のGPUドライバーにとってウォークスルーになるので、お楽しみに!とりあえず、TYRの上流の初期バージョンを追加するパッチを提出している理由と、その提出に正確に含まれるものについて説明します。
現在の上流の提出の目的は何ですか?
この質問は、GPUドライバーがどのように機能するかを議論すると、簡単に答えることができます。カーネルモードドライバーを構成するコンポーネントと、それらが他のカーネルとどのように対話するかを明らかにすると、現在利用可能なインフラストラクチャを備えたRust GPUドライバーを単に書くことができないことが明らかになります。たとえば、アームマリアーキテクチャ内のマイクロコントローラーユニット(またはMCU)の中心的な役割について説明し、最初に前提条件のコードを着陸せずに起動できない理由を説明し、さらにコードを上陸させる前に書くことができない他のさまざまなコンポーネントについて説明します。
上記の問題は、下流のブランチでTYRを開発することになりました。そうすることで、プロトタイプをより速くすることができます。これが、ダウンストリームコードでさらに先を行っている理由です。実際、私たちはすでにGPUに少量の仕事を提出することができます。
また、これにも対処しますが、とにかく「動作」の特定の定義のために、すぐにダウンストリームコードで作業ドライバーを達成すると思います。いずれにせよ、Tyrだけでなく他のRust DRMドライバーもサポートするために必要な、周囲の進行中のコードをテストするために、下流のブランチは非常に貴重です。
残念ながら、現在の開発モデルと上流の調整は最近やや困難になっているため、TYRを開発するために使用してきた全体的な戦略の変更が必要でした。
上流のドライバーの小さな部分を繰り返し提出することにより、Novaと一緒に進化したいと考えています rvkms、これは、上流の会話の一部ではなかったという理由だけで、コードを破る可能性のある上流の変更からの回帰を回避するのに役立つはずです。また、このアプローチにより、進行中の抽象化は、理論ではなく、実際のドライバーを使用して実際のハードウェアで実際に正しく機能することを証明することができます。
おそらく最も重要なことは、これらの抽象化の具体的なユーザーとしてTyrを持つことで、コミュニティに取り組み、レビューする説得力のある理由が得られることです。結局のところ、コードに依存する実際のドライバーがある場合、開発をやる気にさせる方がはるかに簡単です。最後に、オープンおよび上流のコミュニティとのコードの開発は、Collabora全体での哲学とも一致しています。
現在の上流の提出物は何ですか?
現在の提出 GPUに電源を入れて、RK3588システムオンチップでデバイスをプローブできます。これにより、GPUのROMのいくつかのセクションを読むことができます。これにより、この情報をユーザースペースに提供することができます。 DRM_IOCTL_PANTHOR_DEV_QUERY 電話。
これは、少なくともMCUが機能するまで、今のところできることです。詳細については、後続の投稿で説明します。
次は何ですか?
これは、GPUドライバー開発にさらに飛び込むシリーズの最初の記事にすぎません。まず、一般的にGPUドライバーの役割について議論します。 VkCube、で利用できます Vulkan-Toolsリポジトリ、マリのCSFアーキテクチャの詳細に取り入れる前に、この背景を構築する必要があるためです。フォローしたい場合は、事前にコードをコンパイルして検討してください。
#新しいRust #DRMドライバーであるTyrの紹介