Skip to content

Latest commit

 

History

History
52 lines (30 loc) · 4.74 KB

loader.adoc

File metadata and controls

52 lines (30 loc) · 4.74 KB

ローダ

ローダは、アプリケーションを Vulkan のレイヤや Vulkan のインストール可能なクライアントドライバ(ICD - installable client drivers)にマッピングする役割を担います。

loader_overview.png

ローダインターフェイスに沿っていれば、誰でも独自の Vulkan Loader を作ることができます。リファレンスローダをビルドすることもできますし、特定のプラットフォーム用の Vulkan SDK からビルドされたバージョンを取得することもできます。

ローダへのリンク

Vulkan ヘッダは、Vulkan 関数のプロトタイプを提供するだけです。Vulkan アプリケーションをビルドする際には、ローダにリンクしなければ、Vulkan 関数への未定義の参照に関するエラーが発生します。ローダをリンクするには、直接リンク間接リンクの2つの方法がありますが、これを「静的リンクと動的リンク」と混同してはいけません。

  • コンパイル時の直接リンク

    • このためには、ビルドシステムが見つけることのできる、ビルドされた Vulkan Loader(静的または動的ライブラリ)が必要です。

    • ビルドシステム(Visual Studio、CMakeなど)には、ライブラリへのリンク方法に関するドキュメントがあります。オンラインで "(InsertBuildSystem) link to external library" と検索してみてください。

  • 実行時の間接リンク

    • 動的シンボルルックアップ( dlsymdlopen などのシステムコールを用いる)を使用することで、アプリケーションは独自のディスパッチテーブルを初期化することができます。これにより、ローダが見つからない場合はアプリケーションが正常に失敗できます。また、アプリケーションが Vulkan 関数を呼び出すための最速のメカニズムを提供します。

    • Volkは、このプロセスを簡素化するためのメタローダのオープンソース実装です。

プラットフォームごとのバリエーション

各プラットフォームは、Vulkan Loader をどのように実行するかについて、独自のルールを設定できます。

Android

Vulkan に対応している Android デバイスでは、OS にすでに Vulkan Loader が組み込まれています。

Android NDK には、間接リンクのための vulkan_wrapper.c/h ファイルが用意されています。これが必要なのは、ベンダーや OEM デバイスによって Vulkan Loader が異なる場合があるからです。

Linux

Vulkan SDK は、Linux 用にビルド済みローダを提供しています。

Vulkan SDK の Getting Started ページでは、Linux でのローダの見つけ方を説明しています。

MacOS

Vulkan SDK はMacOS 用にビルド済みローダを提供しています。

Vulkan SDK の Getting Started ページでは、MacOS でのローダの見つけ方を説明しています。

Windows

Vulkan SDK はWindows 用にビルド済みローダを提供しています。

Vulkan SDK の Getting Started ページでは、Windows でのローダの見つけ方を説明しています。