- Double Buffering
-
Doppelpufferung (englisch double buffering) beschreibt ein Konzept in der Computergrafik, bei dem der Framebuffer (Bildspeicher) des Video-RAM bei Grafikkarten in zwei Bereiche unterteilt wird. Ziel des Verfahrens ist die Gewährleistung einer kontinuierlichen Bildfrequenz ohne Flackern.
Bevor Doppelpufferung eingeführt wurde, unterteilte man den Framebuffer nicht. Bildberechnung und Monitorausgabe fanden also parallel statt. Damit schwankte die Bildfrequenz je nach Szenenkomplexität und das Bild flackerte. Dies entsteht, wenn während der Ausgabe noch in den gleichen Framebuffer geschrieben wird.
Inhaltsverzeichnis
Funktionsweise
Der Framebuffer des Grafikkartenspeichers wird in Front- und Backbuffer unterteilt. Während durch den RAMDAC der Frontbuffer ausgelesen und auf den Bildschirm dargestellt wird, berechnet die GPU im Backbuffer das nächstfolgende Bild. Nach Abschluss dieser Berechnung ist die Ausführung des Swap-Befehls - das ist die Vertauschung der Speicheradressen von Front- und Backbuffer (Page Flip) - abhängig von VSync.
- Bei deaktiviertem VSync wird der Tausch sofort vollzogen, unabhängig davon, wie weit der RAMDAC mit der Bilddarstellung aus dem Frontbuffer ist. Der Kathodenstrahl, der das Monitorbild erzeugt, beginnt aber nicht von vorn. Dieser fährt an der Stelle fort, wo er vor dem Puffertausch aufgehört hat. Das führt dazu, dass ein auf dem Monitor dargestelltes Bild zum Teil aus mehreren aufeinanderfolgenden Teilbildern zusammensetzt ist. Diesen Effekt nennt man Tearing.
- Bei aktiviertem VSync wird mit dem Vertauschen solange gewartet, bis der RAMDAC die Darstellung des aktuellen Bildes aus dem Frontbuffer beendet hat. Dies wird mit dem VSync-Signal angezeigt. In der Zwischenzeit kann keine neue Bildberechnung stattfinden, weil die Ergebnisse in keinem freien Puffer abgelegt werden können. Damit wird die Leistungsfähigkeit der Grafikkarte künstlich reduziert. Dieses Problem wird bei der Dreifachpufferung (triple buffering) durch Einführung eines weiteren Backbuffers kompensiert.
Nach Ausführung des Swap-Befehls (dem Tausch von Front- und Backbuffer) beginnt der ganze Zyklus wieder von vorn.
Vor- und Nachteile von Doppelpufferung
Vorteile
- flüssiger und ruckelfreier Bildaufbau
Nachteile
- deaktiviertes VSync führt besonders bei hoher Bildfrequenz zu Tearing
- aktiviertes VSync führt zum Teil zu hohem Performanzverlust
- doppelte Framebuffergröße gegenüber einfacher Pufferung
Wechselpuffertechnik
In anderen Bereichen (vor allem in Echtzeit-Anwendungen) wird die Doppelpufferung als Wechselpuffertechnik bezeichnet. Ein Wechselpuffer entspricht einem Ringpuffer mit zwei Plätzen (Erzeuger-Verbraucher-Problem).
Wikimedia Foundation.