D3DKMTCreateNativeFence 関数 (d3dkmthk.h)

DxgkrnlD3DKMTCreateNativeFence を呼び出して、特定のデバイスにネイティブ GPU フェンス オブジェクトを作成します。

構文

NTSTATUS D3DKMTCreateNativeFence(
  D3DKMT_CREATENATIVEFENCE *unnamedParam1
);

パラメーター

unnamedParam1

[入力/出力]作成するフェンス オブジェクトを記述する D3DKMT_CREATENATIVEFENCE 構造体へのポインター。

戻り値

D3DKMTCreateNativeFence は、正常に作成されたSTATUS_SUCCESSを返します。 それ以外の場合は、STATUS_INVALID_PARAMETER などの NTSTATUS エラー コードが返されます。

注釈

指定した D3DDDI_NATIVEFENCE_TYPE によって、OS によって作成されるネイティブ フェンスの種類が決まります。 これらのフェンスは、 CurrentValueMonitoredValue の機能、パフォーマンス特性、ストレージ要件が異なります。 次の表は、これらの違いを示しています。CVal は CurrentValue を表し、MVal は MonitoredValue を表します。

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 シスメム シスメム Yes Yes ReadOnly 読み取り/書き込み 読み取り/書き込み 読み取り/書き込み 該当なし Write ReadOnly (または読み取り/書き込み) 読み取り/書き込み CPU 割り込みが減ったアプリケーション フェンス。 CPU をウェイクアップせずに GPU ウェイターのブロックが解除される
D3DDDI_NATIVEFENCE_TYPE_DEFAULT (最適化) シスメム Vram Yes Yes ReadOnly 読み取り/書き込み 読み取り/書き込み 読み取り/書き込み 該当なし Write ReadOnly (または読み取り/書き込み) 読み取り/書き込み タイプ 0 と同じですが、MVal 読み取りは GPU に対してローカルなので PCI バス トラフィックが減少します。 GPU シグナル コマンドは、待機時間の短縮 (スループット++) により、より高速に完了します。
D3DDDI_NATIVEFENCE_TYPE_INTRA_GPU Vram Vram はい いいえ 該当なし 該当なし 読み取り/書き込み 読み取り/書き込み 該当なし 該当なし ReadOnly (または読み取り/書き込み) 読み取り/書き込み 同じ GPU 内でのコマンド バッファー レベル (アプリケーションが表示されない) 同期。 フェンス値への読み取り/書き込み (CVal) はローカルであるため、シグナル/ブロック解除操作は高速です。
  • D3DDDI_NATIVEFENCE_TYPE_DEFAULT

    • Windows 11 バージョン 24H2 でサポートされます。
    • このフェンスの種類では、既存のすべての D3DKMT 同期オブジェクト Wait/Signal from CPU/GPU 操作がサポートされます。
    • このフェンスの種類の CurrentValue ストレージと MonitoredValue ストレージの両方が、システム メモリ セグメントに割り当てられます。
  • D3DDDI_NATIVEFENCE_TYPE_DEFAULT (最適化)

    • この機能は現在、OS ではサポートされていません。
    • VRAM で MonitoredValue ストレージを割り当てることができる最適化バージョンの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
Header d3dkmthk.h

こちらもご覧ください

D3DKMT_CREATENATIVEFENCE

D3DKMTOpenNativeFenceFromNTHandle

D3DKMTDestroySynchronizationObject

DxgkDdiCreateNativeFence