DXGKCB_CREATECONTEXTALLOCATION funzione di callback (d3dkmddi.h)
DXGKCB_CREATECONTEXTALLOCATION alloca un contesto GPU o un contesto specifico del dispositivo.
Sintassi
DXGKCB_CREATECONTEXTALLOCATION DxgkcbCreatecontextallocation;
NTSTATUS DxgkcbCreatecontextallocation(
[in/out] INOUT_PDXGKARGCB_CREATECONTEXTALLOCATION unnamedParam1
)
{...}
Parametri
[in/out] unnamedParam1
Puntatore a una struttura DXGKARGCB_CREATECONTEXTALLOCATION che specifica gli attributi del contesto da allocare.
Valore restituito
DXGKCB_CREATECONTEXTALLOCATION restituisce STATUS_SUCCESS se ha esito positivo. In caso contrario, restituisce uno dei codici di errore definiti in Ntstatus.h.
Commenti
A partire da WDDM 1.2, i driver miniport visualizzabili possono allocare un contesto specifico della GPU (allocazione del contesto GPU) o un contesto specifico del dispositivo (allocazione del contesto del dispositivo).
Un'allocazione del contesto GPU consente alle GPU di archiviare lo stato del contesto dai buffer DMA che vengono preceduti al centro dell'esecuzione. I driver creano allocazioni associate a un contesto GPU per salvare lo stato quando è necessario. Il sistema operativo garantisce che l'allocazione del contesto sia residente prima che un comando da questo contesto venga inserito nella coda di esecuzione hardware della GPU. Il contesto rimarrà residente fino a quando non viene inserito un comando da un altro contesto nella coda di esecuzione hardware.
Inoltre, il sistema operativo supporta il cambio di contesto GPU lazy presupponendo che lo stato del contesto hardware venga mantenuto nella GPU dopo aver completato un comando che appartiene al contesto. In questo modo, i contesti vengono attivati solo sulla GPU quando viene inviato un comando da un contesto diverso alla coda hardware.
DXGKCB_XXX funzioni vengono implementate da Dxgkrnl. Per usare questa funzione di callback, impostare i membri di DXGKARGCB_ALLOCATEPAGESFORMDL e quindi chiamare DxgkCbCreateContextAllocation tramite il DXGKRNL_INTERFACE.
Allocazioni di contesto GPU
Le allocazioni di contesto GPU possono essere eseguite solo per i contesti non di sistema. Il driver miniport visualizzato crea questi contesti chiamando DxgkDdiCreateContext. Per creare un contesto non di sistema, il driver imposta il membro SystemContext di una struttura di DXGK_CREATECONTEXTFLAGS su zero e passa un puntatore a questa struttura nel parametro pCreateContext .
Un'allocazione del contesto del dispositivo segue un modello simile, ad eccezione del fatto che rimarrà residente per qualsiasi contesto appartenente al dispositivo a cui è associato. Questo modello consente ai driver di usare le allocazioni di contesto GPU per l'archiviazione dei dati del contesto GPU (CSA) e l'uso delle allocazioni del contesto del dispositivo per l'archiviazione dei dati della tabella di pagina.
Allocazioni di contesto del dispositivo
Le allocazioni di contesto del dispositivo possono essere eseguite solo per i dispositivi non di sistema. Il driver miniport visualizzato crea questi dispositivi chiamando DxgkDdiCreateDevice. Per creare un dispositivo non di sistema, il driver imposta il membro Flags.SystemDevice di una struttura di DXGK_CREATEDEVICEFLAGS su zero e passa un puntatore a questa struttura nel parametro pCreateDevice .
Il driver miniport visualizzato chiama DXGKCB_DESTROYCONTEXTALLOCATION per liberare le risorse di contesto allocate tramite DxgkCbCreateContextAllocation.
Indirizzi virtuali per le allocazioni di contesto di destinazione
Per assicurarsi che il sistema operativo imposta un indirizzo virtuale (non NULL) valido per l'allocazione del contesto di destinazione (InitContextResource-Destination-VirtualAddress>> della struttura DXGKARG_BUILDPAGINGBUFFER), quando il driver miniport visualizzato chiama DxgkCbCreateContextAllocation deve:
- Impostare i membri CpuVisible e Protetti della struttura DXGK_ALLOCATIONINFOFLAGS .
- Pagina nell'allocazione solo ai segmenti di apertura impostando il membro SupportedSegmentSet della struttura DXGKARGCB_CREATECONTEXTALLOCATION .
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 8 (WDDM 1.2) |
Server minimo supportato | Windows Server 2012 |
Piattaforma di destinazione | Desktop |
Intestazione | d3dkmddi.h (include D3dkmddi.h) |
IRQL | PASSIVE_LEVEL |
Vedi anche
DXGKARGCB_CREATECONTEXTALLOCATION