レイヤは、Vulkan システムを補強するオプション要素です。レイヤは、アプリケーションからハードウェアに至るまで、既存の Vulkan 関数をインターセプトし、評価し、修正することができます。レイヤのプロパティは、アプリケーションから vkEnumerateInstanceLayerProperties でクエリできます。
レイヤは共有ライブラリとしてパッケージ化されており、ローダによって動的に読み込まれ、ローダとアプリケーションの間に挿入されます。レイヤを使用するために必要なのは、バイナリファイルの場所と、どのレイヤを有効にするかという2点です。使用するレイヤには、アプリケーションが明示的に使用するものと、ローダに指示して暗黙的に使用するものがあります。暗黙的なレイヤと明示的なレイヤの詳細については、ローダとレイヤのインターフェイスを参照してください。
Vulkan SDK には、各プラットフォームでのレイヤの検出と設定方法に特化したレイヤ設定ドキュメントが含まれています。
Windows、Linux、macOS の開発者は、Vulkan Configurator(vkconfig)を使用して、GUI から明示的なレイヤの有効化、暗黙的なレイヤの無効化、およびレイヤ設定の変更を行うことができます。Vulkan Configurator の使用に関する詳細は、Vulkan SDK の Vulkan Configurator ドキュメントを参照してください。
かつてはインスタンスレイヤとデバイスレイヤの両方がありましたが、デバイスレイヤは Vulkan の初期段階で非推奨となっているため、避けてください。
ローダとレイヤが相互に通信することに同意する方法であるローダからレイヤへのインターフェイスに従う限り、誰でもレイヤを作成することができます。
暗黙的にレイヤを読み込む方法は、ローダやプラットフォームによって異なります。
Android P(Android 9 / APIレベル28)では、デバイスがデバッグ可能な状態にあり、getprop ro.debuggable
が1を返した場合、ローダは /data/local/debug/vulkan を検索します。
Android P (Android 9 / API level 28)からは、アプリケーションがデバッグモードでビルドされている場合、ADB を使って暗黙のレイヤをプッシュできるようになりました。
暗黙的なレイヤを使用するには、上記のオプション以外に方法はありません。
Vulkan SDK では、Linux で暗黙のレイヤを使用する方法が説明されています。
Vulkan SDK では、MacOS で暗黙のレイヤを使用する方法が説明されています。
Vulkan SDK では、Windows で暗黙のレイヤを使用する方法が説明されています。