Vulkan のエコシステムは、多くの開発ツールで構成されています。このページは完全なリストではなく、開発者にとっての出発点として提供されています。開発エコシステムは、1つのページに収められないほど大きいので、引き続き独自の調査を行い、他のツールを検索してください。
Khronos は、Vulkan Samples をホストしています。Vulkan Samples は、API の使用方法を示すコードとチュートリアルのコレクションで、パフォーマンスのベストプラクティスの実装について説明しています。
LunarG は、Vulkan エコシステムのコンポーネントを開発・維持するための民間スポンサーで、現在は Vulkan Loader と Vulkan Validation Layers の Khronos Group リポジトリのキュレーターを務めています。また、Vulkan SDK の提供や、Vulkan Configurator や GFXReconstruct などの主要ツールの開発も行っています。
レイヤは、Vulkan システムを補強するオプション要素です。レイヤは、アプリケーションからハードウェアに至るまで、既存の Vulkan 関数をインターセプト、評価、修正することができます。レイヤはライブラリとして実装されており、Vulkan Configurator を使って有効にしたり設定を変えたりできます。
-
VK_LAYER_KHRONOS_validation
は、Khronos Validation Layer のことです。 これは、Vulkan アプリケーションをデバッグする際の最初の防衛レイヤです。そのため、このリストの一番上に記載しました。詳細は検証の概要の章をお読みください。 検証レイヤには複数の機能が含まれています。-
同期の検証:メモリの同じ領域を読み書きするアクション(Draw、Copy、Dispatch、Blit)間の同期操作の欠落や不備によるリソースアクセスの衝突を特定します。
-
GPU 補助検証:シェーダコードにさまざまな計測のためのコードを挿入し、シェーダ実行時に発生するエラー状態を実行時チェックします。
-
シェーダ printf:興味のある値をデバッグコールバックや標準出力に「プリント」して、シェーダコードをデバッグします。
-
ベストプラクティス警告:潜在的なパフォーマンスの問題、疑わしい使用パターン、よくある間違いなどをハイライトします。
-
Khronos レイヤの他にも、Vulkan SDK にはプラットフォームに依存しない便利なレイヤが含まれています。
-
VK_LAYER_LUNARG_api_dump
は、Vulkan API コールをログに記録するレイヤです。 API ダンプレイヤは、API コール、パラメータ、値を特定の出力ストリームにプリントします。 -
VK_LAYER_LUNARG_gfxreconstruct
は、Vulkan で作成されたフレームをキャプチャするためのレイヤです。 このレイヤは、Vulkan の API コールをキャプチャしてリプレイするソフトウェアである GFXReconstruct の一部です。Android のフル対応も https://github.com/LunarG/gfxreconstruct に含まれています。 -
VK_LAYER_LUNARG_device_simulation
は、Vulkan アプリケーションの移植性をテストするためのレイヤです。 デバイスシミュレーションレイヤは、性能の低い Vulkan デバイス上で Vulkan アプリケーションが動作するかどうかをテストするために使用できます。 -
VK_LAYER_LUNARG_screenshot
は、スクリーンショットのレイヤです。 Vulkan アプリケーションのレンダリングイメージを表示可能なイメージにキャプチャします。 -
VK_LAYER_LUNARG_monitor
は、フレームレートモニターレイヤです。 Vulkan アプリケーションの FPS をウィンドウのタイトルバーに表示して、パフォーマンスのヒントにします。
Vulkan Extension Layer
は、 どこでも利用できるわけではない拡張機能を実装するレイヤーの集まりである。ドライバが拡張機能を提供する場合、レイヤーはオフになります。
他にも開発に役立つレイヤが公開されています。
-
VK_LAYER_IMG_powervr_perf_doc
は、PowerVR PerfDoc レイヤです。 Imagination Technologies PowerVR デバイス上の Vulkan アプリケーションのベストプラクティスをチェックします。 -
VK_LAYER_adreno
は、Vulkan Adreno レイヤです。 Qualcomm Adreno デバイス上の Vulkan アプリケーションのベストプラクティスをチェックします。
GPU で動作しているプログラムのデバッグは非常に困難ですが、幸いにも助けとなるツールが存在します。
GPU に関連することであれば、可能な限りプロファイリングするのが最善です。ここでは、開発に役立つプロファイラを紹介します。
-
AMD Radeon GPU Profiler - AMD Radeon GPU 用の低レベル性能解析ツール。
-
Arm Streamline Performance Analyzer - Arm Mobile Studio を使用して、さまざまなデバイス向けのモバイルゲームやアプリケーションのパフォーマンスを視覚化します。
-
Intel® GPA - Vulkan アプリのマルチフレームストリームのキャプチャと解析をサポートする Intel の Graphics Performance Analyzers。
-
OCAT - Open Capture and Analytics Tool(OCAT)は、D3D11、D3D12、Vulkan の FPS オーバーレイとパフォーマンス測定を行います。
-
Qualcomm Snapdragon Profiler - Adreno GPU を対象としたプロファイリングツール。
-
VKtracer - クロスベンダ、クロスプラットフォームのプロファイラ。