한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

Game-Lag-Whitepaper › L1 Spielprozess auf dem Client

V-Sync und Render-Warteschlange V-Sync, render queue

Ursachen-ID cg-vsync · Hauptzuständig Client-Entwicklung (Entwicklungsteam) · Beteiligt Extern (Extern)

In der interaktiven Fassung mit Grafiken und Experimenten öffnen →

Die GPU legt fertige Frames in eine Warteschlange und gibt sie im Takt des Monitors aus. Solange sie dort warten, kommt die Eingabe verzögert an.

Warum Grafiktreiber legt vorab 1–3 Frames in die Warteschlange → Folge Bis eine Eingabe auf dem Bildschirm erscheint, dauert es entsprechend länger → Auf dem Bildschirm Ping niedrig, Steuerung trotzdem schwer und träge

Symptome
Input-Lag, Ruckeln
Faktoren
Latenz
Wer ist betroffen
Nur ich
Wann
Immer
Zuständigkeit
Hauptzuständig Client-Entwicklung (Entwicklungsteam) · Beteiligt Extern (Extern)
Aufgaben Entwicklungsteam
Low-Latency-Modus unterstützen, Frame-Warteschlange verkürzen, Option für ein Framelimit knapp unter der Bildwiederholrate anbieten, auf Smartphones Frame-Pacing aktivieren.
Aufgaben Extern
Spielern empfehlen, mit einem Monitor mit variabler Bildwiederholrate ein Framelimit knapp unter der Bildwiederholrate zu setzen und den Low-Latency-Modus im Grafiktreiber einzuschalten.
Größenordnungen
Bei 60 Hz kostet jeder Frame 16,7 ms. Ist die CPU schneller als die GPU oder der Bildwiederholtakt und läuft die Warteschlange mit drei Frames voll (Standard in DirectX 11), kommen 50 ms dazu. Bei V-Sync mit Doppelpufferung wartet ein Frame, der 17 ms gebraucht hat, bis zur nächsten Bildaktualisierung (33,3 ms), und so lange ist der vorige Frame ein zweites Mal zu sehen.
Im Graphen
Von Anfang an dauerhaft hoch · Latenz von der Eingabe bis zur Anzeige
Wo nachsehen
Die PresentMon-Werte MsClickToPhotonLatency und MsAllInputToPhotonLatency (von Maus- oder Tastatureingabe bis zur Ausgabe an den Bildschirm) sowie DisplayLatency bei wechselnden Einstellungen für V-Sync, Low-Latency-Modus und Framelimit vergleichen. MsPCLatency (vom Eingang der Eingabe im PC bis zur Ausgabe an den Bildschirm) wird nur aufgezeichnet, wenn das Spiel PC-Latency-Events ausgibt
Spricht dafür
Mit V-Sync oder ohne Framelimit steigt diese Latenz um ein bis zwei Frames (einige Dutzend ms), mit Low-Latency-Modus oder einem Framelimit knapp unter der Bildwiederholrate sinkt sie. Der Ping bleibt unverändert
Spricht dagegen
Latenz im PC niedrig, Steuerung trotzdem träge: „Latenz von Display, Eingabegeräten und Frame Generation“. Ping hoch: Netzwerkseite
Prüfmittel
Prüfung in der Umgebung des Spielers
Mehr dazu
V-Sync (vertikale Synchronisation) gibt neue Frames nur in dem Moment aus, in dem der Monitor das Bild wechselt. Tearing verschwindet, aber das Warten auf diesen Moment verzögert die Eingabe. Fallen die FPS unter 60, springt die Ausgabe zwischen 60 und 30 hin und her, und das Bild ruckelt. Monitore mit variabler Bildwiederholrate wechseln das Bild dann, wenn ein Frame fertig ist, und verkürzen so diese Wartezeit. Auf Smartphones passiert dasselbe. Gibt ein 30-FPS-Spiel seine Frames auf einem 60-Hz-Display nicht gleichmäßig aus, liegt der Durchschnitt zwar bei 30 FPS, die einzelnen Frames bleiben aber unterschiedlich lange stehen, etwa 49, 16 und 33 ms, und das Bild ruckelt (Beispiel aus der Android-Entwicklerdokumentation). Abhilfe schaffen die Frame-Pacing-Bibliothek von Android (gleichmäßige Abstände bei der Frame-Ausgabe) oder entsprechende Optionen der Engine.

Quellen

  1. IDXGIDevice1::SetMaximumFrameLatency Microsoft
    Standardwert für die Zahl der Frames, die der Treiber in die Warteschlange legen darf: 3 (1–16)
  2. Reduce latency with DXGI 1.3 swap chains Microsoft
    Present blockiert, bis in der Warteschlange Platz ist, sodass zwischen Zeichnen und Anzeige fast ein weiterer Frame Wartezeit entsteht. Eine Waitable Swap Chain verringert das
  3. Frame Pacing library Android (Google)
    Liegt auf einem 60-Hz-Display kein neuer Frame vor, wird der vorige erneut angezeigt. Beispiel eines 30-FPS-Spiels mit unregelmäßigen Frametimes wie 49, 16 und 33 ms
  4. PresentMon Capture Application (README-CaptureApplication.md) Intel
    MsPCLatency (vom Eingang der Eingabe im PC bis zur Ausgabe an den Bildschirm), MsClickToPhotonLatency (Mausklick bis Bildschirm), MsAllInputToPhotonLatency (Tastatur- oder Mauseingabe bis Bildschirm), DisplayLatency (Übergabe des Frames bis zur Ausgabe an den Monitor)
  5. PresentMon Console Application (README-ConsoleApplication.md) Intel
    MsPCLatency wird nur aufgezeichnet, wenn die App PC-Latency-Events ausgibt (--track_pc_latency), MsAllInputToPhotonLatency bezieht sich auf Tastatur- und Mauseingaben

Verwandte Ursachen

Gleiche Schicht: L1 Spielprozess auf dem Client

Ursachen aus anderen Schichten mit demselben Symptom (Input-Lag)

Karte in der interaktiven Fassung mit Grafiken und Experimenten ansehen