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 de DXGKARGCB_CREATECONTEXTALLOCATION qui spécifie les attributs du contexte à allouer.
Valeur retournée
DXGKCB_CREATECONTEXTALLOCATION retourne STATUS_SUCCESS si elle réussit. Sinon, il retourne l’un des codes d’erreur définis dans Ntstatus.h.
Remarques
À compter de WDDM 1.2, les pilotes miniports d’affichage peuvent allouer un contexte spécifique au GPU (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 lorsque cela est nécessaire. Le système d’exploitation garantit que l’allocation de contexte est résidente avant qu’une commande de ce contexte ne 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 paresseux 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 ne sont activés sur le GPU que lorsqu’une commande 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 miniport d’affichage crée ces contextes en appelant DxgkDdiCreateContext. Pour créer un contexte autre que système, le pilote définit le membre SystemContext d’une structure DXGK_CREATECONTEXTFLAGS sur zéro et passe un pointeur vers cette structure dans le paramètre pCreateContext .
Une allocation de contexte d’appareil suit un modèle similaire, sauf qu’elle restera résidente pour tout contexte qui appartient à l’appareil auquel elle est associée. Ce modèle permet aux pilotes d’utiliser les allocations de contexte GPU pour stocker les données de zone d’enregistrement de contexte GPU (CSA) et d’utiliser les allocations de contexte d’appareil pour stocker les données de 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 miniport d’affichage 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 passe un pointeur vers 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 garantir que le système d’exploitation définit une adresse virtuelle valide (non NULL) pour l’allocation du contexte de destination (membre InitContextResource-Destination-VirtualAddress>> de la structure DXGKARG_BUILDPAGINGBUFFER), lorsque le pilote miniport d’affichage appelle DxgkCbCreateContextAllocation, il doit :
- Définissez les membres CpuVisible et Protected de la structure DXGK_ALLOCATIONINFOFLAGS .
- Page dans l’allocation uniquement aux segments d’ouverture en définissant le membre SupportedSegmentSet de la structure DXGKARGCB_CREATECONTEXTALLOCATION .
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 8 (WDDM 1.2) |
Serveur minimal pris en charge | Windows Server 2012 |
Plateforme cible | Desktop (Expérience utilisateur) |
En-tête | d3dkmddi.h (inclure D3dkmddi.h) |
IRQL | PASSIVE_LEVEL |
Voir aussi
DXGKARGCB_CREATECONTEXTALLOCATION