PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Verständnisfrage] Wieviel RAM bei Tripple Buffering


Azubi
2011-05-28, 14:13:32
Hallo,

ich habe da mal eine - wahrscheinlich - dumme Frage. Ich spiele immer mit VSync an und tripple Buffering.

Angenommen ich hätte 512MB RAM auf der Grafikkarte.
Ein Spiel würde ca. 120MB für Texturen, AA, AF usw. belegen.

Rechne ich dann richtig wenn ich für den benötigten RAM der Grafikkarte mit mindestens

2 x 120MB = 240MB für Double Buffering kalkuliere
und
3 x 120MB = 360MB für Tripple Buffering kalkuliere?

Es werden doch immer min. 2 oder 3 komplette Bildseiten in den Speicher gesetzt, oder?

Dann wäre noch die Frage: Werte ich die Grafik im Spiel durch höhere Texturen um einiges auf und der Verbrauch des Spiels würde nun ca. 180MB sein. Kann ich dann bei Tripple Buffering einfach mit 3 x 180 MB rechnen für den benötigten RAM der Grafikkarte oder kommt da irgenwoher noch mehr dazu? Ah ja, und was geschieht eigentlich wenn ich mit Tripple Buffering mehr RAM brauche als die Grafikkarte hat?

Acid-Beatz
2011-05-28, 15:16:15
Hey,
zu ersterem kann ich dir nix verbindliches sagen, die Rechnung sollte aber imho stimmen.
Zu letzterem: Deine Grafikkarte holt sich dann einfach den Speicher, den sie nicht hat von deinem Arbeitsspeicher. Ist allerdings relativ langsam und sollte vermieden werden ... aber des merkst du dann schon ;)


Greez

AintCoolName
2011-05-28, 15:27:39
Meiner Meinung nach handelt es sich bei dem Buffer um den FrameBuffer der nur das Bild enthält was angezeigt werden soll. Die Texturen u.s.w sind darin nicht enthalten und verdoppeln oder verdreifachen sich auch nicht. Also macht das bei einem FullHD Bild (1920*1080) gerade mal 6MB pro Buffer aus.

Tesseract
2011-05-28, 15:40:11
double/triplebuffer bezieht sich auf den framebuffer und hat nix mit den texturen zutun. wieviel platz der framebuffer genau belegt hängt von der implementierung und ein paar einstellungen ab aber mehr als ein paar MB sollten das eigentlich nicht sein, egal wieviele texturen und sonstiges zeug noch im grakaram rumkugelt.

Leonidas
2011-05-28, 16:39:07
Ja. Das TripleBuffering RAM frisst, war eine Angelegenheit bei 32-MB-Karten. Heutzutage egal.

Azubi
2011-05-28, 16:41:47
double/triplebuffer bezieht sich auf den framebuffer und hat nix mit den texturen zutun. wieviel platz der framebuffer genau belegt hängt von der implementierung und ein paar einstellungen ab aber mehr als ein paar MB sollten das eigentlich nicht sein, egal wieviele texturen und sonstiges zeug noch im grakaram rumkugelt.

Ok, kann ich also grob sagen:

Texturen und was sonst noch so anfällt können so bei 2/3 des RAMs liegen. Damit wäre ich dann immer auf der sicheren Seite. Egal ob mit AA, AF und Tripple Buffering oder ohne all dem.

