次の方法で共有


D3DKMTCreateNativeFence 関数 (d3dkmthk.h)

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

構文

NTSTATUS D3DKMTCreateNativeFence(
  D3DKMT_CREATENATIVEFENCE *unnamedParam1
);

パラメーター

unnamedParam1

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

戻り値

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

備考

指定した D3DDDI_NATIVEFENCE_TYPE によって、OS によって作成されるネイティブ フェンスの種類が決まります。 これらのフェンスは、CurrentValue と monitoredValueの の機能、パフォーマンス特性、およびストレージ要件が異なります。 次の表に、これらの違いを示します。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 シスメム シスメム はい はい 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 操作からのシグナルをサポートします。
    • このフェンスの種類 CurrentValueMonitoredValue ストレージの両方が、システム メモリ セグメントに割り当てられます。
  • 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

関連項目

D3DKMT_CREATENATIVEFENCE

D3DKMTOpenNativeFenceFromNTHandle

D3DKMTDestroySynchronizationObject

DxgkDdiCreateNativeFence を する