D3DKMTCreateNativeFence 関数 (d3dkmthk.h)
D3D ランタイム D3DKMTCreateNativeFence を呼び出して、特定のデバイスにネイティブ GPU フェンス オブジェクトを作成します。
構文
NTSTATUS D3DKMTCreateNativeFence(
D3DKMT_CREATENATIVEFENCE *unnamedParam1
);
パラメーター
unnamedParam1
[入力/出力]作成するフェンス オブジェクトを記述する D3DKMT_CREATENATIVEFENCE 構造体へのポインター。
戻り値
D3DKMTCreateNativeFence
備考
指定した D3DDDI_NATIVEFENCE_TYPE によって、OS によって作成されるネイティブ フェンスの種類が決まります。 これらのフェンスは、
種類 | CurrentValue | MonitoredValue | CPU でのクロスプロセス共有をサポート | アダプター間の共有をサポート | UM CPUVA CVal | KM CPUVA CVal | GPU VA CVal | CMPVA CVal | UM MVal | KM MVal | GPU VA MVal | CMPVA MVal | ユースケース |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
D3DDDI_NATIVEFENCE_TYPE_DEFAULT | シスメム | シスメム | はい | はい | ReadOnly | 読み取り/書き込み | 読み取り/書き込み | 読み取り/書き込み | N/A | 書く | ReadOnly (または読み取り/書き込み) | 読み取り/書き込み | CPU 割り込みを減らしたアプリケーション フェンス。 CPU をウェイクアップせずに GPU ウェイターのブロックが解除される |
D3DDDI_NATIVEFENCE_TYPE_DEFAULT (OPTIMIZED) | シスメム | VRAM | はい | はい | ReadOnly | 読み取り/書き込み | 読み取り/書き込み | 読み取り/書き込み | N/A | 書く | ReadOnly (または読み取り/書き込み) | 読み取り/書き込み | タイプ 0 と同じですが、MVal 読み取りは GPU に対してローカルになるため、PCI バス トラフィックが減少します。 GPU シグナル コマンドは、待機時間の短縮 (throughput++) により、より高速に完了します。 |
D3DDDI_NATIVEFENCE_TYPE_INTRA_GPU | VRAM | VRAM | はい | いいえ | N/A | N/A | 読み取り/書き込み | 読み取り/書き込み | N/A | N/A | ReadOnly (または読み取り/書き込み) | 読み取り/書き込み | 同じ GPU 内でのコマンド バッファー レベル (アプリケーションに表示されない) 同期。 フェンス値への読み取り/書き込み (CVal) はローカルであるため、シグナル/ブロック解除操作は高速です。 |
D3DDDI_NATIVEFENCE_TYPE_DEFAULT
- Windows 11 バージョン 24H2 でサポートされています。
- このフェンスの種類は、既存のすべての D3DKMT 同期オブジェクトの待機/CPU/GPU 操作からのシグナルをサポートします。
- このフェンスの種類 CurrentValue と MonitoredValue ストレージの両方が、システム メモリ セグメントに割り当てられます。
D3DDDI_NATIVEFENCE_TYPE_DEFAULT (最適化された)
- この機能は現在、OS ではサポートされていません。
MonitoredValue ストレージを VRAM に割り当てることができる最適化されたバージョンのD3DDDI_NATIVEFENCE_TYPE_DEFAULT により、GPU エンジンからの MonitoredValue読み取りが高速化されます。 - この最適化は UMD には公開されません。 代わりに、Dxgkrnl と KMD
、VRAM に MonitoredValue ストレージを割り当てることで、既定のフェンスの種類を最適化できるかどうかを決定します。 - VRAM に割り当てられた MonitoredValue ストレージは、システムがローカル メモリの負荷を受けている場合でも、システム メモリに降格される可能性があります。
- OS がこのフェンスの種類をサポートしている場合は、DXGKARGCB_FEATURE_NATIVEFENCE_CAPS_1 機能インターフェイス テーブル SupportOptimizedDefaultFenceType を TRUE に設定します。 KMD では、ドライバーの初期化中に機能インターフェイス テーブルに対してクエリを実行して、この OS 機能を判断する必要があります。
D3DDDI_NATIVEFENCE_TYPE_INTRA_GPU
- この機能は現在、OS ではサポートされていません。
- D3DDDI_NATIVEFENCE_TYPE_INTRA_GPU フェンスは CPU 操作をサポートしていません。つまり、OS では、ユーザー モードで待機をキューに入れ、このフェンス オブジェクトに通知することはできません。
- そのため、この型は、CPU 待機とシグナル セマンティクスをサポートする必要がある DX アプリケーション フェンスには使用できません。 この型は、主に GPU エンジン間の同期のために内部 UMD フェンスに使用されます。 この型を D3DKMT ネイティブ フェンス オブジェクトとして作成すると、GpuView やデバッグなどのツールでこれらのフェンス
表示できます。 - このフェンスでサポートされるセグメントは、CPU に表示されないローカル メモリ セグメントである必要があります。
- ローカル メモリに割り当てられたストレージは、システムがローカル メモリ不足の場合でも、システム メモリに降格される可能性があります。
- OS でこのフェンスの種類がサポートされている場合は、DXGKARGCB_FEATURE_NATIVEFENCE_CAPS_1 機能インターフェイス テーブル SupportIntraGpuFenceType を TRUE に設定します。 KMD では、ドライバーの初期化中に機能インターフェイス テーブルに対してクエリを実行して、この OS 機能を判断する必要があります。
ネイティブ GPU フェンスの詳細については、「ネイティブ GPU フェンス オブジェクト
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 11 バージョン 24H2 |
ヘッダー | d3dkmthk.h |
関連項目
D3DKMTOpenNativeFenceFromNTHandle
D3DKMTDestroySynchronizationObject
DxgkDdiCreateNativeFence を