Triplebuffering

Triplebuffering

Die Dreifachpufferung (englisch triple buffering) beschreibt ein Konzept in der Computergrafik, bei dem der Framebuffer des Video-RAM bei Grafikkarten - auch Rahmenpuffer genannt - in drei Bereiche unterteilt wird. Ziel des Verfahrens ist es, die bei gleichzeitiger Verwendung von VSync (vertikale Synchronisation) und Doppelpufferung (double buffering) auftretenden Nachteile während des Bildaufbaus zu kompensieren.

Der Unterschied zwischen Doppel- und Dreifachpufferung liegt in der Einteilung des Framebuffers. Während bei der Doppelpufferung der Framebuffer aus zwei Pufferspeichern (Front- und Backbuffer) besteht, sind es derer drei bei der Dreifachpufferung (ein Frontbuffer und zwei Backbuffer).

Inhaltsverzeichnis

Funktionsweise

Im Frontbuffer liegt das Bild, das durch den RAMDAC gerade auf den Bildschirm gebracht wird. Im Backbuffer 1 wird das nächste Bild gerendert (berechnet). Der weitere Ablauf ist davon abhängig, wann der Swap-Befehl umgesetzt wird. Dieser wird von der GPU initiiert, wenn der nächste Frame zur Ausgabe bereitsteht und bewirkt das Vertauschen der Speicheradressen von Front- und Backbuffer (Page Flip).

  • Dieser Vorgang entspricht VSync = off
    Der Swap-Befehl wird direkt bei Beendigung der Berechnungen im Backbuffer 1 umgesetzt und damit Front- und Backbuffer vertauscht. Dabei kann es zum sogenannten Tearing kommen, bei dem das auf dem Monitor ausgegebene Bild aus u.U. mehreren aufeinanderfolgenden Frames besteht. Der Backbuffer 2 bleibt bei dieser Kombination ungenutzt. Dreifachpufferung ohne VSync ist somit Ressourcenverschwendung.
  • Dieser Vorgang entspricht VSync = on
    Die Berechnungen im Backbuffer 1 sind abgeschlossen und es wurde bereits mit dem Rendern des nächstfolgenden Bildes im Backbuffer 2 begonnen. Jetzt erfolgt die Umsetzung des Swap-Befehls. Der neue Frontbuffer (ehemals Backbuffer 1) enthält das fertig berechnete Bild und wird auf dem Monitor ausgegeben. Im neuen Backbuffer 1 (ehemals Backbuffer 2) findet die Berechnung des nächsten Frames statt. Der neue Backbuffer 2 (ehemals Frontbuffer) wurde gelöscht und steht zur weiteren Benutzung bereit.

Doppelpufferung und VSync

Durch den Einsatz von VSync wird der Swap-Befehl, der Front- und Backbuffer tauscht, so lange nicht umgesetzt, bis das aktuelle Bild aus dem Frontbuffer komplett auf dem Bildschirm dargestellt wurde. Ist die Berechnung des neuen Frames im Backbuffer bereits abgeschlossen (die GPU hat zum Rendern des neuen Frames weniger Zeit benötigt als der RAMDAC zur Darstellung des aktuellen Frames), dann kann mit weiteren Berechnungen nicht fortgefahren werden, da keine freien Ressourcen zur Verfügung stehen. Die GPU muss also mit der Umsetzung des Swap-Befehls auf das nächste VSync warten und wird somit eines Teils ihrer vollen Leistungsfähigkeit beraubt.

Dreifachpufferung und VSync

Steht ein weiterer Backbuffer zur Verfügung, dann tritt das eben beschriebene Warten nicht auf, weil die Berechnungen eben in diesem fortgesetzt werden können. Es kommt also zu keinem Leistungsverlust.

Vor- und Nachteile von Dreifachpufferung und VSync

Vorteile

  • optimale Bildqualität, da kein Tearing auftritt (grafischer Effekt, wenn während der Bildausgabe mehrere aufeinander folgende Bilder benutzt werden)
  • kein Performanceverlust

Nachteile

  • Der Framebuffer ist um bis zu 50% größer als bei Doppelpufferung
  • Die Bildausgabe ist um ein Frame verzögert

Weblinks


Wikimedia Foundation.

Игры ⚽ Нужно сделать НИР?

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”