mibbio schrieb:
Sieht fast danach aus, als wenn der Ingame-Limiter (und auch der Rivatuner) einfach nur die "überschüssigen" Frame verwirft, statt die zu berechnenden Frames tatsächlich zu begrenzen. Wohingehen bei Treiber-Limitierung tatsächlich nur 60 FPS berechnet werden.
Das würde nicht klappen. Würde man irgendwelche Frames einfach so verwerfen, hätte man Lücken in der Bildabfolge. Also Ruckler. Selbst wenn man jetzt noch Framepacing betreiben würde, so dass die Frames sauber im gleichen Abstand kommen, würde der gerenderte Inhalt der Bilder als Abfolge keine gleichmäßigen Bewegungen mehr zeigen. Würde also trotzdem ruckeln.
Interessante idee, aber das kanns meiner Meinung nach nicht sein.
Wenn ich raten müsste, würde ich sagen, dass beim limitieren der FPS über den Treiber und über Vsync der Treiber "weiß" wie hoch die Framerate sein muss (Vsync wird vom Spiel über DirectX angefordert, da hängt der Grafiktreiber also definitiv mit drin).
Vermutlich kann der Grafiktreiber dann entsprechend aktives Powermanagement betreiben, um die Effizienz zu maximieren.
Limitiert man hingegen die FPS im Spiel selbst, dann wird der Grafiktreiber davon überhaupt nichts mitbekommen. Das Spiel sorgt dann einfach nur dafür, dass die CPU z.B. bei 60 FPS nur alle 16,6 ms der GPU den Trigger zum Rendern eines neuen Frames gibt. Das Framelimit ist dann also etwas was quasi in der Spiellogik festgelegt ist und nur CPU Seitig stattfindet. Es ist hier sicherlich deutlich schwerer für den Grafiktreiber, aktives Powermanagement zu betreiben, weil einfach keinerlei Informationen darüber vorliegen, welche Framerate gewünscht ist. Es muss stets davon ausgegangen werden, dass maximale Framerate erwünscht ist. Die GPU wird also kurzzeitig maximal boosten, sobald sie den Trigger zum Rendern eines Frames bekommt. Bei einem FPS Limit welches der Treiber hingegen kennt, muss womöglich nicht so hoch geboostet werden, weil man weiß, wie lange man sich für die Berechnung des Frames Zeit lassen kann. Geringerer Takt = höhere Effizienz, trotz längerer Berechnungsdauer.
Das würde aber auch bedeuten, dass sich der Grafiktreiber dann bei jedem Frame ansehen muss, wie lange er berechnet wurde, um dann stets den Takt so anzupassen, dass die richtigen Frametimes erreicht werden.
Mhmm, ob das wirklich so funktioniert? Ich weiß es nicht... Wäre dann aber wirklich im wahrsten Sinne aktives Powermanagement.
Wie gesagt, das hab ich mir jetzt nur aus meinem Halbwissen zusammengereimt. Wäre für mich aber mal ein erster Erklärungsversuch.