Partager via


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 :

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

DXGK_ALLOCATIONINFOFLAGS

DXGK_CREATECONTEXTFLAGS

DXGK_CREATEDEVICEFLAGS

DXGKARG_BUILDPAGINGBUFFER

DXGKARGCB_CREATECONTEXTALLOCATION

DXGKCB_DESTROYCONTEXTALLOCATION

DxgkDdiCreateContext

DxgkDdiCreateDevice

DXGKRNL_INTERFACE