Vulkan の最大の特徴は、マルチプラットフォーム、マルチデバイスでの開発が可能なことです。これを実現するために、アプリケーションは各物理デバイスの情報をクエリし、その情報に基づいて判断する役割を担っています。
物理デバイスからクエリ可能な項目
-
プロパティ
-
機能
-
拡張機能
-
制限
-
フォーマット
Vulkan には、現在は存在しない新機能が望まれることが多々あります。拡張機能は新しい機能を追加することができます。拡張機能は新しい Vulkan 関数、列挙型、構造体、または機能ビットを定義することができます。これらの拡張項目はすべて Vulkan Headers にデフォルトで含まれていますが、拡張機能が有効になっていない場合、拡張された Vulkan を使用することは未定義の動作となります。
Note
|
詳しくは機能の有効化の章をご覧ください。 |
機能は、一部の実装でサポートされていない機能を表します。機能は、VkDevice
の作成時にクエリし、有効にすることができます。すべての機能のリストに加えて、より新しい Vulkan バージョンや拡張機能の使用により、必須となる機能があります。
一般的な手法としては、拡張機能が pNext
に渡すことのできる新しい構造体を公開することで、クエリ可能な機能を増やすことができます。
制限とは、アプリケーションが注意しなければならない実装依存の最小値、最大値、その他のデバイス特性のことです。すべての制限のリストに加えて、いくつかの制限には Vulkan の実装で保証される最小/最大の必要な値があります。
Vulkan は多くの VkFormat
を提供しています。それらは、さまざまな VkFormatFeatureFlagBits ビットマスクを保持する複数の VkFormatFlags
を持ち、クエリすることができます。
詳しくは フォーマットの章 をご覧ください。
すべての情報を素早く、人間が読める形式で得るために役立つツールがいくつかあります。
vulkaninfo
は、Windows、Linux、および macOS 用のコマンドラインユーティリティで、GPU について上記の利用可能な項目をすべて確認することができます。Vulkan SDK の Vulkaninfo ドキュメントを参照してください。
Sascha Willems 氏が開発した Vulkan Hardware Capability Viewer は、Vulkan をサポートするデバイスのすべての詳細を表示する Android アプリです。