DDI- und dList-DLL-Unterstützung für Hybridsysteme
Die Unterstützung für adapterübergreifende Ressourcen in einem Hybridsystem wurde ab Windows 8.1 (WDDM 1.3) eingeführt. Die folgenden Benutzermodus- und Kernelmodusfunktionen, Strukturen und Enumerationen sind verfügbar:
- D3D10_DDI_RESOURCE_MISC_FLAG-Enumeration
- D3DDDI_RESOURCEFLAGS2 Struktur
- D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS Struktur
- D3DKMDT_GDISURFACEDATA Struktur
- D3DKMDT_GDISURFACETYPE-Enumeration
- DXGK_DRIVERCAPS Struktur
- DXGK_VIDMMCAPS Struktur
- pfnQueryDListForApplication1-Funktion
Ab Windows Server 2022 (WDDM 2.9) wurde das Feature "Cross-Adapter Resource Scan-Out " (CASO) eingeführt. Für CASO wurde die folgende zusätzliche Unterstützung hinzugefügt:
- pfnQueryDListForApplication2-Funktion (hinzugefügt)
- D3DDDI_DLIST_QUERY_RESULT-Enumeration (hinzugefügt)
- D3DDDI_DLIST_QUERY_DECISION_FACTOR-Enumeration (hinzugefügt)
- NoHybridDiscreteDListDllSupport wurde der DXGK_DRIVERCAPS-Struktur hinzugefügt.
- CrossAdapterResourceTexture und CrossAdapterResourceScanout wurden der DXGK_VIDMMCAPS-Struktur hinzugefügt.
Hinweis
Unter Windows Server 2022 (WDDM 2.9) und höheren Betriebssystemversionen muss ein Benutzermodusanzeigetreiber (UMD) in einem Hybridsystem den pfnQueryDListForApplication2-DDI unterstützen, der pfnQueryDListForApplication1 ersetzt, unabhängig davon, ob unterstützung für CASO implementiert wird.
Einrichten der dList-DLL
Eine dList ist eine Liste von Anwendungen, die adapterübergreifende freigegebene Oberflächen für hochleistungsfähiges Rendering auf der diskreten GPU benötigen.
Die UMD der diskreten GPU installiert eine separate, kleine dList-DLL , die die PfnQueryDListForApplication2-Funktion exportiert. Das Betriebssystem selbst bestimmt nicht, auf welcher GPU eine Anwendung ausgeführt werden soll. Stattdessen ruft die Direct3D-Runtime pfnQueryDListForApplication2 während der Direct3D-Initialisierung höchstens einmal auf.
Der Treiber muss eine aktuelle Liste von Prozessinformationen abfragen, um zu bestimmen, ob der Prozess die höhere Leistung einer diskreten GPU anstelle der integrierten GPU benötigt.
Um eine optimale Leistung zu erzielen, sollte die DLL Folgendes ausführen:
- Größe unter 200 KB
- Halten Sie Die Zuordnungen auf ein Minimum
- Sie können von pfnQueryDListForApplication2 in unter 4 ms zurückkehren.
Registrieren der dList-DLL
Die UMD stellt den Namen der kleinen dList-DLL in ihrer INF-Datei unter den Registrierungsschlüsseln UserModeDListDriverName und UserModeDListDriverNameWow bereit, letzteres unter dem Registrierungseintrag Wow64 . Hier finden Sie beispielweise INF-Code:
[Xxx_SoftwareDeviceSettings]
...
HKR,, UserModeDListDriverName, %REG_MULTI_SZ%, dlistumd.dll
HKR,, UserModeDListDriverNameWow, %REG_MULTI_SZ%, dlistumdwow.dll