unityでいってみよう!

unityがチョットワカル位の人のブログ

Vulkan validation layersを有効にしてみよう!

概要

Vulkan validation layersは、VulkanのAPI呼び出しを検証し、開発者がアプリケーションをデバッグし、正常に動作させるためのツールです。VulkanのAPIが適切に使用されていることを検証し、間違ったAPIの使い方をしているときに警告やエラーメッセージを提供してくれます。

UnityとVulkan validation layersの連携

UnityでビルドしたアプリケーションがVulkan validation layersの機能を利用できる件についてはUnity Forumsで言及があります。

forum.unity.com

UnityでVulkan validation layersを有効にする具体的な手順

Androidプラットフォームでの例は以下の通りです

  1. 以下のGithubリポジトリからバイナリファイルを取得します。 github.com
  2. プロジェクトのAssets/Plugin/Android以下に1で取得したバイナリを展開します。 展開後は以下の様に表示されている筈です。
  3. Development Buildを有効にした状態でビルドを行い、端末へ転送します。
  4. ビルドしたアプリケーションの引数に"-force-vulkan-layers"を指定して実行します。
  5. Logcatに以下の表示がされていればVulkan validaton layersが有効になっていることを示しています。
Debug Unity [Vulkan init] layer enabled: VK_LAYER_KHRONOS_validation

Androidアプリケーションに引数を指定する

UnityPlayerActivityを拡張してコマンドライン引数を指定する

Unityのマニュアルに方法が記載されています。

docs.unity3d.com

一度設定すれば良いので何度も試す場合はこちらの方が楽かもしれません。

adb shellから指定する

adb shell am start -n "{Package Name}/com.unity3d.player.UnityPlayerActivity" -e unity -force-vulkan-layers

{Package Name}の部分にはPlayer Settings > Identification > Package Nameで表示されている文字列を指定します。 例えば、"XXX.YYY.ZZZ"であれば以下のようになります。

adb shell am start -n "XXX.YYY.ZZZ/com.unity3d.player.UnityPlayerActivity" -e unity -force-vulkan-layers

以上です。