DXGKCB_CREATECONTEXTALLOCATION fonction de rappel (d3dkmddi.h)

DXGKCB_CREATECONTEXTALLOCATION alloue un contexte GPU ou un contexte spécifique à l’appareil.

Syntaxe

DXGKCB_CREATECONTEXTALLOCATION DxgkcbCreatecontextallocation;

NTSTATUS DxgkcbCreatecontextallocation(
  [in/out] INOUT_PDXGKARGCB_CREATECONTEXTALLOCATION unnamedParam1
)
{...}

Paramètres

[in/out] unnamedParam1

Pointeur vers une structure DXGKARGCB_CREATECONTEXTALLOCATION qui spécifie les attributs du contexte à allouer.

Valeur de retour

DXGKCB_CREATECONTEXTALLOCATION retourne STATUS_SUCCESS si elle réussit. Sinon, elle retourne l’un des codes d’erreur définis dans Ntstatus.h.

Remarques

À compter de WDDM 1.2, les pilotes miniport d’affichage peuvent allouer un contexte spécifique au GPU (l’allocation de contexte GPU) ou un contexte spécifique à l’appareil (allocation de contexte d’appareil).

Une allocation de contexte GPU permet aux GPU de stocker l’état du contexte à partir de mémoires tampons DMA qui sont préemptées au milieu de leur exécution. Les pilotes créent des allocations associées à un contexte GPU pour enregistrer son état lorsqu’il est nécessaire. Le système d’exploitation garantit que l’allocation de contexte est résidente avant qu’une commande de ce contexte soit placée dans la file d’attente d’exécution matérielle du GPU. Le contexte reste résident jusqu’à ce qu’une commande d’un autre contexte soit placée dans la file d’attente d’exécution matérielle.

En outre, le système d’exploitation prend en charge le basculement de contexte GPU différé en supposant que l’état du contexte matériel est conservé sur le GPU après avoir terminé une commande qui appartient au contexte. De cette façon, les contextes sont uniquement basculés sur le GPU lorsqu’une commande provenant d’un autre contexte est envoyée à la file d’attente matérielle.

DXGKCB_XXX fonctions sont implémentées par Dxgkrnl. Pour utiliser cette fonction de rappel, définissez les membres de DXGKARGCB_ALLOCATEPAGESFORMDL, puis appelez DxgkCbCreateContextAllocation via le DXGKRNL_INTERFACE.

Allocations de contexte GPU

Les allocations de contexte GPU ne peuvent être effectuées que pour les contextes non système. Le pilote display miniport crée ces contextes en appelant DxgkDdiCreateContext. Pour créer un contexte non système, le pilote définit le membre SystemContext d’une structure DXGK_CREATECONTEXTFLAGS sur zéro et transmet un pointeur à cette structure dans le paramètre pCreateContext.

Une allocation de contexte d’appareil suit un modèle similaire, sauf qu’il restera résident pour tout contexte qui appartient à l’appareil auquel il est associé. Ce modèle permet aux pilotes d’utiliser des allocations de contexte GPU pour stocker les données de zone d’enregistrement de contexte GPU (CSA) et d’utiliser des allocations de contexte d’appareil pour stocker les données de la table de pages.

Allocations de contexte d’appareil

Les allocations de contexte d’appareil ne peuvent être effectuées que pour les appareils non système. Le pilote display miniport crée ces appareils en appelant DxgkDdiCreateDevice. Pour créer un périphérique non système, le pilote définit le membre Flags.SystemDevice d’une structure DXGK_CREATEDEVICEFLAGS sur zéro et transmet un pointeur à cette structure dans le paramètre pCreateDevice.

Le pilote miniport d’affichage appelle DXGKCB_DESTROYCONTEXTALLOCATION pour libérer les ressources de contexte qui ont été allouées via DxgkCbCreateContextAllocation.

Adresses virtuelles pour les allocations de contexte de destination

Pour vous assurer que le système d’exploitation définit une adresse virtuelle valide (non NULL) pour l’allocation de contexte de destination (InitContextResource->Destination->VirtualAddress membre de la structure de DXGKARG_BUILDPAGINGBUFFER), lorsque le pilote miniport d’affichage appelle DxgkCbCreateContextAllocation il doit :

Exigences

Exigence Valeur
client minimum pris en charge Windows 8 (WDDM 1.2)
serveur minimum pris en charge Windows Server 2012
plateforme cible Bureau
d’en-tête d3dkmddi.h (include D3dkmddi.h)
IRQL PASSIVE_LEVEL

Voir aussi

DXGK_ALLOCATIONINFOFLAGS

DXGK_CREATECONTEXTFLAGS

DXGK_CREATEDEVICEFLAGS

DXGKARG_BUILDPAGINGBUFFER

DXGKARGCB_CREATECONTEXTALLOCATION

DXGKCB_DESTROYCONTEXTALLOCATION

DxgkDdiCreateContext

DxgkDdiCreateDevice

DXGKRNL_INTERFACE