Freigeben über


Bereitstellen nahtloser Zustandsübergänge in WDDM 1.2 und höher

Ab Windows 8 tragen mehrere Features dazu bei, Bildschirmblitze und Flimmern während des Startvorgangs, während der Übergänge aus niedrigeren Leistungszuständen und während der Übergänge zurück zur Betriebssystemsteuerung bei Treiberupgrades oder Systemfehlerprüfungen zu minimieren oder zu vermeiden. Darüber hinaus muss die Systemfirmware auf Windows 8 und späteren Computern die systemeigene Auflösung und Denkzeit des integrierten Anzeigebereichs zum Zeitpunkt des Einschaltens erkennen und diese Informationen an das Betriebssystem übergeben. Windows Display Driver Model (WDDM) 1.2 und höher müssen dieses Verhalten unterstützen.

WDDM-Mindestversion 1.2
Windows-Mindestversion 8
Treiberimplementierung – Nur vollständige Grafiken und Anzeige Obligatorisch.
WHCK-Anforderungen und -Tests

System.Client.Firmware.UEFI.GOP.Display

Device.Graphics... PnpStopStartSupport

Device.Graphics... DisplayOutputControl

Übergang von Firmware zu Betriebssystem

Alle Windows 8 Systeme für Client-SKUs müssen das UEFI-Grafikausgabeprotokoll (Unified Extensible Firmware Interface) unterstützen. Während der Startphase legt das GOP die native Zeitsteuerung und native Auflösung im integrierten Anzeigebereich des Systems fest. Wenn das Betriebssystem bereit ist, den Besitz des Displays zu übernehmen, gibt das GOP einen Framepuffer ab, der zum Scannen auf der Anzeige verwendet werden kann. Zu diesem Zeitpunkt versucht das Betriebssystem nicht, die Anzeigezeiten oder die Auflösung zurückzusetzen, sondern verwendet einfach den bereitgestellten Framepuffer, wodurch ein Bildschirmblitz eliminiert wird.

Hardwarezertifizierungsanforderungen

Informationen zu den Anforderungen, die Hardwaregeräte erfüllen müssen, wenn sie dieses Feature implementieren, finden Sie in der entsprechenden WHCK-Dokumentation unter System.Client.Firmware.UEFI.GOP.Display.

Übergang vom Betriebssystem zum Treiber

Wenn das Betriebssystem nach einem Start den Besitz der Anzeige an den WDDM-Treiber übergibt, initiiert es einen Plug & Play (PnP) Start des Geräts, indem die DxgkDdiStartDevice-Funktion aufgerufen wird. Alternativ dazu startet das Betriebssystem nach dem Fortsetzen des Ruhezustands das Gerät durch Aufrufen der DxgkDdiSetPowerState-Funktion , wobei der Parameter DeviceUid auf DISPLAY_ADAPTER_HW_ID festgelegt ist (definiert in Video.h). Zu diesem Zeitpunkt ist der Bildschirm in der Regel leer (wird schwarz gerendert), während der WDDM-Grafiktreiber die Kontrolle übernimmt.

Der Treiber kann die DxgkCbAcquirePostDisplayOwnership-Funktion (verfügbar ab Windows 8) aufrufen, um das Betriebssystem nach dem genauen Zustand des aktuellen Framepuffers und des Anzeigemodus abzufragen, der von der Firmware und dem Startladeprogramm festgelegt wurde. Mit den Informationen in der DXGK_DISPLAY_INFORMATION Struktur, die von dieser Funktion abgerufen werden, ist es möglich, dass der Treiber den Anzeigecontroller aktiv hält und keine erneute Synchronisierung des Monitors verursacht. Da der Treiber auch über detaillierte Informationen zum Framepuffer verfügt, ist es möglich, einen reibungsloseren Übergang durchzuführen.

Weitere Informationen zum PnP-Start finden Sie in Plug & Play (PnP) in WDDM 1.2 und höher.

Übergang vom Treiber zum Betriebssystem

Das Betriebssystem kann einen PnP-Stopp des Anzeigegeräts anfordern, indem es die DxgkDdiStopDevice-Funktion aufruft . Zu diesem Zeitpunkt wird der Bildschirm in der Regel leergeblendet (wird schwarz gerendert), während das Betriebssystem die Anzeigesteuerung übernimmt. Das Betriebssystem kann die DxgkDdiStopDeviceAndReleasePostDisplayOwnership-Funktion (verfügbar ab Windows 8) aufrufen, die erfordert, dass der WDDM-Treiber einen für das Auschecken konfigurierten Framepuffer einrichten muss. Das Betriebssystem kann in diesen Framepuffer gerendert werden, während es die Kontrolle über die Anzeige hat, sodass ein reibungsloser Übergang möglich ist.

