1 ポイント 投稿者 GN⁺ 2024-06-06 | 1件のコメント | WhatsAppで共有

Vulkan 1.3、M1で1か月で実装

Honeykrispドライバーの紹介

  • Honeykrispドライバー: Appleハードウェアで初めて完全なVulkan 1.3仕様を実装したドライバー。
  • 開発状況: まだ一般ユーザー向けにはリリースされておらず、機能追加と性能改善を進めている。ソースコードは開発者に公開されている。

開発過程

4月2日

  • 開始: NVKドライバーをベースに、M1向けVulkanドライバーの開発を開始。

4月3日

  • ディスクリプターセット: NVIDIAと異なるM1のディスクリプターセットをNVKに合わせて調整。

4月4日

  • コンピュートシェーダー: コンピュートシェーダーをコンパイルし、Vulkanコマンドでバッファーとイメージをコピーする機能を実装。

4月6日

  • グラフィックス状態処理: グラフィックス状態を処理するコードを作成し、OpenGLドライバーからコードを取り込み、NVKと結合。

4月7日

  • 動的状態: すべての状態を動的に処理する戦略を採用し、プロローグとエピローグをコンパイルしてキャッシュするコードを追加。

4月8日

  • テスト結果: 初期テストで149,770件合格、7,741件失敗、2,396件クラッシュ。

4月9日

  • Vulkan 1.3: Vulkan 1.1で99.6%の通過率を達成後、Vulkan 1.3へ移行して98.3%の通過率を達成。

4月10日〜4月12日

  • 追加テスト: SuperTuxKartとZinkでVulkanレンダラーの動作を確認し、テストのバグを修正。

4月16日〜4月17日

  • コンパイラーバグ修正: ディスクリプターインデクシングテストで見つかったコンパイラーバグを修正し、無限ループ問題を解決。

4月18日

  • ゼロコピー描画: 効率的なサーフェスレイアウトのためにEXT_image_drm_format_modifier拡張を実装。

4月22日

  • ドライバーアーキテクチャの見直し: ドライバーアーキテクチャを見直した後に最適化を進め、vkoverheadテストで1秒あたり1億回のドローコールを達成。

4月24日〜4月25日

  • YCbCr対応: YCbCr機能を追加し、Mohamed AhmedのNVKコードを活用。
  • クエリコピー: GPUクエリのコピー機能を実装。

4月26日

  • ボーダーカラー: Direct3D互換性のためにEXT_custom_border_color拡張を実装し、ボーダーカラーの問題を解決。

4月27日

  • 最終テスト: すべてのテストに合格、686,930件合格、失敗0件。

今後の計画

  • DXVKとvkd3d-proton対応: Direct3Dレイヤリングのための追加機能を実装予定。
  • Windowsゲーム実行: Wineとオープンソースのx86エミュレーターを使って、Asahi Linux上でWindowsゲームを実行する計画。

GN⁺の見解

  • 技術的挑戦: M1でVulkan 1.3を実装するのは、Appleハードウェアの独特なアーキテクチャゆえに非常に難しい技術的課題。
  • ゲーム開発者に有益: Vulkanドライバーが完成すれば、ゲーム開発者はより多くのプラットフォームでゲームを動かせるようになり、有益。
  • 性能最適化が必要: 初期段階では性能最適化が必要になる可能性がある。特に動的状態処理によるCPUオーバーヘッドの問題を解決する必要がある。
  • コミュニティ貢献: オープンソースプロジェクトとして、コミュニティの貢献が重要。さまざまなハードウェアやソフトウェア環境でのテストとフィードバックが必要。
  • 競合製品: DXVKやvkd3d-proton以外にもWineのような互換レイヤーがある。各製品の長所と短所を比較して選ぶことが重要。

1件のコメント

 
GN⁺ 2024-06-06
Hacker Newsの意見
  • 共有・反復可能・オープンなコンポーネントの価値を証明する印象的な仕事。Proton の移植にどれくらいかかるのか気になる。GPU アーキテクチャの違いと ARM 変換のオーバーヘッドのため、多くのゲームはまともに動かない可能性がある。それでも、SoC がより一般的になるにつれて、より多くのゲームがユニファイドメモリと ARM をターゲットにするようになるだろうという楽観的な見方もある。

  • Vulkan を Linux に追加し、DirectX を Asahi Linux 上で変換する取り組みが、Apple の AAA ゲームを Apple Silicon に導入したいという夢に影響するのか気になる。Apple は AAA 開発者がゲームを Metal に移植し、iPhone、iPad、Mac、Vision Pro で動かすことを望んでいる。Mac ゲーマーが AAA PC タイトルを遊ぶために Asahi Linux をインストールする可能性もある。

  • Vulkan 1.3に詳しくなくても、低レベルのグラフィックス API に興味があるなら見る価値がある。最初の障壁を越えると、作業は楽しくなる。すべての動的ステートと事前設定不要のレンダーパスによって、作業はずっと簡単になる。10年以内の GPU を持つあらゆるデスクトッププラットフォームで利用できる。ただし、"合理的なデフォルト"のフレームワークはないが、多くの言語向けに便利なヘルパーライブラリがたくさんある。

  • プログラミング能力が彼女の半分でもあればと思う。本当にすごい。

  • Alyssa の驚異的なコーディングの魔法。どうやっているのか分からないが、彼女が意義ある戦いを続けているのが嬉しい。

  • コンパイラバグは絶対に起きない。だが実際にはコンパイラバグだった。キャリアの中で一度も経験したことはないが、こうした抽象化レベルではそれほど珍しくないのかもしれない。

  • ES 3.2 サポートのアップデートがちょうど来たところで、M1 は Asahi のために作られたように感じる。macOS はインストール時に一度起動しただけだ。ブラウザが「ゼロコピー レンダリング」をサポートしているのか気になる。WebGL2 の transform feedback が readback を引き起こす問題に悩まされた記憶がある。

  • 奇妙なシェーダー構造がある。条件は常に偽だが、コンパイラはそれを知らない。この構造の目的が何なのか気になる。

  • VM 内で利用できるか。macOS で開発し、Ubuntu をテストするために VMware イメージを使っている。3D グラフィックスアプリを開発しているが、VMware のパススルーがどれほど良いのか分からない。Apple Silicon GPU が VM で仮想化されるのか、このディストリビューションを動かしてより良いグラフィックス性能を得られるのか気になる。

  • MoltenVK との関係を説明してほしい。この作業で MoltenVK が不要になるのか、ネイティブドライバなのかが気になる。