Freigeben über


Treiberresidenz in WDDM 2.0

Dieser Abschnitt enthält Details zu den Änderungen der Treiberresidenz für windows Display Driver Model (WDDM) 2.0. Die beschriebene Funktionalität ist ab Windows 10 verfügbar.

In diesem Abschnitt

Thema BESCHREIBUNG

Übersicht über die Residenz

Mit der Einführung des neuen Residenzmodells wird die Residency in eine explizite Liste auf dem Gerät anstelle der Pufferliste pro Befehl verschoben. Der Videospeicher-Manager stellt sicher, dass alle Zuordnungen in einer bestimmten Geräteresidenzanforderungsliste resident sind, bevor kontexte, die zu diesem Gerät gehören, für die Ausführung geplant werden.

Zuordnungsnutzungsnachverfolgung

Wenn die Zuordnungsliste gelöscht wird, hat der Videospeicher-Manager keinen Einblick mehr in die Zuordnungen, auf die in einem bestimmten Befehlspuffer verwiesen wird. Aus diesem Grund ist der Videospeicher-Manager nicht mehr in der Lage, die Zuordnungsnutzung nachzuverfolgen und die zugehörige Synchronisierung zu verarbeiten. Diese Verantwortung fällt nun auf den Benutzermodustreiber. Insbesondere muss der Benutzermodustreiber die Synchronisierung in Bezug auf den direkten CPU-Zugriff auf die Zuordnung sowie die Umbenennung übernehmen.

Angebots- und Rückforderungsänderungen

Für WDDM v2 werden die Anforderungen rund um Angebot und Reclaim gelockert. Benutzermodustreiber sind nicht mehr erforderlich, um Angebot und Rückforderung für interne Zuordnungen zu verwenden. Anwendungen im Leerlauf oder angehaltene Anwendungen entfernen interne Treiberressourcen mithilfe der Trim-API, die in Microsoft DirectX 11.1 eingeführt wurde.

Zugriff auf nicht gebietsansässige Zuordnungen

Der Zugriff der Grafikverarbeitungseinheit (Graphics Processing Unit, GPU) auf Zuordnungen, die nicht ansässig sind, ist unzulässig und führt dazu, dass ein Gerät für die Anwendung entfernt wird, die den Fehler generiert hat.

Es gibt zwei unterschiedliche Modelle für die Behandlung eines solchen ungültigen Zugriffs, abhängig davon, ob die fehlerhafte Engine die virtuelle GPU-Adressierung unterstützt oder nicht:

  • Für Engines, die keine virtuelle GPU-Adressierung unterstützen und die Zuordnungs- und Patchspeicherortliste zum Patchen von Speicherverweise verwenden, tritt ein ungültiger Zugriff auf, wenn der Benutzermodustreiber eine Zuordnungsliste übermittelt, die auf eine Zuordnung verweist, die nicht auf dem Gerät ansässig ist (d. h. der Benutzermodustreiber hat für diese Zuordnung nicht MakeResidentCb aufgerufen). In diesem Fall stellt der Grafikkern den fehlerhaften Kontext/das fehlerhafte Gerät in einen Fehler.
  • Für Engines, die die virtuelle GPU-Adressierung unterstützen, aber auf eine virtuelle GPU-Adresse zugreifen, die ungültig ist, entweder weil es keine Zuordnung hinter der virtuellen Adresse gibt oder eine gültige Zuordnung vorhanden ist, aber nicht als resident eingestuft wurde, wird von der GPU erwartet, dass sie einen nicht behebbaren Seitenfehler in Form eines Interrupts auslöst. Wenn die Seitenfehlerunterbrechung auftritt, muss der Kernelmodustreiber den Fehler über eine neue Seitenfehlerbenachrichtigung an den Grafikkern weiterleiten. Nach Erhalt dieser Benachrichtigung initiiert der Grafikkern einen Engine-Reset für die fehlerhafte Engine und versetzt den fehlerhaften Kontext/das fehlerhafte Gerät in einen Fehler. Wenn das Zurücksetzen der Engine nicht erfolgreich ist, wird der Fehler vom Grafikkern zu einer vollständigen Timeouterkennung und -wiederherstellung (TDR) des gesamten Adapters hochgeauft.

Verarbeiten von Residenzbudgets

In WDDM v2 werden Prozessen Budgets für die Speichergröße zugewiesen, die sie lokal behalten können. Dieses Budget kann sich im Laufe der Zeit ändern, wird jedoch in der Regel nur auferlegt, wenn das System unter Speicherdruck steht. Vor Microsoft Direct3D 12 wird das Budget vom Benutzermodustreiber in Form von Trim-Benachrichtigungen und MakeResident-Fehlern mit STATUS_NO_MEMORY verwaltet. TrimToBudget-Benachrichtigungen , Evict- und fehlgeschlagene MakeResident-Aufrufe geben alle das neueste Budget in Form eines ganzzahligen NumBytesToTrim-Werts zurück, der angibt, wie viel gekürzt werden muss, um in das neue Budget zu passen.