Begehmann schrieb:
Joah, und in den höheren fps-Bereichen merkst du von Mikrorucklern eh nix mehr. Problem gelöst! Warum also eine Softwarelösung suchen?
Sinn und Zweck einer Multi GPU-Lösung ist es doch, spielbare Frameraten zu erreichen, wo eine Karte nicht ausreicht, z. B. bei Crysis. Wenn ich da maximale Qualität will, komme ich mit einer GTX vielleicht auf 20 fps. Mit zwei im Idealfall auf 38-40. Und das ist schon ein grenzwertiger Bereich. Wenn ich die Auflösung und Details immer so weit runterschraube, dass ich über 50fps bleibe, dann kann ich mir auch die zweite Karte sparen.
Begehmann schrieb:
Du gehst davon aus, dass die Berechnung für jeden Frame immer gleich lang dauert. Das tut sie aber in der Praxis nicht. Große Lücken entstehen zum Beispiel, wenn eine Textur im VRAM nicht vorliegt und erst über die CPU vom System-RAM geholt werden muss.
Und gerade da kommen aber bei Multi-GPU die krass unterschiedlichen Frametimes zustande, weil die zweite GPU ja wenig später die selbe Textur braucht, sie aber schneller kriegt, weil sie ja schon im Cache liegt.
Naja, da haben wirs doch, wenn der Treiber merkt, dass er die Textur grade für GPU1 in Zeit x aus dem RAM in den Cache geladen hat, dann weiß er das ja, wenn GPU 2 die gleiche Textur anfordert. Di Zeit, die er gespart hat, wartet er dann einfach, bevor er mit der Berechnung des Bildes beginnt. Dadurch entsteht auch nicht das von dir erwähnte Problem, dass der Bildinhalt veraltet ist, das Bild wird net berechnet und dann gewartet, sondern umgekehrt.[/quote]
Begehmann schrieb:
Was ich die ganze Zeit sagen wollte: Ganz so einfach wirds nicht gehen, sonst hätten sie's ja so gemacht.
Klar, innerhalb von einer Woche lässt sich da keine Lösung finden, aber es geht ja jetzt schon ein 3/4 Jahr so
H3rby schrieb:
@ stna1981:
Ist doch einfach. Ein Bild, was für den Zeitpunkt x gerendert wurde, wird erst zum Zeitpunkt y ausgegeben... Im Extremfall nennt man sowas unrund..
s. o.
H3rby schrieb:
@ stna1981:
Nebenbei ist bei deiner Technik nicht gegeben, dass das Bild, was du zum Zeitpunkt x + 35ms ausgeben willst, auch wirklich schon vorhanden ist. Was machst du dann? Das übernächste Bild wieder nach hinten verschieben?
Nein, es wird ausgegeben, sobald es fertig ist, so wie es eine normale GPU auch machen würde. Das Problem bei Mikrorucklern (Gott, wie ich das Wort hasse) ist eher, dass Frames zu früh ausgegeben werden, nicht zu spät. Wenn eine GPU länger brauchen würde, käme es ja auch zu einem fps-drop, das ist net nur bei MGPU so. Sicher kann man vorher net wissen, wie schnell ein Frame berechnet werden kann, daher muss man a) eine Statistik führen und daraus die durchschn. Zeit zwischen den Frames berechnen (Abweichungen von 10 oder so sind net so tragisch) und b) versuchen - wenn möglich - die Frames an diese Zeit anzugleichen, z. B. in dem man bei einer GPU mit der Berechnung später beginnt.
Das ist i. Ü. auch genau der Ansatz des Ex-AMD-Mitarbeiters (siehe Link oben), der _scheint_ ja zu funktionieren...