Funzione D3DKMTCreateNativeFence (d3dkmthk.h)
Dxgkrnl chiama D3DKMTCreateNativeFence per creare un oggetto di recinzione GPU nativo in un determinato dispositivo.
Sintassi
NTSTATUS D3DKMTCreateNativeFence(
D3DKMT_CREATENATIVEFENCE *unnamedParam1
);
Parametri
unnamedParam1
[in/out] Puntatore a una struttura D3DKMT_CREATENATIVEFENCE che descrive l'oggetto di recinzione da creare.
Valore restituito
D3DKMTCreateNativeFence restituisce STATUS_SUCCESS alla creazione riuscita. In caso contrario, restituisce un codice di errore NTSTATUS, ad esempio STATUS_INVALID_PARAMETER.
Commenti
Il D3DDDI_NATIVEFENCE_TYPE specificato determina il tipo di recinzione nativa creata dal sistema operativo. Queste recinzioni differiscono in funzionalità, caratteristiche delle prestazioni e requisiti di archiviazione per CurrentValue e MonitorValue. La tabella seguente mostra queste differenze, in cui CVal è l'acronimo di CurrentValue e MVal si trova per MonitoredValue.
Tipo | CurrentValue | MonitorValue | Supporta la condivisione tra processi nella CPU | Supporta la condivisione tra schede | UM CPUVA CVal | KM CPUVA CVal | GPU VA CVal | CMPVA CVal | MVal di messaggistica unificata | KM MVal | GPU VA MVal | CMPVA MVal | Caso d'uso |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
D3DDDI_NATIVEFENCE_TYPE_DEFAULT | Sysmem | Sysmem | Sì | Sì | ReadOnly | Lettura/Scrittura | Lettura/Scrittura | Lettura/Scrittura | N/D | Scrittura | ReadOnly (o Lettura/Scrittura) | Lettura/Scrittura | Recinzioni dell'applicazione con interruzioni di CPU ridotte. Il cameriere GPU viene sbloccato senza svegliare la CPU |
D3DDDI_NATIVEFENCE_TYPE_DEFAULT (OPTIMIZED) | Sysmem | VRAM | Sì | Sì | ReadOnly | Lettura/Scrittura | Lettura/Scrittura | Lettura/Scrittura | N/D | Scrittura | ReadOnly (o Lettura/Scrittura) | Lettura/Scrittura | Uguale al tipo 0, ma con traffico del bus PCI ridotto come le letture MVal sono locali alla GPU. Il comando del segnale GPU viene completato più velocemente a causa di questa latenza ridotta (velocità effettiva++). |
D3DDDI_NATIVEFENCE_TYPE_INTRA_GPU | VRAM | VRAM | Sì | No | N/D | N/D | Lettura/Scrittura | Lettura/Scrittura | N/D | N/D | ReadOnly (o Lettura/Scrittura) | Lettura/Scrittura | Sincronizzazione del buffer dei comandi (non visibile dall'applicazione) nella stessa GPU. Il valore di lettura/scrittura (CVal) è locale, quindi le operazioni di segnale/sblocco sono veloci. |
D3DDDI_NATIVEFENCE_TYPE_DEFAULT
- Supportato in Windows 11 versione 24H2.
- Questo tipo di recinzione supporta tutti gli oggetti di sincronizzazione D3DKMT esistenti Wait/Signal dalle operazioni CPU/GPU.
- L'archiviazione CurrentValue e MonitorValue per questo tipo di recinzione viene allocata nel segmento di memoria di sistema.
D3DDDI_NATIVEFENCE_TYPE_DEFAULT (ottimizzata)
- Questa funzionalità non è attualmente supportata dal sistema operativo.
- La versione ottimizzata di D3DDDI_NATIVEFENCE_TYPE_DEFAULT, in cui l'archiviazione MonitoringValue può essere allocata in VRAM, velocizzerà le letture di MonitoringValue dal motore GPU.
- Questa ottimizzazione non è esposta a UMD. Al contrario , Dxgkrnl e KMD decideranno se il tipo di recinzione predefinito può essere ottimizzato allocando l'archiviazione MonitoringValue in VRAM.
- L'archiviazione MonitorValue allocata in VRAM può comunque essere democata alla memoria di sistema se il sistema è sotto pressione di memoria locale.
- Se il sistema operativo supporta questo tipo di recinto, imposta SupportOptimizedDefaultFenceType su TRUE nella tabella dell'interfaccia delle funzionalità di DXGKARGCB_FEATURE_NATIVEFENCE_CAPS_1 . Il servizio di gestione delle chiavi deve eseguire una query sulla tabella dell'interfaccia delle funzionalità durante l'inizializzazione del driver per determinare questa funzionalità del sistema operativo.
D3DDDI_NATIVEFENCE_TYPE_INTRA_GPU
- Questa funzionalità non è attualmente supportata dal sistema operativo.
- Un D3DDDI_NATIVEFENCE_TYPE_INTRA_GPU recinto non supporta operazioni CPU; ovvero, il sistema operativo non consente alla modalità utente di attendere e segnali a questo oggetto di recinzione.
- Di conseguenza, questo tipo non può essere usato per le recinzioni dell'applicazione DX che devono supportare la semantica di attesa e segnale della CPU. Questo tipo viene usato principalmente per le recinzioni UMD interne per la sincronizzazione tra motori GPU. La creazione di questo tipo come oggetto di recinzione nativo D3DKMT offre visibilità su questi recinti per strumenti come GpuView e debug.
- Il segmento supportato per questo recinto deve essere un segmento di memoria locale non visibile alla CPU.
- L'archiviazione allocata nella memoria locale può comunque essere demotivata alla memoria di sistema se il sistema è sottoposto a pressione di memoria locale.
- Se il sistema operativo supporta questo tipo di recinto, imposta SupportIntraGpuFenceType su TRUE nella tabella dell'interfaccia delle funzionalità di DXGKARGCB_FEATURE_NATIVEFENCE_CAPS_1 . Il servizio di gestione delle chiavi deve eseguire una query sulla tabella dell'interfaccia delle funzionalità durante l'inizializzazione del driver per determinare questa funzionalità del sistema operativo.
Per altre informazioni sulle barriere GPU native, vedere Oggetti di recinzione GPU nativa.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 11 versione 24H2 |
Intestazione | d3dkmthk.h |
Vedi anche
D3DKMTOpenNativeFenceFromNTHandle
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per