DXGKDDI_SUSPENDCONTEXT fonction de rappel (d3dkmddi.h)
DxgkddiSuspendContext demande au GPU de suspendre un contexte. Si le GPU ne reconnaît pas l’achèvement de la suspension dans le délai d’attente (détection et récupération du délai d’attente), le système d’exploitation détecte le délai d’expiration du moteur et effectue une réinitialisation du moteur.
Syntaxe
DXGKDDI_SUSPENDCONTEXT DxgkddiSuspendcontext;
NTSTATUS DxgkddiSuspendcontext(
IN_CONST_HANDLE hAdapter,
IN_CONST_PDXGKARG_SUSPENDCONTEXT pSuspendContext
)
{...}
Paramètres
hAdapter
[in] Contexte matériel à préemption et à marquer comme suspendu. Ce type de demande de préemption n’a pas de période de grâce et devrait être respecté par le GPU dès que possible.
pSuspendContext
[in] Pointeur vers une structure de DXGKARG_SUSPENDCONTEXT qui contient des arguments supplémentaires pour cette fonction.
Valeur retournée
DxgkddiSuspendContext retourne STATUS_SUCCESS si le contexte est déjà suspendu au moment de cet appel. Sinon, cette valeur est définie sur STATUS_PENDING, et l’opération de suspension est terminée lorsque contextSuspendFence est signalé via une interruption.
Remarques
Inscrivez votre implémentation de cette fonction de rappel en la définissant dans DRIVER_INITIALIZATION_DATA.
Même si la préemption de tourniquet peut être lancée par le GPU, le système d’exploitation a toujours besoin d’un moyen de préempter le contexte pour d’autres raisons ; par exemple, s’il doit déplacer ses allocations ou effectuer une transition d’alimentation GPU.
La valeur de suspension de contexte est nécessaire pour gérer les cas où le système d’exploitation suspend un contexte, n’attend pas l’accusé de réception de suspension, reprend et suspend à nouveau un contexte. La valeur suspend permet au système d’exploitation de faire la distinction entre l’accusé de réception de suspension précédent et le dernier.
Une fois qu’un contexte est suspendu, il est supposé que toutes les références à celui-ci ont disparu du GPU et que le système d’exploitation est libre de détruire le contexte ou de déplacer sa mémoire. Contrairement à WDDM 2.3 ou version antérieure, aucune commande de commutateur de contexte NULL distincte (précédemment indiquée par l’indicateur ContextSwitch dans DxgkDdiSubmitCommandVirtual) n’est présente en mode de planification WDDM 2.4, car DxgkddiSuspendContext est censé effectuer ce travail.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | d3dkmddi.h |