Condividi tramite


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 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 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 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

D3DKMT_CREATENATIVEFENCE

D3DKMTOpenNativeFenceFromNTHandle

D3DKMTDestroySynchronizationObject

DxgkDdiCreateNativeFence