DXGKDDI_SUSPENDCONTEXT fonction de rappel (d3dkmddi.h)
DxgkddiSuspendContext indique au GPU de suspendre un contexte. Si le GPU ne reconnaît pas l’achèvement de la suspension dans le délai d’expiration (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 marqué comme suspendu. Ce type de demande de préemption n’a pas de période de grâce et devrait être honoré par le GPU dès que possible.
pSuspendContext
[in] Pointeur vers une structure DXGKARG_SUSPENDCONTEXT qui contient des arguments supplémentaires pour cette fonction.
Valeur de retour
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éemption du 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 du 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 de suspension 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 sont passées 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) est présente en mode de planification WDDM 2.4, car DxgkddiSuspendContext est censé effectuer ce travail.
Exigences
Exigence | Valeur |
---|---|
d’en-tête | d3dkmddi.h |