Ich frage deshalb nach, weil ich einen kleinen Grafik-Guide für Anfänger zu Morrowind (http://forum.worldofplayers.de/forum/showthread.php?t=1000950) geschrieben habe. Nun versuche ich die Einstellungen ein wenig zu erklären, kann aber nur auf mangelhafte Informationen aus einem englischen Forum zurückgreifen.

RavenTS
2011-05-28, 17:17:39
...kann aber nur auf mangelhafte Informationen aus einem englischen Forum zurückgreifen.


Sollte da nicht Wikipedia eine gute Anlaufstelle sein um einfache Dinge wie TripleBuffering im Wesentlichen erklären zu können.?! :wink:

Spasstiger
2011-05-29, 12:04:10
Ein fp16-Framebuffer in 1920x1080 mit 8xMSAA/SGSSAA müsste knapp 130 MiB groß sein.
Allerdings speichert Triple Buffering vermutlich nur das Endresultat nach Downsampling/AA-Resolve und Tonemapping in einem weiteren Buffer. Und dann belegt so ein Buffer nur noch rund 8 MiB.

P.S.: Der größtmögliche Framebuffer bei einer DX11-GPU müsste 8 GiB groß sein. 8192*8192*8 Samples @ fp32 pro Komponente. Nach Resolve und Tonemapping zu int8 würde so ein Buffer noch max. 256 MiB belegen.

blackbox
2011-05-29, 12:07:36
Mal ne andere Frage: inwieweit ist TP heutzutage eigentlich implementiert, wenn man Vsync im Spiel oder im Treiber aktiviert?

=Floi=
2011-05-29, 17:20:47
default ist es an und steht auf 3 bilder ---> mit das erste was ich ausschalte!

mapel110
2011-05-29, 17:28:41
default ist es an und steht auf 3 bilder ---> mit das erste was ich ausschalte!
Mit 3 Bilder meist du "Prerenderlimit"? Die Option hat keine Auswirkung mehr, wenn Vsync aktiv ist.

BigKid
2011-05-31, 11:59:39
Mit 3 Bilder meist du "Prerenderlimit"? Die Option hat keine Auswirkung mehr, wenn Vsync aktiv ist.
Was irgendwie unlogisch klingt...

VSync sorgt dafür dass das nächste Bild erst angezeigt wird, wenn der Monitor mit der Darstellung des vorherigen fertig ist - selbst dann wenn es schon vorher berechnet wurde.

Prerender sorgt dafür das bis zu x-Frames vorberechnet werden. Das erhöht im Prinzip dein "InputLag" - gerade in Verbdindung mit VSync an.

Ohne VSync bedeutet das dass es von deinen FPS abhängt wie lange es dauert bis die Bilder bei dir ankommen - mit VSync an solltest du im Prinzip immer 16ms pro vorgererendertem Bild... Plus obendrauf noch das InputLag des Monitors...

Ich will damit nicht sagen, dass es da im Treiber eine Verknüpfung gibt - wie von dir angedeutet - hielte es aber für unlogisch...

blackbox
2011-05-31, 12:02:37
Im CCC gibt es diese Option ohnehin nicht, da gibts TB eh nur für OpenGL. Und welches Spiel setzt heutzutage noch auf OpenGL?

seaFs
2011-05-31, 13:50:48
TripleBuffering ist durch DirectX begrifflich ziemlich weit vom ursprünglichen Ziel weggekommen. Das Prerenderlimit verfolgt das Ziel, die Framerate zu "smoothen", sodass sprunghafte Änderungen der Framerate ausgeglichen werden.
Dennoch benötigt Prerender Limit 3 so viel Speicher wie TripleBuffering.
Der Unterschied ligt darin, dass kein Backbufferbild verworfen werden kann.

sapito
2011-05-31, 18:19:33
prerender limit hat mit tripple buffer so viel zu tun wir der papst mit dem schwanger werde.

ist zwar wiki, aber was solls

http://de.wikipedia.org/wiki/Dreifachpufferung

Die Dreifachpufferung (englisch triple buffering) beschreibt ein Konzept in der Computergrafik, bei dem der Framebuffer des Video-RAM bei Grafikkarten 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).

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 abgeschlossen, muss die GPU also bis zum nächsten VSync warten, um mit dem nächsten Frame weiterzumachen. Die effektive Rechenzeit pro Bild ist somit immer gleich der oder ein ganzes Vielfaches der Zeit, die der Monitor zum Anzeigen eines Bilds benötigt. Wenn die Bildrate der GPU also zum Beispiel knapp unter der des Monitors liegt, ist die effektive Bildrate nur die Hälfte der Monitorbildrate (da die GPU bei jedem zweiten VSync noch nicht mit dem Rendern des Bilds fertig ist). Wenn sie unter der Hälfte liegt wird sie ein Drittel der Monitorbildrate usw.

Dreifachpufferung und VSync

Durch einen weiteren Backbuffer kann die Bildrate des Monitors von der der GPU entkoppelt werden. Wenn ein Bild fertig gestellt ist, muss die GPU nun nicht mehr warten, bis der Swap-Befehl ausgeführt wird, sondern kann direkt im anderen Backbuffer weiterarbeiten. Beim Auftreten des Swap-Befehls werden also die beiden Backbuffer vertauscht, während beim Auftreten von VSync der Frontbuffer und der fertig berechnete Backbuffer vertauscht werden. Es kommt also zu keinem Leistungsverlust gegenüber dem ungepufferten Fall.

in der regel wird 2x buffering mit vsync ON verwendet. deshalb auch frame rate einbrüche und der gleichen. mit 3x buffering wird das verhindert/ umgangen

das pre render limt ist imho bei vsync OFF activ.

ich verweise auch auf einen 3dcenter artikel von 2004

http://www.3dcenter.org/artikel/was-heisst-vsync-und-wie-wendet-man-es