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
D3DKMTOpenNativeFenceFromNTHandle