Vulkan の高性能グラフィックスとコンピューティング API は多くのベンダーによってサポートされていますが、Microsoft と Apple はこの Khronos Group 標準をサポートしていない 2 つの注目すべき組織です。 Microsoft 側としては、明らかに社内の Direct3D を好みます。ただし、Microsoft は最初の Vulkan 拡張機能を提出する準備を進めています。
最初の Vulkan 拡張機能を提出するための準備の一環として、一夜にして、 「MSFT」ベンダー プレフィックスを追加するための Vulkan 仕様リポジトリ。
vk.xml には、今後 Microsoft Corporation の拡張機能を表す MSFT タグが追加されました。
Microsoft のエンジニアは、Vulkan 階層化ドライバー拡張機能の開発に取り組んでいます。提案されている VK_MSFT_layered_driver 拡張機能の目的は、一般的な Vulkan ローダーがドライバーの階層化をより適切に処理して、物理デバイスのソートを改善できるようにすることです。以下は、まだマージされていない VK_MSFT_layered_driver が対処したい状況を説明した問題ステートメントです:
“Vulkan ローダーは、プラットフォーム固有の基準に従って物理デバイスを並べ替えることができます。たとえば、Windows では、ローダーは LUID を使用して物理デバイスを同じ順序に配置します。ただし、同じ物理デバイスのサポートを提供する複数の Vulkan ドライバーを使用することも可能で、1 つはベンダー提供の「ネイティブ」実装で、もう 1 つは異なる API 上の「階層化された」実装です。階層化された実装には、D3D12 に階層化された VulkanOn12 (別名 Dozen) と、Metal に階層化された MoltenVK が含まれます。
物理デバイスに 2 つの可能なドライバーがあるシステムでは、現時点ではそれらの間の並べ替え順序は指定されていません。理想的な並べ替え順序階層化は本質的にオーバーヘッドを追加するため、ネイティブ ドライバーはより多くの機能とより高いパフォーマンスを提供すると予想されるため、ネイティブ/非階層化ドライバーを階層化ドライバーの前に並べ替えて配置する必要があります。しかし、ローダーにはどのドライバーを優先すべきかを知る方法がありません。
この仕様で対処されていないもう 1 つの問題は、単一の物理デバイスに対して複数の「ネイティブ」ドライバーがある場合です。この場合、ドライバー間の正しい順序が明らかではないため、並べ替え順序は指定されないままになります。」
Microsoft の観点から見ると、Microsoft は独自の Mesa Dzn ドライバーの処理を改善しようとしていると考えられます。 Direct3D 12 上の Vulkan API 用です。前述したように、この拡張機能は、Apple の Metal グラフィックス/コンピューティング API 上の Vulkan の MoltenVK にも役立つ可能性があります。
階層化ドライバー拡張機能の作業に興味がある場合は、このプル リクエストをご覧ください。いずれにせよ、Microsoft が最初の Vulkan コントリビューションを準備しているのを見るのは楽しいです。