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:

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

DXGK_ALLOCATIONINFOFLAGS

DXGK_CREATECONTEXTFLAGS

DXGK_CREATEDEVICEFLAGS

DXGKARG_BUILDPAGINGBUFFER

DXGKARGCB_CREATECONTEXTALLOCATION

DXGKCB_DESTROYCONTEXTALLOCATION

DxgkDdiCreateContext

DxgkDdiCreateDevice

DXGKRNL_INTERFACE