Skip to content

Latest commit

 

History

History
83 lines (55 loc) · 8.47 KB

development_tools.adoc

File metadata and controls

83 lines (55 loc) · 8.47 KB

開発ツール

Vulkan のエコシステムは、多くの開発ツールで構成されています。このページは完全なリストではなく、開発者にとっての出発点として提供されています。開発エコシステムは、1つのページに収められないほど大きいので、引き続き独自の調査を行い、他のツールを検索してください。

Khronos は、Vulkan Samples をホストしています。Vulkan Samples は、API の使用方法を示すコードとチュートリアルのコレクションで、パフォーマンスのベストプラクティスの実装について説明しています。

LunarG は、Vulkan エコシステムのコンポーネントを開発・維持するための民間スポンサーで、現在は Vulkan LoaderVulkan Validation Layers の Khronos Group リポジトリのキュレーターを務めています。また、Vulkan SDK の提供や、Vulkan ConfiguratorGFXReconstruct などの主要ツールの開発も行っています。

Vulkan Layers

レイヤは、Vulkan システムを補強するオプション要素です。レイヤは、アプリケーションからハードウェアに至るまで、既存の Vulkan 関数をインターセプト、評価、修正することができます。レイヤはライブラリとして実装されており、Vulkan Configurator を使って有効にしたり設定を変えたりできます。

Khronos レイヤ

  • VK_LAYER_KHRONOS_validation は、Khronos Validation Layer のことです。 これは、Vulkan アプリケーションをデバッグする際の最初の防衛レイヤです。そのため、このリストの一番上に記載しました。詳細は検証の概要の章をお読みください。 検証レイヤには複数の機能が含まれています。

    • 同期の検証:メモリの同じ領域を読み書きするアクション(Draw、Copy、Dispatch、Blit)間の同期操作の欠落や不備によるリソースアクセスの衝突を特定します。

    • GPU 補助検証:シェーダコードにさまざまな計測のためのコードを挿入し、シェーダ実行時に発生するエラー状態を実行時チェックします。

    • シェーダ printf:興味のある値をデバッグコールバックや標準出力に「プリント」して、シェーダコードをデバッグします。

    • ベストプラクティス警告:潜在的なパフォーマンスの問題、疑わしい使用パターン、よくある間違いなどをハイライトします。

Vulkan SDK レイヤ

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 拡張機能のレイヤ

Vulkan Extension Layer は、 どこでも利用できるわけではない拡張機能を実装するレイヤーの集まりである。ドライバが拡張機能を提供する場合、レイヤーはオフになります。

Vulkan サードパーティレイヤ

他にも開発に役立つレイヤが公開されています。

  • 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 オーバーレイとパフォーマンス測定を行います。

  • PVRTune

  • Qualcomm Snapdragon Profiler - Adreno GPU を対象としたプロファイリングツール。

  • VKtracer - クロスベンダ、クロスプラットフォームのプロファイラ。