初めてのVulkanプログラミング step2 layerの導入


目次に戻る

ソースコードは以下の場所に置いておきます。各自のバージョンに合わせたプロパティ設定をしてから自由にご利用ください。
github: VulknAppAdocal2018

vulaknは以下の要素で構成されている階層型アーキテクチャーです。
・バルカンアプリケーション
・バルカンローダ
・バルカンレイヤー
・クライアントデバイス(ICD)

ローダー

アプリケーションは、ローダの端にあり、ローダーと直接接続されています。アプリケーションの反対側には、vulkan対応ハードウェアを制御するICDがあります。ローダーは、特別な機能を提供する多数のオプションlayerを挿入することができます。ローダは、さまざまなレイヤーを操作したり複数のGPUとそのドライバーを操作します。vulkanの関数はすべて、ローダー、レイヤー、ICDなど様々なモジュールから呼び出します。vulkanオブジェクトモデルを使用すると、ローダは、ICDが呼び出される前にレイヤーがvulkan関数を処理することができます。

layer

レイヤーは、vulkanシステムを拡張するオプションコンポーネントです。
アプリケーションからハードウェアにいたるすべてにおいて、vulkanの機能を評価などを行う拡張機能を設定することができます。レイヤーは、CreateInstaneに実装されます。またこれらの複数のレイヤーを連鎖させて、1つの大きなレイヤーのようにカスケードすることができます。

LunarG Vukan SDK には、以下のレイヤーが含まれています。

レイヤー名 機能
VK_LAYER_LUNARG_api_dump apiの呼び出しと、そのパラメータと値を表示
VK_LAYER_LUNARG_monitor アプリケーションのタイトルバー(一番上の帯)にfpsを表示
VK_LAYER_LUNARG_screenshot 指定のフレームワークを画像に出力する
VK_LAYER_GOOGLE_threading スレッドAPIの妥当性を評価する

このほかにも多くのlayerが存在します。

このレイヤー機能を利用するには、環境設定が必要です。
しかし現在皆さんのPCには、きっとVK_LAYER_Nvidiaまたは、VK_LAYER_Intelしか入っていないと思われます.

Vulkan Loaderは、次のレジストリキーを検索してレイヤーを見つけます。

HKEY_LOCAL_MACHINE/SOFTWARE/khronos/ExplicitLayers
HKEY_LOCAL_MACHINE/SOFTWARE/Khronos/Vulkan/ImplicitLayers

Vulkan Loderは値の名前で指定されたjsonテキストファイルを開き、レイヤー共有ライブラリーを検索します

windowsでレイヤーをアクティブにする

環境変数を新規作成しVk_instance_layerにLayer名を記入し、また新しくvk_layer_pathを設定します。

連絡先

tweeter: tositada_nakada
mail: [email protected]

寄付

paypal: tositada_nakada
Amazon: 欲しいものリスト