HN 日本語サマリー

← 一覧へ戻る
プログラミング

VulkanがNetBSDで利用可能に

Vulkan is now available on NetBSD (github.com)

114 pointsby segaboy8133 コメント

要約

このプロジェクトは、Vulkanソフトウェアスタック(Mesa / Lavapipe)をNetBSDに移植し、そのプロセスを文書化・自動化することを目指しています。現在、Lavapipe VulkanドライバーはNetBSD 10.1 amd64上でビルド、インストール、登録が可能であり、プロセス全体が自動化され再現可能になっています。将来的には、Vulkanローダーの導入とプリビルドバイナリの提供が予定されています。

全文翻訳

vulkan-netbsd Vulkanソフトウェアスタック(Mesa / Lavapipe)をNetBSDに移植し、そのプロセスを文書化・自動化して再現可能かつ保守可能にすることを目指す取り組みです。ステータス:ベータ — Lavapipe VulkanドライバーはNetBSDでビルド、インストール、登録されます。マイルストーン達成:Mesaは、LLVM 19.1.7に対して、NetBSD 10.1 amd64上でLavapipeソフトウェアVulkanドライバーを構成、コンパイル、リンク、インストール、登録しました。ドライバー(libvulkan_lvp.so、約17MB)は/usr/pkg/libにインストールされ、そのICDマニフェスト(Vulkan API 1.4を広告)は/usr/pkg/share/vulkan/icd.d/にインストールされるため、システム上のVulkanローダーがそれを検出できます。lddはすべての依存関係をクリーンに解決します。環境設定、依存関係のビルド、Mesaのビルド、インストールの全プロセスは、エンドツーエンドで自動化されており、クリーンインストールで再現可能です。プリビルドバイナリが登場します。プリビルドアーティファクトをビルド、フィンガープリント、公開するためのツールは準備されており、ビルドスクリプトは既にソースからビルドする代わりに、一致するプリビルドを取得してインストールする方法を知っています。ビルドマシンがリリースを公開すれば、ドライバーのインストールは数時間のビルドではなくダウンロードになります。それが近い将来の方向性です。これが(まだ)何でないか:Vulkanプログラムを実行するにはローダーが必要です。このプロジェクトはVulkanドライバー(Lavapipe ICD)をビルドしてインストールします。実際にVulkanアプリケーションを実行するには、Vulkanローダー(libvulkan.so.1)も必要であり、これは次に導入するコンポーネントです。したがって、実行時の実行はまだ検証されていません。1つの回避策はまだ有効です。ビルドは、NetBSD上のMesaの%mフォーマット指定子をGCCが拒否するのを避けるために、-Wno-error=formatを適用します。(strerror(errno)を使用する)適切なアップストリーム可能な修正が保留中です。ローダーとリリースパイプラインが連携するにつれて、手順、スクリプト、ドキュメントは変更され続けます。目標NetBSDは現在、Vulkanサポートのない主要なBSDです。このプロジェクトの目的は以下の通りです:Vulkanソフトウェアスタック(CPU上でLLVM経由で実行され、GPUを必要としないMesaのLavapipeドライバー)をNetBSDでビルドすること。プロセス全体(行き詰まりも含め)を文書化し、再現可能にすること。クリーンなマシンが数個のスクリプトでビルド準備状態になるようにセットアップを自動化すること。最終的に必要な修正をアップストリーム(Mesaとpkgsrcへ)にフィードし、プリビルドバイナリまたはpkgsrcパッケージを提供して、NetBSD上のVulkanをソースからビルドするのではなく、単にインストールできるものにすること。スコープと環境対象OS:NetBSD 10.1(amd64)、最小ISOインストール。ホスト:VirtualBox VM。ビルド目標のみ:これはVulkanスタックのコンパイルとリンクを対象としています。VirtualBoxでは実行時のGPUアクセラレーションは利用できません。ソフトウェアドライバー(Lavapipe)が対象です。リポジトリレイアウトvulkan-netbsd/├── docs/│ ├── 01-environment-setup.md ベースシステム + pkgsrc + ビルド依存関係│ ├── 02-source-dependencies.md pkgsrcにない依存関係(ソースからビルド)│ ├── 03-mesa-build.md Mesa(Lavapipe)の構成+コンパイル;ポートノート│ └── 04-prebuilt-artifacts.md 一度ビルド/プリビルドバイナリを再利用└── scripts/├── setup-env.sh 環境設定を自動化├── build-glslang.sh glslangをビルド(Mesaに必要;pkgsrcにはない)├── build-mesa.sh Mesa(Lavapipe)をクローン+構成+コンパイル├── install-mesa.sh ビルドされたドライバー+ICDマニフェストをインストール├── lib-artifacts.sh 共有:フィンガープリント+プリビルド取得ヘルパー└── package-artifacts.sh ビルドされたバイナリをリリースtarボールにパッケージ化はじめにクリーンな最小NetBSD 10.1(amd64)インストール上で、rootとして:cd /root ftp https://raw.githubusercontent.com/segaboy/vulkan-netbsd/main/scripts/setup-env.sh sh setup-env.sh . /root/.profile ftp https://raw.githubusercontent.com/segaboy/vulkan-netbsd/main/scripts/build-glslang.sh sh build-glslang.sh ftp https://raw.githubusercontent.com/segaboy/vulkan-netbsd/main/scripts/build-mesa.sh sh build-mesa.sh --build ftp https://raw.githubusercontent.com/segaboy/vulkan-netbsd/main/scripts/install-mesa.sh sh install-mesa.sh build-mesa.sh --buildはMesaをクローン、構成、コンパイルし、Lavapipe Vulkanドライバー(libvulkan_lvp.so)を生成します。install-mesa.shはその後、そのドライバーとそのICDマニフェストを/usr/pkgにインストールし、登録を確認します。ビルドが中断されたり、マシンがクラッシュしたりした場合でも、同じコマンドを再実行してください。ビルドスクリプトは既存のビルドを検出し、自動的に再開します。これらのスクリプトを組み合わせることで、クリーンな最小インストールから、インストールされ登録されたVulkanソフトウェアドライバーまで到達できます。完全なコメント付きウォークスルーとSSHでの実行に関するノートについては、docs/01-environment-setup.mdを参照してください。貢献/フォローアップこれは個人的な進行中の作業です。変更が頻繁に発生する可能性があります。ドキュメントは、実際に機能したこと(および機能しなかったこと)の実行記録として書かれているため、同じポートを試みる人にとってはフィールドノートとしても機能します。ライセンスこのリポジトリの元の作業(スクリプト、ドキュメント、およびここで作成されたパッチ)は、MITライセンス(LICENSEを参照)の下でリリースされています。このプロジェクトは、そのライセンスの対象とならないサードパーティソフトウェアをビルド、インストール、および(オプションで)再配布しており、それ自身のライセンスを保持しています:Mesa — 主にMITライセンス(一部コンポーネントは他の許容ライセンス下)。glslang — 許容ライセンス(BSDスタイル、Apache 2.0、およびKhronos条件)。LLVM — LLVM例外付きApache 2.0。LLVMはpkgsrc経由で別途インストールされ、このプロジェクトによって再配布されません。scripts/package-artifacts.shによって生成されるプリビルドアーティファクトは、関連するアップストリームライセンステキスト(share/licenses/の下)をバンドルしているため、バイナリ再配布は各プロジェクトの帰属表示を保持します。アーティファクトを公開する場合は、これらのファイルをそのまま保持してください。