Thema:
Re:Blöde Frage G-Sync flat
Autor: Xtant
Datum:19.01.18 02:43
Antwort auf:Re:Blöde Frage G-Sync von makaimura

"Der PC" im Sinne der Grafikkarte schreibt immer Full Frames.

Das Tearing kommt vom Monitor, wenn eben V-Sync deaktiviert ist. Sprich: Monitor baut gerade ein Bild auf, da liefert die Grafikkarte schon das Nächste an. Monitor schaltet aufs nächste Bild um. Angezeigt wird nun z.B. in der oberen Bildschirmhälfte  das "alte" Bild und in der unteren Hälfte das aktuelle.

Aktiviertes V-Sync verhindert nun das "Umspringen" und somit Tearing. Allerdings waren bis zu Freesync/G-Sync die LCDs Festfrequenzmonitore, meist mit einer Wiederholrate von 60 Hz. Der Monitor kann also nur entweder 60 Bilder pro Sekunde bzw. ganzzahlige Teiler davon darstellen, also 30, 15, 12, 10 usw.

Beispiel: Eine Grafikkarte schafft bei einem Spiel locker 80-90 Bilder/s. Ein ungesyncter Monitor mit 60 Hz Festfrequenz springt also ständig zu einem neuen Bild, massives Tearing entsteht. Bei activiertem V-Sync schreibt er brav seine  60 Bilder/s, gleichmäßig alle 16,667 ms ein neues. Genauer gesagt gibt der V-Sync auch "Feedback" an die Grafikkarte, die dann eh nur  60 Bilder/s fabriziert, mehr macht aufgrund V-Sync un der mximalen Bildwiederholrate d es Monitors von 60 Hz eh keinen Sinn.

(Kurzer Einschub: Eigentlich ist es an vielen Stellen falsch, wenn ich "Grafikkarte" schreibe. Für vieles ist schon die davorliegende Software, also das Spiel, verantwortlich. v-Sync kann man ja oft in Spielen selbst einstellen, entsprechend produziert dann die Software erst gar nicht mehr Bilder).

Weiteres Beispiel: Mittelprächtige Grafikkarte in Verbindung mit einem Spiel, dessen grafischer Anspruch munter schwankt. Es werden, sagen wir mal, ständig schwankende Frameraten zwischen 70 und 25 Bilder/s produziert. Ohne V-Sync bleibts zwar dann halbwegs flüssig (auch wenn man die schwankende Framerate natürlich merkt), aber da ständig nur  Teilbilder dargestellt werden, hast du halt wieder das (massive) Tearing. Tearing ist übrigens natürlich dann umso schlimmer, je mehrsich zwischen zwei Bildern am "Szeanrio" ändert, also z.B. bei schnellen Schwenks in  einem 3D-Shooter.

Hier sollen nun noch schnell die Buffer abgehandelt werden. "Double Buffering" ist als Minimum üblich, in grauen Vorzeiten gabs nur "Single Buffering". Die Grafikkarte hat ihr Bild direkt in den Videospeicher gemalt, von wo es der Monitor abgeholt hat. hatte die Grafikkarte  nochkeine neues Bild bereit gestellt oder "überholte" der monitor beim Auslesen die schreibende Grafikkarte wurden schwarze (Teil-)bilder reingeschoben - das berüchtigte Flickering, nicht zu verwechsdelnmit dem Tearing. Die Krux war, dass die alten CRTs noch bei 60 Hz Refresh rate generell zum Flackern geneigt haben. Stellte man  die rate hoch, war dann wiederumdie Gefahr groß, dass es quasi Grafikkartenseitig zum Flackern kam, da nicht genügend Bilder da waren.

Beim Double Buffering gibt es einen Back Buffer und Front Buffer. Der Front Buffer ist der Speicher, aus dem sichd er Monitor das neue Bild rausholt. Hat die Grafikkarte ein neues Bild fertig in den Back Buffer geschrieben, passieeren verschiedene Sachen, je nachdem, ob VSync aktiviert ist oder nicht.
Ohne VSync: Die Buffer werden "geswappt", der Back Buffer ist nun der Front Buffer und der Monitor fängt sofort an, dieses neue Bild auszulesen, selbst wenn er gerade noch mitten beim alten Bild war ---> Tearing.
Mit VSync wirds dann zum Problem, wenn die Grafikkarte gerade keine 60 Frames schafft, vor allem, wenn sie knapp unter 60 schafft. Der Monitor dreht eine Ehrenrunde, weil noch kein neues Bild vorhanden und stellt das gleiche alte Bild nochmal dar. Kurz darauf hat die Grafikkarte aber ihr neues Bild dann doch fertig in den Back Buffer gerendert. Dummerweise muss das jatzt aber solange im Back Buffer verweilen, bis der Monitor das aktuelle (alte) Bild fertig ausgelesen/dargestellt hat. Erst  dann werden die Buffer wieder getauscht. Das ist doof, denn dadurch werden von den 55, 56 Frames, die die Grafikkarte gerade könnte, nur 30 dargestellt (wegen VSync). Das jetzt aus dem Back Buffer geholte Bild kann also unter  Umständen schon "uralt" sein. Das führt nicht nur zu den weiter vorn von JPS beschriebenen 30 fps-Rucklern, sondern uU auch zu einem deutlich spürbaren Input Lag.

Die Lösung heißt Triple Buffering. Hier gibt es zwei Back Buffer, welche die Grafikkarte unentwegt mit neu gerenderten Bildern befüllt, es mussnicht geartet werden, bis der eine Back Buffer endlich mit dem Front Buffer geswappt werden kann. Die Folge ist schlicht und ergreifend, dass im Vergleich zum Double Buffer  immer ein deutlich "frischeres" Bild an den Front Bufferund somit  Monitor geschickt werden kann - und zwar egal, ob die Grafikkarte nun gerade die 60 fps schafft oder nicht. Sicher, auch mit Triple Buffering fällt es (negativ) auf, wenn nur noch 30 fps dargestellt werden - das Ganze ist aber deutlich "smoother" als mit Double Buffering, der Input Lag deutlich reduziert.

So, und nun wieder zu G-Sync/Freesync. ich muss gestehen, dass ichnoch nie so einen Monitor in Aktion gesehen habe, ich habe mich auch nicht weiter damit beschäftigt, weiß also gar nicht genau, was da nun technisch genau abläuft. Die Wirkung ist jedenfalls, dass damit weder die Grafikkarte auf dem Monitor warten muss noch umgekehrt. Also keine 30- oder gar 15-fps-Drops. Es werden aber dennochimmer nur ganze Bilder angezeigt, also auch kein Tearing wie bei VSync off. Best of both worlds, sozusagen.

Eine Frage an die entsprechenden Monitor-Besitzer: Wie ist das, wenn ein Spiel permanent stark schwankende Frameraten produziert? dann kann ichmir vorstellen, dass das G-Sync-Feature an seine Grenzen stößt...

So, genug geschrieben. Ich hoffe, es hat etwas geholfen. :)


< antworten >