汎用プログラムは、レイトレーシンググラフや 作業グラフと同じインフラストラクチャを使用して、状態オブジェクト内でグラフィックスとコンピューティングパイプラインを定義する方法を提供します。 個別のパイプライン状態オブジェクト (PSO) を作成する代わりに、シェーダーやブレンド状態などの共有構成要素を作成することで、1 つの状態オブジェクトに複数のプログラムを定義できます。
この記事では、Windows 11 バージョン 24H2 (WDDM 3.2) 以降で使用可能な汎用プログラムをサポートするユーザー モード グラフィックス ドライバー (UMD) の DDI について説明します。 汎用プログラムでは、シェーダー モデル 6.8 のサポートが必要です。 詳細については、 汎用プログラムの仕様を参照してください。
汎用プログラムのサポートの報告
シェーダー モデル 6.8 のサポートは、汎用プログラムのサポートを意味します。 汎用プログラムに固有の個別の機能レポートはありません。
DDI 関数テーブル
汎用プログラムでは、次の DDI 関数を使用します。
状態オブジェクト
D3D12DDI_STATE_SUBOBJECT_TYPEの D3D12DDI_STATE_SUBOBJECT_TYPE_GENERIC_PROGRAM サブオブジェクト型 (値 15) を使用して、状態オブジェクト内の汎用プログラム を定義します。 サブオブジェクト構造については、「 D3D12DDI_GENERIC_PROGRAM_DESC_0108 」を参照してください。
汎用プログラムは、プログラム名、シェーダーのエクスポート (頂点シェーダー、ピクセル シェーダー、計算シェーダーなど) と、ブレンド状態やラスタライザー状態などの他のサブオブジェクトへの参照を指定します。 グラフィックス パイプライン状態サブオブジェクトには、ブレンド、ラスタライザー、深度/ステンシル、入力レイアウト、プリミティブ トポロジ、レンダー ターゲット形式などが含まれます( D3D12DDI_STATE_SUBOBJECT_TYPE 列挙型で定義されています)。
汎用プログラムでは、次のシェーダー モデル 6.8 シェーダー ターゲット ( vs_6_8、 ps_6_8、 cs_6_8、 ms_6_8、 およびas_6_8) がサポートされます。
作業グラフとの関係
汎用プログラムと 作業グラフ は、状態オブジェクト インフラストラクチャを共有する独立した機能です。 汎用プログラムではシェーダー モデル 6.8 のみが必要ですが、作業グラフには明示的な WorkGraphsTier 機能のサポートが必要です。