- Registriert
- Juli 2005
- Beiträge
- 4.046
scanline sagt es doch eigentlich schon : jede gpu eine zeile.
Das ist so leider völlig unmöglich.
Das was auf dem frame passiert steht schon fest, in dem moment wo die cpu zu gpu sagt :"ich bin fertig"
fängt die gpu jetzt nicht sofort mit dem rechnen an, sondern wartet, dann wird sie auch später fertig.
Das Ergebnis ist, das der Spielverlauf selbst nicht mehr gleichmäßig ist, weil die Ausgabe zu später passiert als die cpu es vorgesehen hat.
Kann auch ein Rechenbeispiel dazu aufschreiben bei Interesse.
Das fazit ist jedenfalls das MR nicht durch die Graka(s) alleine unterbunden werden können*, es muss immer die cpu mitspielen.
* außer durch andere modi als AFR
Die formeln dafür :
gpu = 1 -> zeit = ((1000/fps)*2)-delay
gpu = 2 -> zeit = delay
Im Programm läuft das dann etwa so ab :
busywaitung für gpu1-zeit
auftrag an gpu
busywaitung für delay-zeit
auftrag an gpu
... und wieder von vorne
Ok, ein bischen anders läuft es schon ab, die wartezeiten müssen kürzer sein, weil durch den rendervorgang noch etwas zeit verbraucht wird(<1ms je frame).
Deswegen braucht das Programm auch immer ein paar Sekunden um sich anzupassen, je nachdem ob man nun gerade eine 5 jahre alte onboardkarte oder eine 280gtx nutzt
edit : mit einem ähnlichen(umgedrehten) Algorithmus könnte man übrigens jedes Spiel programmiertechnisch von MR befreien. Die Programmierer müssten es nur einbauen.
Nachteil : ein paar % performanceverluste, vorallem bei hohen fps.
Zombie79 schrieb:Um die Ruckler zu vermeiden, müsste der Treiber wissen, wann GPU1 zu 50% mit der Berechnung des Frames fertig ist und dann den nächsten Frame an GPU2 schicken.
Das ist so leider völlig unmöglich.
Das was auf dem frame passiert steht schon fest, in dem moment wo die cpu zu gpu sagt :"ich bin fertig"
fängt die gpu jetzt nicht sofort mit dem rechnen an, sondern wartet, dann wird sie auch später fertig.
Das Ergebnis ist, das der Spielverlauf selbst nicht mehr gleichmäßig ist, weil die Ausgabe zu später passiert als die cpu es vorgesehen hat.
Kann auch ein Rechenbeispiel dazu aufschreiben bei Interesse.
Das fazit ist jedenfalls das MR nicht durch die Graka(s) alleine unterbunden werden können*, es muss immer die cpu mitspielen.
* außer durch andere modi als AFR
Fairy Ultra schrieb:kannst du mal erklären wie du die Frameszeit(Zeit bis zur ausgabe) errechnest (im Programm)?
Also Beispielhaft
Frame 1 - x ms
Frame 2 - x ms
Frame 3 - x ms
avg frames usw.
Die formeln dafür :
gpu = 1 -> zeit = ((1000/fps)*2)-delay
gpu = 2 -> zeit = delay
Im Programm läuft das dann etwa so ab :
busywaitung für gpu1-zeit
auftrag an gpu
busywaitung für delay-zeit
auftrag an gpu
... und wieder von vorne
Ok, ein bischen anders läuft es schon ab, die wartezeiten müssen kürzer sein, weil durch den rendervorgang noch etwas zeit verbraucht wird(<1ms je frame).
Deswegen braucht das Programm auch immer ein paar Sekunden um sich anzupassen, je nachdem ob man nun gerade eine 5 jahre alte onboardkarte oder eine 280gtx nutzt
edit : mit einem ähnlichen(umgedrehten) Algorithmus könnte man übrigens jedes Spiel programmiertechnisch von MR befreien. Die Programmierer müssten es nur einbauen.
Nachteil : ein paar % performanceverluste, vorallem bei hohen fps.
Zuletzt bearbeitet: