Partager via


Résidence du pilote dans WDDM 2.0

Cette section fournit des détails sur les modifications apportées à la résidence du pilote pour windows Display Driver Model (WDDM) 2.0. Les fonctionnalités décrites sont disponibles à partir de Windows 10.

Dans cette section

Rubrique Description

Vue d’ensemble de la résidence

Avec l’introduction du nouveau modèle de résidence, la résidence est déplacée vers une liste explicite sur l’appareil au lieu de la liste de mémoires tampons par commande. Le gestionnaire de mémoire vidéo garantit que toutes les allocations d’une liste d’exigences de résidence d’appareil particulière sont résidentes avant que les contextes appartenant à cet appareil soient planifiés pour l’exécution.

Suivi de l’utilisation de l’allocation

Avec la liste d’allocations qui disparaît, le gestionnaire de mémoire vidéo n’a plus de visibilité sur les allocations référencées dans une mémoire tampon de commande particulière. Par conséquent, le gestionnaire de mémoire vidéo n’est plus en mesure de suivre l’utilisation de l’allocation et de gérer la synchronisation associée. Cette responsabilité incombe désormais au pilote de mode utilisateur. En particulier, le pilote de mode utilisateur doit gérer la synchronisation en ce qui concerne l’accès direct du processeur à l’allocation ainsi que le renommage.

Proposer et récupérer des modifications

Pour WDDM v2, les exigences relatives à Offer et Reclaim sont assouplies. Les pilotes en mode utilisateur ne sont plus nécessaires pour utiliser l’offre et la récupération sur les allocations internes. Les applications inactives/suspendues se débarrasseront des ressources internes du pilote à l’aide de l’API Trimqui a été introduite dans Microsoft DirectX 11.1.

Accès à l’allocation non-résidente

L’accès de l’unité de traitement graphique (GPU) aux allocations qui ne sont pas résidentes est illégal et entraîne la suppression d’un appareil pour l’application qui a généré l’erreur.

Il existe deux modèles distincts de gestion de tels accès non valides selon que le moteur d’erreur prend ou non en charge l’adressage virtuel GPU :

  • Pour les moteurs qui ne prennent pas en charge l’adressage virtuel GPU et qui utilisent la liste d’allocation et d’emplacement de correctif pour corriger les références de mémoire, un accès non valide se produit lorsque le pilote de mode utilisateur envoie une liste d’allocation qui fait référence à une allocation qui n’est pas résidente sur l’appareil (c’est-à-dire que le pilote de mode utilisateur n’a pas appelé MakeResidentCb sur cette allocation). Lorsque cela se produit, le noyau graphique place le contexte/l’appareil défectueux en erreur.
  • Pour les moteurs qui prennent en charge l’adressage virtuel GPU, mais qui accèdent à une adresse virtuelle GPU non valide, soit parce qu’il n’y a pas d’allocation derrière l’adresse virtuelle, soit parce qu’il existe une allocation valide mais qu’elle n’a pas été rendue résidente, le GPU est censé déclencher une erreur de page irrécupérable sous la forme d’une interruption. Lorsque l’interruption d’erreur de page se produit, le pilote en mode noyau doit transférer l’erreur au noyau graphique via une nouvelle notification d’erreur de page. À la réception de cette notification, le noyau graphique lance une réinitialisation du moteur sur le moteur défaillant et met le contexte/l’appareil défectueux en erreur. Si la réinitialisation du moteur échoue, le noyau graphique promeut l’erreur en une détection et une récupération complètes du délai d’expiration large de l’adaptateur (TDR).

Traiter les budgets de résidence

Dans WDDM v2, les processus se voient attribuer des budgets pour la quantité de mémoire qu’ils peuvent conserver résident. Ce budget peut changer au fil du temps, mais ne sera généralement imposé que lorsque le système est sous pression de la mémoire. Avant Microsoft Direct3D 12, le budget est géré par le pilote de mode utilisateur sous la forme de notifications De trim et d’échecs MakeResident avec STATUS_NO_MEMORY. La notification TrimToBudget , l’évicte et les appels MakeResident ayant échoué retournent tous le budget le plus récent sous la forme d’une valeur entier NumBytesToTrim qui indique la quantité à réduire pour s’adapter au nouveau budget.