Freigeben über


Freigeben des Sicherungsspeichers mit KMD

Ab Windows 11 Version 22H2 (WDDM 3.1) wurde WDDM erweitert, um den Zugriff auf einen Grafikzuweisungs-Backing-Store vom Kernelmodustreiber (KMD) aus zu ermöglichen. Ein Sicherungsspeicher bezieht sich auf einen zugesicherten Speicherpuffer, der den Inhalt einer Grafikzuordnung enthält, wenn er nicht im Videospeicher enthalten ist.

Dieses Feature ermöglicht sowohl dem Benutzermodustreiber (UMD) als auch dem KMD die Möglichkeit, auf denselben Zuordnungsspeicher zuzugreifen. Diese Funktion kann verwendet werden, wenn UMD auf dem Host oder auf einem virtuellen Computer mit GPU-Paravirtualisierung (GPU-PV) ausgeführt wird.

Dieses Feature wurde wieder zu Windows 10, Version 20H1, portiert. Der DDI ist für WDDM 3.1-Treiber oder höher verfügbar.

WDDM-Grafikzuweisungen und Sicherungsspeicher

Jede Grafikzuweisung im WDDM-Modell verfügt über einen Sicherungsspeicher. Eine Grafikzuweisung wird erstellt, wenn UMD die Funktion D3DKMTCreateAllocation von Dxgkrnl aufruft. UMD übergibt private Daten für diese Zuordnung, die Dxgkrnl über einen Aufruf von DxgkddiCreateAllocation an KMD übergibt. KMD gibt die gewünschten Zuordnungsflags an Dxgkrnl zurück.

Überprüfen der Verfügbarkeit von Funktionen

Um zu überprüfen, ob die Funktion für die Freigabe des Sicherungsspeichers verfügbar ist, muss KMD zuerst einen der folgenden Rückrufe aufrufen, wobei featureId auf DXGK_FEATURE_SHARE_BACKING_STORE_WITH_KMD festgelegt ist:

Die Funktion kann nur verwendet werden, wenn der Rückruf erfolgreich ist und Enable auf TRUE festgelegt ist.

Ablauf des Features

Nachdem KMD erfolgreich festgestellt wurde, dass die Funktion aktiviert ist, ruft UMD D3DKMTCreateAllocation auf, um eine gemeinsam genutzte CPU-sichtbare Zuordnung zu erstellen, und weist KMD über private Daten an, dass die Zuordnung für KMD freigegeben werden muss. Im Verlauf dieses Aufrufs erfolgt Folgendes:

  • KMD setzt das Flag ShareBackingStoreWithKmd von DXGK_ALLOCATIONINFOFLAGS2, wenn das Betriebssystem den Rückruf DxgkddiCreateAllocation von KMD aufruft. Wenn das Feature nicht aktiviert ist, darf KMD das Flag ShareBackingStoreWithKmd nicht festlegen.

  • Dxgkrnl ruft die DXGKDDI_SETALLOCATIONBACKINGSTORE DDI auf, um KMD eine Kernelmodusadresse für den Zuordnungssicherungsspeicher zuzuweisen.

  • UMD ruft D3DKMTLock2 auf, um die Benutzermodusadresse der Zuordnung abzurufen.

Eigenschaften der Zuordnung

Die auf diese Weise erstellte Zuordnung muss über die folgenden Eigenschaften verfügen:

  • Die Zuordnung darf nur im Systemspeichersegment erfolgen.
  • Die Zuordnung muss als freigegeben erstellt werden.
  • Die Zuordnung kann den vorhandenen Systemspeicher nicht als Sicherungsspeicher verwenden.
  • UMD kann jeden Vorgang wie bei einer regulären Zuordnung ausführen.
    • UMD kann D3DKMTLock2 aufrufen , um einen Zeiger auf die Zuordnung abzurufen.
    • UMD kann D3DKMTMakeResident aufrufen, um die Zuordnung durch die GPU zugänglich zu machen.