Weitere Informationen zum PnP-Stopp, einschließlich zusätzlicher Szenarien, finden Sie in Plug & Play (PnP) in WDDM 1.2 und höher.

Hardwarezertifizierungsanforderungen

Weitere Informationen zu dieser Übergabe finden Sie in der entsprechenden WHCK-Dokumentation unter Device.Graphics... PnpStopStartSupport.

Wechsel zum Betriebssystem ohne Deaktivierung des Treibers

Manchmal tritt beim Betriebssystem ein nicht behebbarer Fehler auf und muss eine Systemfehlerprüfung durchführen. Wenn dies der Fall ist, gibt es bestimmte Fälle, in denen das Betriebssystem die Kontrolle über die Anzeige übernehmen muss, aber nicht die Möglichkeit hat, den WDDM-Treiber zu beenden. WDDM 1.2- und höher-Treiber sind erforderlich, um die Funktionen DxgkDdiSystemDisplayEnable und DxgkDdiSystemDisplayWrite zu implementieren, die es dem Betriebssystem ermöglichen, nahtlos in einen Zustand zu wechseln, in dem der Fehlerbildschirm angezeigt werden kann, während die grafische Benutzeroberfläche in einer hohen Auflösung und Farbtiefe beibehalten wird. Durch diesen Übergang wird eine beläsende Benutzererfahrung vermieden.

Hardwarezertifizierungsanforderungen

Informationen zu den Anforderungen, die Hardwaregeräte erfüllen müssen, wenn sie dieses Feature implementieren, finden Sie in der entsprechenden WHCK-Dokumentation unter Device.Graphics... DisplayOutputControl.

Änderungen im Windows 8 Firmwaremodus

Dies sind Änderungen am Anzeigemodus der Firmware, bevor die Firmware die Steuerung an das Betriebssystem übergibt:

WDDM 1.2- und höher-Treiber (DXGKDDI_INTERFACE_VERSION>= DXGKDDI_INTERFACE_VERSION_WIN8)
Um Anzeigeblitze weiter zu vermeiden, werden ab Windows 8 Int10-Modusänderungsanforderungen für die Firmware für WDDM 1.2- und höher-Treiber nicht aufgerufen.

Wenn außerdem eine Modusänderung auftritt, während der Monitor ausgeschaltet ist, ruft das Betriebssystem die DxgkDdiCommitVidPn-Funktion nur einmal auf, wobei der Parameter pCommitVidPnArg auf den Wert festgelegt ist, den er haben würde, wenn der Monitor aktiviert wäre, und der PathPoweredOff-Member von pCommitVidPnArg-Flags> auf TRUE festgelegt ist.

WDDM 1.0- und 1.1-Treiber (DXGKDDI_INTERFACE_VERSION<DXGKDDI_INTERFACE_VERSION_WIN8)
Für WDDM-Treiber der Versionen 1.0 und 1.1, die auf Windows 8 ausgeführt werden, werden während des Startvorgangs oder beim Fortsetzen aus dem Ruhezustand Aufrufe in den Vga-Modus in Int10 0x12 durchgeführt, die die Anzeigeauflösung auf die native hohe Auflösung des Monitors festlegen. Vor Windows 8 wurde bei einem Int10 VGA-Modus 0x12 Aufruf die Anzeigeauflösung auf 640 x 480 Pixel bei 16 Bit pro Pixel ohne blinkenden Cursor festgelegt, um das Begrüßungsbildschirmbild des Betriebssystems anzuzeigen.

Bei Treibern der WDDM-Versionen 1.0 und 1.1, die jedoch angeben, dass sie den Modus mit hoher Auflösung nicht unterstützen, wird ab Windows 8 ein Start in den VGA-Modus 0x12 die Anzeigeauflösung auf 640 x 480 Pixel bei 16 Bits pro Pixel ohne blinkenden Cursor festgelegt. Wenn das System aus dem Ruhezustand fortgesetzt wird, wird die Anzeigeauflösung weiterhin auf die native hohe Auflösung des Monitors festgelegt.

Darüber hinaus Wenn eine Modusänderung auftritt, während der Monitor ausgeschaltet ist, ruft das Betriebssystem die DxgkDdiCommitVidPn-Funktion auf, wie oben für WDDM 1.2-Treiber beschrieben, und es ruft DxgkDdiCommitVidPn ein zweites Mal mit einem leeren video present network (VidPN) in pCommitVidPnArg-hFunctionalVidPn> und keinem der inpCommitVidPnArg-Flags> festgelegten Flagwerte auf.

Diese zweiteilige Aufrufsequenz tritt auch auf, wenn das System nach dem Ruhezustand fortgesetzt wird und die Synchronisierung der Überwachung aktiviert bleiben soll. In diesem Fall sollte der Treiber keine Aktion ausführen, wenn er den zweiten Aufruf von DxgkDdiCommitVidPn empfängt.