NVK と Zink は、NVIDIA GPU 用のオープン ドライバーの状況を大幅に改善しました

Collabora は、NVIDIA ビデオ カード用のオープン NVK ドライバーを幅広いユーザーが日常的に使用できるようにし、グラフィックス標準を開発する Khronos コンソーシアムでこのドライバーを認定したことを発表しました。このドライバーは Vulkan 1.3 仕様と完全な互換性があると認められ、CTS (Khronos Conformance Test Suite) のすべてのテストに合格し、認定ドライバーのリストに含まれています。

Turing マイクロアーキテクチャ (GeForce GTX 16xx、RTX 20xx、および Quadro RTX シリーズ)、Ampere (GeForce RTX 30xx および RTX A2000/4000/5000/6000 シリーズ)、および Ada (GeForce RTX 4xxx、RTX 4000 SFF) に基づく NVIDIA GPU の認定が完了しました。 、RTX 4xxx/5000/6000 Ada)。テストは、Linux カーネル 6.5 および 6.8rc1 の環境で実行されました。証明書を取得すると、グラフィックス標準との互換性を正式に宣言し、関連するクロノス商標を使用できるようになります。この変更はすでに Mesa コードベースに受け入れられており、Mesa 24.1 リリースの一部となる予定です。

NVK の改善に加えて、NVIDIA ビデオ カードに対する OpenGL サポートの提供においても大きな進歩が見られました。 Mesa は、新しいシリーズの NVIDIA ビデオ カード (GeForce RTX 4.6xx 以降) を搭載したシステムで OpenGL 20 のサポートを提供するために、Zink ドライバーの使用を可能にする変更を採用しました。これにより、標準の Nouveau OpenGL ドライバー (NVC0) で問題が発生する可能性があります。 Mesa 0 で NVC24.1 の代わりに Zink を有効にするには、環境変数「NOUVEAU_USE_ZINK=1」を設定するだけです。

Mesa に加えられた変更により、Mesa のネイティブ OpenGL ドライバーでサポートされていない GPU のフォールバックとして、Zink を使用して他のドライバーで OpenGL をサポートできる機能も提供されます。たとえば、Qualcomm Adreno 700 GPU の freedreno ドライバーや、Rogue マイクロアーキテクチャに基づく Imagination PowerVR GPU の powervr ドライバーで OpenGL サポートを提供するために、同様のアプローチがすでに使用されています。

Zink は、Vulkan 上に OpenGL 実装を提供します。これにより、Vulkan API のみをサポートするデバイス上でハードウェア アクセラレーションされた OpenGL を取得できるようになります。 Mesa の次のリリースでは、ビルド時に Zink ドライバーがデフォルトで有効になります。 Zink のパフォーマンスはネイティブ OpenGL 実装のパフォーマンスに近いため、個々の OpenGL ドライバーの保守にリソースを無駄にすることなく、Vulkan API の高品質なサポートに重点を置き、Vulkan 上に OpenGL サポートを実装することが可能になります。

古い Nouveau OpenGL ドライバーを削除する予定はまだありませんが、現在の形式では、Zink + NVK の組み合わせが多くのテストで高いパフォーマンスを示しています。開発の現段階では、多くのゲームを実行する場合、Zink と NVK の組み合わせにより、新しい GPU モデルで 60 FPS 以上のパフォーマンスを達成できますが、未解決の問題や最適化されていない領域がまだいくつかあり、時間の経過とともに解決される予定です。

また、Vulkan API への呼び出しの変換を通じて、Direct3D 9、10、および 11 の実装を提供する NVK ドライバー上の DXVK レイヤーの動作を安定させる取り組みについても言及されています。すべての D3D11 ゲームが Mesa の未修正の NVK+DXVK の組み合わせで動作することがまだ保証されているわけではありませんが、基本的な機能は利用可能であり、特定された欠陥は徐々に排除されています。同様に、VKD3D-Proton との NVK 接続は、D3D12 のサポートを提供するために開発されていますが、そのステータスはまだ NVK+DXVK よりも遅れており、不足している機能のいくつかを実装する必要があります。

NVK ドライバーは、Karol Herbst (Red Hat の Nouveau 開発者)、David Airlie (Red Hat の DRM メンテナー)、および Collabora の Jason/Faith Ekstorm (現役の Mesa 開発者) を含むチームによって最初から構築されました。ドライバーを作成する際、開発者は公式ヘッダー ファイルと NVIDIA が公開したオープン カーネル モジュールを使用しました。 NVK コードは、いくつかの場所で Nouveau OpenGL ドライバーの基本コンポーネントを使用していましたが、NVIDIA ヘッダー ファイル内の名前と Nouveau でリバース エンジニアリングされた名前の違いにより、コードを直接借用することは困難であり、ほとんどの場合、多くのことを最初から考え直して実装する必要がありました。

開発は、他のドライバーを作成するときにそのコードを借用できる、Mesa 用の新しいリファレンス Vulkan ドライバーを作成することを目的として行われました。 これを実現するために、NVK ドライバーの開発時に、Vulkan ドライバーの開発における既存の経験をすべて考慮し、コード ベースを最適な形式で維持し、他の Vulkan ドライバーからのコードの転送を最小限に抑えるよう努めました。最適かつ高品質な作業を実現し、他のドライバーのやり方を盲目的にコピーすることはありません。 このドライバーはすでに Mesa に含まれており、Nouveau DRM ドライバー API に対する必要な変更は Linux 6.6 カーネルに含まれています。

出所: オープンネット.ru

コメントを追加します