Funzione D3DKMTCreateNativeFence (d3dkmthk.h)

Il runtime D3D chiama D3DKMTCreateNativeFence per creare un oggetto recinto 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 recinto da creare.

Valore restituito

D3DKMTCreateNativeFence restituisce STATUS_SUCCESS al completamento della creazione. In caso contrario, restituisce un codice di errore NTSTATUS, ad esempio STATUS_INVALID_PARAMETER.

Osservazioni

Il D3DDDI_NATIVEFENCE_TYPE specificato determina il tipo di isolamento nativo creato dal sistema operativo. Questi recinti differiscono in termini di funzionalità, caratteristiche delle prestazioni e requisiti di archiviazione per CurrentValue e MonitoredValue. La tabella seguente illustra queste differenze, dove CVal è l'acronimo di CurrentValue e MVal è l'acronimo di MonitoredValue.

Digitare CurrentValue MonitoredValue Supporta la condivisione tra processi nella CPU Supporta la condivisione tra adapter CVal CPU DI messaggistica unificata 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 Scrivere ReadOnly (o Lettura/Scrittura) Lettura/scrittura Isolamento dell'applicazione con interruzioni della CPU ridotte. Il cameriere GPU viene sbloccato senza riattivare la CPU
D3DDDI_NATIVEFENCE_TYPE_DEFAULT (OPTIMIZED) Sysmem VRAM ReadOnly Lettura/scrittura Lettura/scrittura Lettura/scrittura N/D Scrivere ReadOnly (o Lettura/Scrittura) Lettura/scrittura Uguale al tipo 0, ma con traffico del bus PCI ridotto come le letture MVal sono locali per la 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 a livello di buffer dei comandi (non visibile dall'applicazione) all'interno della stessa GPU. La lettura/scrittura nel valore di recinto (CVal) è locale, quindi le operazioni signal/unblock sono veloci.
  • D3DDDI_NATIVEFENCE_TYPE_DEFAULT

    • Supportato in Windows 11 versione 24H2.
    • Questo tipo di recinto supporta tutti gli oggetti di sincronizzazione D3DKMT esistenti Wait/Signal dalle operazioni CPU/GPU.
    • Sia CurrentValue che l'archiviazione di MonitoredValue per questo tipo di isolamento vengono allocati nel segmento di memoria di sistema.
  • D3DDDI_NATIVEFENCE_TYPE_DEFAULT (ottimizzato)

    • Questa funzionalità non è attualmente supportata dal sistema operativo.
    • La versione ottimizzata di D3DDDI_NATIVEFENCE_TYPE_DEFAULT, in cui l'archiviazione MonitoredValue può essere allocata in VRAM, velocizzerà le letture di MonitoredValue dal motore GPU.
    • Questa ottimizzazione non è esposta alla messaggistica unificata. Al contrario, Dxgkrnl e KMD deciderà se il tipo di recinto predefinito può essere ottimizzato allocando l'archiviazione MonitoredValue in VRAM.
    • MonitoredValue l'archiviazione allocata in VRAM potrebbe comunque essere abbassata alla memoria di sistema se il sistema è sottoposto a un utilizzo elevato di memoria locale.
    • Se il sistema operativo supporta questo tipo di isolamento, imposta SupportOptimizedDefaultFenceType su TRUE nella tabella dell'interfaccia delle funzionalità di DXGKARGCB_FEATURE_NATIVEFENCE_CAPS_1. Il kmD dovrebbe 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.
    • Una D3DDDI_NATIVEFENCE_TYPE_INTRA_GPU recinto non supporta alcuna operazione della CPU; ovvero, il sistema operativo non consente alla modalità utente di accodare l'attesa e segnala a questo oggetto di isolamento.
    • 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 i recinti UMD interni per la sincronizzazione tra i motori GPU. La creazione di questo tipo come oggetto recinto nativo D3DKMT offre visibilità su questi recinti per strumenti come GpuView e debug.
    • Il segmento supportato per questa recinzione deve essere un segmento di memoria locale non visibile dalla CPU.
    • L'archiviazione allocata nella memoria locale può comunque essere abbassata alla memoria di sistema se il sistema è sottoposto a un utilizzo elevato della 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 kmD dovrebbe eseguire una query sulla tabella dell'interfaccia delle funzionalità durante l'inizializzazione del driver per determinare questa funzionalità del sistema operativo.

Per altre informazioni sui recinto GPU nativi, vedere oggetti di isolamento GPU nativi.

Fabbisogno

Requisito Valore
client minimo supportato Windows 11, versione 24H2
intestazione d3dkmthk.h

Vedere anche

D3DKMT_CREATENATIVEFENCE

D3DKMTOpenNativeFenceFromNTHandle

D3DKMTDestroySynchronizationObject

DxgkDdiCreateNativeFence