D3D12_STATE_OBJECT_FLAGS列挙 (d3d12.h)

状態オブジェクトの制約を指定します。 この列挙体の値は 、D3D12_STATE_OBJECT_CONFIG 構造体で使用します。

構文

typedef enum D3D12_STATE_OBJECT_FLAGS {
  D3D12_STATE_OBJECT_FLAG_NONE = 0,
  D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS = 0x1,
  D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS = 0x2,
  D3D12_STATE_OBJECT_FLAG_ALLOW_STATE_OBJECT_ADDITIONS
} ;

定数

 
D3D12_STATE_OBJECT_FLAG_NONE
値: 0
状態オブジェクトの制約はありません。
D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS
値: 0x1
このフラグは、コレクション型の状態オブジェクトにのみ適用されます。 それ以外の場合、このフラグは無視されます。

このコレクションからのエクスポートでは、レイトレーシング パイプライン状態オブジェクト (RTPSO) などの包含状態オブジェクトにコレクションが含まれている場合に解決 (定義) する必要がある未解決の参照 (依存関係) を使用できます。 これには、外部で定義されたサブオブジェクトの関連付けに応じて、外部サブオブジェクト (ルート署名など) がローカル エクスポートに関連付けられます。

このフラグがない場合、このコレクション内のすべてのエクスポートでは、必要なサブオブジェクトの関連付けがローカルで定義されている場合を含め、依存関係が完全にローカルで解決されている必要があります。 高度な実装/ドライバーには、コレクション内のコードをコンパイルするのに十分な情報があり、( D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS フラグが設定されていない限り) コンパイルされていないコードを回避する必要はありません。そのため、コレクションが包含状態オブジェクト (RTPSO など) で使用される場合は、ドライバーが最小限の作業を行う必要があります。 ほとんどの場合、"安い" リンクが理想的です。
D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS
値: 0x2
このフラグは、コレクション型の状態オブジェクトにのみ適用されます。 それ以外の場合、このフラグは無視されます。

このコレクションが別の状態オブジェクト (RTPSO など) に含まれている場合、含まれている状態オブジェクトの残りの部分にあるシェーダー/関数は、このコレクションからのエクスポート (呼び出しなど) に依存できます。

このフラグ (既定値) がない場合、このコレクションからのエクスポートは、状態オブジェクトを含む他の部分 (RTPSO など) から直接参照することはできません。 これにより、ドライバーがすべてのコードをコンパイルする外部関数によって呼び出される可能性が低い場合に、ドライバーがコレクション内のコンパイルされていないコードを保持する必要がないため、コレクションのメモリ占有領域を少し減らすことができます。 ただし、このコレクション内のコードに対して必要なすべてのサブオブジェクト関連付けがローカルに定義されていない場合、ドライバーはまだシェーダー コードをコンパイルできず、コンパイルされていないコードを保持する必要がある場合があります。

外部のサブオブジェクトをローカル エクスポートに関連付ける外部で定義されたサブオブジェクトの関連付けは、ローカル定義に対する外部依存関係としてカウントされないため、このフラグの有無は、関連付けが許可されているかどうかに影響しません。 一方、現在のコレクションでローカルに定義されたサブオブジェクトと外部エクスポート (シェーダーなど) のサブオブジェクトの関連付けが定義されている場合は、ローカル定義に対する外部依存関係としてカウントされ、このフラグを設定する必要があります。

このフラグの有無に関係なく、コレクション内のシェーダー エントリポイント (ヒット グループやミス シェーダーなど) は、それを含む状態オブジェクト (RTPSO など) へのエントリポイントとして表示されます (エクスポートされた場合)。 RTPSO の場合、エクスポートされたエントリポイントはレイトレーシングのためにシェーダー テーブルで使用できます。

要件

要件
Header d3d12.h