D3DKMTCreateNativeFence-Funktion (d3dkmthk.h)

Die D3D-Laufzeit ruft D3DKMTCreateNativeFence- auf, um ein systemeigenes GPU-Zaunobjekt auf einem bestimmten Gerät zu erstellen.

Syntax

NTSTATUS D3DKMTCreateNativeFence(
  D3DKMT_CREATENATIVEFENCE *unnamedParam1
);

Parameter

unnamedParam1

[in/out] Zeigen Sie auf eine D3DKMT_CREATENATIVEFENCE Struktur, die das zu erstellende Zaunobjekt beschreibt.

Rückgabewert

D3DKMTCreateNativeFence gibt bei erfolgreicher Erstellung STATUS_SUCCESS zurück. Andernfalls wird ein NTSTATUS-Fehlercode wie STATUS_INVALID_PARAMETER zurückgegeben.

Bemerkungen

Die angegebene D3DDDI_NATIVEFENCE_TYPE bestimmt den Typ des systemeigenen Zauns, den das Betriebssystem erstellt. Diese Zäune unterscheiden sich in Funktionalität, Leistungseigenschaften und Speicheranforderungen für CurrentValue- und MonitoredValue-. Die folgende Tabelle zeigt diese Unterschiede, wobei CVal für CurrentValue- und MVal steht für MonitoredValue-.

Art CurrentValue MonitoredValue Unterstützt prozessübergreifende Freigabe auf CPU Unterstützt adapterübergreifende Freigabe UM CPUVA CVal KM CPUVA CVal GPU VA CVal CMPVA CVal UM MVal KM MVal GPU VA MVal CMPVA MVal Anwendungsfall
D3DDDI_NATIVEFENCE_TYPE_DEFAULT Sysmem Sysmem Ja Ja ReadOnly Lese-/Schreibzugriff Lese-/Schreibzugriff Lese-/Schreibzugriff N/A Schreiben ReadOnly (oder Lese-/Schreibzugriff) Lese-/Schreibzugriff Anwendungszäune mit reduzierten CPU-Unterbrechungen. GPU-Waiter wird entblockt, ohne CPU aufwachen zu müssen
D3DDDI_NATIVEFENCE_TYPE_DEFAULT (OPTIMIERT) Sysmem VRAM Ja Ja ReadOnly Lese-/Schreibzugriff Lese-/Schreibzugriff Lese-/Schreibzugriff N/A Schreiben ReadOnly (oder Lese-/Schreibzugriff) Lese-/Schreibzugriff Identisch mit Typ 0, aber mit reduzierten PCI-Busdatenverkehr wie MVal-Lesevorgänge sind lokal für die GPU. Der GPU-Signalbefehl wird aufgrund dieser reduzierten Latenz (Durchsatz++) schneller abgeschlossen.
D3DDDI_NATIVEFENCE_TYPE_INTRA_GPU VRAM VRAM Ja Nein N/A N/A Lese-/Schreibzugriff Lese-/Schreibzugriff N/A N/A ReadOnly (oder Lese-/Schreibzugriff) Lese-/Schreibzugriff Befehlspufferebene (nicht sichtbar) Synchronisierung innerhalb derselben GPU. Lese-/Schreibzugriff auf Zaunwert (CVal) ist lokal, sodass Signal-/Blockierungsvorgänge schnell sind.
  • D3DDDI_NATIVEFENCE_TYPE_DEFAULT

    • Unterstützt in Windows 11, Version 24H2.
    • Dieser Zauntyp unterstützt alle vorhandenen D3DKMT-Synchronisierungsobjekt Wait/Signal von CPU/GPU-Vorgängen.
    • Sowohl CurrentValue als auch MonitoredValue Speicher für diesen Zauntyp werden im Systemspeichersegment zugewiesen.
  • D3DDDI_NATIVEFENCE_TYPE_DEFAULT (Optimierte)

    • Diese Funktion wird derzeit vom Betriebssystem nicht unterstützt.
    • Die optimierte Version von D3DDDI_NATIVEFENCE_TYPE_DEFAULT, in der der MonitoredValue Speicher in VRAM zugeordnet werden kann, beschleunigt die Lesevorgänge von MonitoredValue- aus dem GPU-Modul.
    • Diese Optimierung ist nicht für UMD verfügbar. Stattdessen entscheidet Dxgkrnl- und KMD, ob der Standardzauntyp durch Zuweisung von MonitoredValue-Speicher in VRAM optimiert werden kann.
    • MonitoredValue speicher, der in VRAM zugewiesen ist, kann weiterhin auf den Systemspeicher herabgestuft werden, wenn das System unter lokalem Speicherdruck liegt.
    • Wenn das Betriebssystem diesen Zauntyp unterstützt, wird SupportOptimizedDefaultFenceType- auf TRUE in der DXGKARGCB_FEATURE_NATIVEFENCE_CAPS_1 Featureschnittstellentabelle festgelegt. KMD wird erwartet, dass die Featureschnittstellentabelle während der Treiberinitialisierung abgefragt wird, um diese Betriebssystemfunktion zu ermitteln.
  • D3DDDI_NATIVEFENCE_TYPE_INTRA_GPU

    • Diese Funktion wird derzeit vom Betriebssystem nicht unterstützt.
    • Ein D3DDDI_NATIVEFENCE_TYPE_INTRA_GPU Zaun unterstützt keine CPU-Vorgänge; d. h., das Betriebssystem lässt nicht zu, dass der Benutzermodus warte und signalisiert, dass dieses Zaunobjekt in die Warteschlange gestellt wird.
    • Daher kann dieser Typ nicht für DX-Anwendungszäune verwendet werden, die CPU-Warte- und Signalsemantik unterstützen müssen. Dieser Typ wird hauptsächlich für interne UMD-Zäune für die Synchronisierung zwischen GPU-Engines verwendet. Das Erstellen dieses Typs als systemeigenes D3DKMT-Zaunobjekt bietet Einblicke in diese Zäune für Tools wie GpuView- und Debuggen.
    • Das unterstützte Segment für diesen Zaun muss ein nicht CPU sichtbares lokales Speichersegment sein.
    • Der im lokalen Speicher zugewiesene Speicher kann weiterhin auf den Systemspeicher herabgestuft werden, wenn das System unter lokalem Speicherdruck liegt.
    • Wenn das Betriebssystem diesen Zauntyp unterstützt, wird SupportIntraGpuFenceType- auf TRUE in der DXGKARGCB_FEATURE_NATIVEFENCE_CAPS_1 Featureschnittstellentabelle festgelegt. KMD wird erwartet, dass die Featureschnittstellentabelle während der Treiberinitialisierung abgefragt wird, um diese Betriebssystemfunktion zu ermitteln.

Weitere Informationen zu systemeigenen GPU-Zaunen finden Sie unter native GPU-Zaunobjekte.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 11, Version 24H2
Header- d3dkmthk.h

Siehe auch

D3DKMT_CREATENATIVEFENCE

D3DKMTOpenNativeFenceFromNTHandle

D3DKMTDestroySynchronizationObject

DxgkDdiCreateNativeFence