Fps-Limiter

MotherPink

Lieutenant
🎅Rätsel-Elite ’24
Registriert
Apr. 2015
Beiträge
614
Mahlzeit.

Da ich eine anachronistische Spielweise für mich entdeckt habe und Wine für alles unterhalb von D3D8 mittlerweile sorgenfreier funktioniert als moderne MS Betriebssysteme, hat sich für mich ein Problem entwickelt.

Alte Spiele bieten oft kein Vsync und tuckeln gern mit 160-240 fps daher, was in einer hohen CPU- und GPU-Last endet.
In den jeweiligen Spiele configs ein FPS litmit zu setzten ist häufig nicht möglich oder schwer zu finden, da bei alten Spielen Google häufig keine Antwort parat hat.

Deswegen wäre es ideal, wenn es eine externe Möglichkeit gäbe, ala Rivatuner, die FPS zu begrenzen oder alternativ Vsync zu erzwingen.


Hardware:
Gpu - HD 7950 Mesa 11.0.7
 
Crimson Treiber laden und installieren. Dann unter den globalen Einstellungen den FPS Limiter auf die gewünschte Zahl setzen.
 
1. Catalyst/Crimson ist Mist und funktioniert nur eingeschränkt mit Wine.
2. Der Fps Limiter im Crimson Treiber funktioniert nur mit D3D9 aufwärts.

@_vicious_
Gibts den für Linux?
 
Crimson laden.

Unter Gaming auf das Spiel klicken und dann den "Frame Rate Target Control" Slider nach Belieben hin und her schieben ;)
http://images.anandtech.com/doci/9811/FRTC.png

Edit: Wenns unter WINE nicht auf Anhieb läuft bin ich leider überfragt. Qemu/KVM keine Altenrative?

mfg,
Max
 
Zuletzt bearbeitet:
Wie bereits geschrieben, der Fps Limiter in Crimson funktioniert nur mit D3D9 aufwärts.
Vor 15.11 sogar nur mit D3D10 aufwärts.
Ergänzung ()

Gut, ich hab jetzt selbst eine Lösung gefunden.

1. Den bereits erwähnten Riva Turner statistic server, mangels Linux Version, via Wine installieren.

2. Ein Profil mit der .exe des gewünschten Spiels erstellen.

3. Application detection level mindestens auf Medium stellen und Custom Direct3D support auf ON (letzteres geht nur mit Profil nicht Global).


Ein OSD gibt es zwar nicht, aber der Limiter funktioniert tadellos. Probleme gab es nur, wenn ich die FPS unter 60 begrenzen wollte.
Getestet hab ich es bisher nur mit Giant Citizen Kabuto und Sacrifice, welche beide mit Wine D3D7 T&L HAL laufen.


Falls jemand noch eine andere, leichtere und verlässlichere Methode kennt, nur raus damit.
 
Danke für die Links.

Da ich Kde nutzte, verwende ich naheliegend KWin, welches auch alles anstandslos zerreisfrei darstellt, dabei jedoch die Fps nicht an die Hz des Monitors koppelt.

Weswegen ich jetzt mal compiz und compton installiert und jegliche vsync-option durchprobiert habe.
Ergebnis, kein Unterschied zu KWin.

Die Fps schießen hoch, von Tearing aber keine Spur, ob Fenster oder Vollbild.
 
KDE System settings -> Desktop Effects -> Advanced -> OpenGL options -> Tearing Prevention "Full scene repaints"
und Compositing type: OpenGL 3.1

Damit habe ich zumindest in jedem native Linux Programm VSync drin und auch kein Tearing mehr auf dem Desktop zumindest mit den OS Treibern. Da Plasma ab Version 4 hardwarebeschleunigt ist müsste das theoretisch jedes Programm beinflussen was dadrunter läuft.

Compton kann auch (wie schon erwähnt) VSync erzwingen aber davon würde ich abraten, da du erstmal rumprobieren musst mit welchen VSync Parametern dein Desktop anständig läuft. Und 2 Compositors (Compton oder Compiz + Plasma(kwin)) gleichzeitig laufen zu lassen ist keine gute Idee.

In Compiz funktioniert die eingebaute Vsync Option nicht richtig, ich hatte aber einen Trick entdeckt mit dem das trotzdem geht jedoch würde ich aus Performance- und Stabilitätsgründen davon abraten. Ich hatte damals einen ehemaligen Compiz Entwickler drauf angesprochen (es war ein bestimmtes Plugin was einen kompletten Screen redraw gemacht hat) aber er wusste auch nicht warum genau dieses Plugin einen funktionierenden VSync aktiviert. Er hat mir zwar die Funktion im Quellcode des Plugins aufgezeigt die das vermutlich macht, aber selber hat er es auch nicht ganz verstanden. Wenn ich den Namen des Plugins nochmal finde poste ich den. Ich würde jedoch Compiz garnicht starten, da der Quellcode seit vielleicht 2008 garnicht mehr gewartet wird, das Projekt ist in einem ziemlich desolaten Zustand.
 
Zuletzt bearbeitet:
CaptainStor schrieb:
KDE System settings -> Desktop Effects -> Advanced -> OpenGL options -> Tearing Prevention "Full scene repaints"
und Compositing type: OpenGL 3.1
Das ist exakt meine Einstellung.

CaptainStor schrieb:
Damit habe ich zumindest in jedem native Linux Programm VSync drin und auch kein Tearing mehr auf dem Desktop zumindest mit den OS Treibern. Da Plasma ab Version 4 hardwarebeschleunigt ist müsste das theoretisch jedes Programm beinflussen was dadrunter läuft.
Tearing hab ich auch keins und mir ist auch noch keine Anwendung untergekommen, welche von KWin nicht erfasst wurde.
Nur bindet KWin nie die Framerate an die Bildwiederholungsrate meines Monitors, abseits des Desktop, sei es nativ, Wine, Fenster, oder Vollbild.

CaptainStor schrieb:
Compton kann auch (wie schon erwähnt) VSync erzwingen aber davon würde ich abraten, da du erstmal rumprobieren musst mit welchen VSync Parametern dein Desktop anständig läuft. Und 2 Compositors (Compton oder Compiz + Plasma(kwin)) gleichzeitig laufen zu lassen ist keine gute Idee.
2 Compositoren gleichzeitig laufen lassen erfordert aber viel Fieselei, wenn überhaupt möglich.
Nein, ich hab selbstverständlich alle einzeln und mit sämtlichen vsync Parametern im GLX backend getestet.
Dabei unterbanden sowohl Compiz, als auch Compton, Tearing erfolgreich, nur schoss die Framerate, wie unter KWin, wieder in den dreistelligen Bereich.

Was Compiz anbelangt hast du recht.
Von den drei getesteten Compositoren, machte dieser, zumindest unter KDE, die schlechteste Figur.
 
Guten morgen,
Also bei mir wird alles auf 60fps limitiert, ich habe allerdings eine Radeon 280x (läuft mit radeonsi).
In wine habe ich noch keine Spiele gestartet und habs auch nicht vor.

Was sagt glxgears und "cat /var/log/Xorg.0.log | grep -i swapbuffers" ?
Wie sieht deine xorg.conf aus und welchen Kernel + Treiber verwendest du genau?

edit:
Starte glxgears bzw. wine mal mit vblank_mode=1 und mal mit 0:
Code:
vblank_mode=1 glxgears
Quelle: http://xorg.freedesktop.org/wiki/RadeonFeature/
 
Zuletzt bearbeitet:
CaptainStor schrieb:
Gleichfalls.

CaptainStor schrieb:
Was sagt glxgears
Läuft konstant mit 60fps.

Code:
glxgears
Running synchronized to the vertical refresh.  The framerate should be
approximately the same as the monitor refresh rate.
301 frames in 5.0 seconds = 60.112 FPS
300 frames in 5.0 seconds = 59.998 FPS
300 frames in 5.0 seconds = 59.999 FPS

CaptainStor schrieb:
und "cat /var/log/Xorg.0.log | grep -i swapbuffers" ?
[ 5606.657] (II) RADEON(0): SwapBuffers wait for vsync: enabled
Scheint soweit in Ordnung.

CaptainStor schrieb:
Wie sieht deine xorg.conf aus
Ich schätz mal die ati.conf ist dabei relevant?
Code:
Section "Device"
	Identifier  "Device0"
	Driver      "radeon"
	BusID       "PCI:1:0:0"
	Option      "DRI"    "true"
EndSection
 
 
Section "DRI"
        Group  "video"
        Mode   0666
EndSection
 
 
Section "Extensions"
	Option "Composite" "Enable"
	Option "RENDER"    "Enable"
EndSection
 
 
Section "InputClass"
	Identifier          "Keyboard Defaults"
	MatchIsKeyboard	    "yes"
	Option              "XkbOptions" "terminate:ctrl_alt_bksp"
EndSection

CaptainStor schrieb:
und welchen Kernel + Treiber verwendest du genau?
4.3.3 + radeonsi / Mesa 11.0.7 / Gallium 0.4 on AMD TAHITI (DRM 2.43.0, LLVM 3.7.0)

CaptainStor schrieb:
Starte glxgears bzw. wine mal mit vblank_mode=1 und mal mit 0:
Mit 1:
Code:
vblank_mode=1 glxgears
ATTENTION: default value of option vblank_mode overridden by environment.
33333 frames in 5.0 seconds = 6666.556 FPS
33711 frames in 5.0 seconds = 6742.158 FPS
33863 frames in 5.0 seconds = 6772.408 FPS
34078 frames in 5.0 seconds = 6815.451 FPS
34120 frames in 5.0 seconds = 6823.823 FPS
34027 frames in 5.0 seconds = 6805.307 FPS
33994 frames in 5.0 seconds = 6798.663 FPS

Mit 0:
Code:
vblank_mode=0 glxgears
ATTENTION: default value of option vblank_mode overridden by environment.
33369 frames in 5.0 seconds = 6673.651 FPS
33878 frames in 5.0 seconds = 6775.433 FPS
34199 frames in 5.0 seconds = 6839.657 FPS
34125 frames in 5.0 seconds = 6824.823 FPS
34074 frames in 5.0 seconds = 6814.725 FPS
34245 frames in 5.0 seconds = 6848.906 FPS
34297 frames in 5.0 seconds = 6859.340 FPS
 
Zuletzt bearbeitet:
Ok, welche Distro hast du?
mach mal ein "cat /var/log/Xorg.0.log | grep dri"

Ich würde
Code:
 Section "Extensions"
    Option "Composite" "Enable"
    Option "RENDER"    "Enable"
EndSection

und
Code:
Option      "DRI"    "true"

auskommentieren und gucken was passiert.
Wenn der Xserver danach ordnungsgemäß läuft, dann machste nochmal
"cat /var/log/Xorg.0.log | grep dri"
Und guckst dir den Unterschied an. Also ich würde den Xserver nicht dazu zwingen das alte DRI Modul zu laden.

edit:
Habs grad mal bei mir getestet, mit DRI war kein Unterschied nur hats conky bei mir beim Start abgeschossen. Ich habe aber auch eine ältere Kernel Version. Also VSync ist bei dir auf jeden Fall da und limitiert auch dein glxgears ohne Parameter. Das ist schon komisch.
 
Zuletzt bearbeitet:
CaptainStor schrieb:
Ok, welche Distro hast du?
Gegenwärtig in Nutzung, Manjaro im stable branch.


CaptainStor schrieb:
mach mal ein "cat /var/log/Xorg.0.log | grep dri"
Trotz auskommentieren der, von dir vorgeschlagenen Zeilen, ist der Output identisch.
Sollte ich mal versuchen DRI auf false zu setzen?

Code:
cat /var/log/Xorg.0.log | grep dri
[   329.074]    X.Org XInput driver : 21.1
[   329.077] (II) xfree86: Adding drm device (/dev/dri/card0)
[   329.079] (II) Loading /usr/lib/xorg/modules/drivers/radeon_drv.so
[   329.082] (II) Loading sub module "dri2"
[   329.082] (II) LoadModule: "dri2"
[   329.082] (II) Module "dri2" already built-in
[   329.085] (II) glamor: OpenGL accelerated X.org driver based.
[   329.205] (II) RADEON(0): [DRI2]   DRI driver: radeonsi
[   329.205] (II) RADEON(0): [DRI2]   VDPAU driver: radeonsi
[   329.286]    ABI class: X.Org XInput driver, version 21.1
[   329.286] (II) Using input driver 'evdev' for 'Power Button'
[   329.302] (II) Using input driver 'evdev' for 'Power Button'
[   329.303] (II) No input driver specified, ignoring this device.
[   329.303] (II) No input driver specified, ignoring this device.
[   329.303] (II) No input driver specified, ignoring this device.
[   329.303] (II) No input driver specified, ignoring this device.
[   329.304] (II) No input driver specified, ignoring this device.
[   329.304] (II) No input driver specified, ignoring this device.
[   329.304] (II) No input driver specified, ignoring this device.
[   329.304] (II) No input driver specified, ignoring this device.
[   329.305] (II) Using input driver 'evdev' for 'NOVATEK Kensington U+P Keyboard'
[   329.305] (II) Using input driver 'evdev' for 'NOVATEK Kensington U+P Keyboard'
[   329.306] (II) Using input driver 'evdev' for 'HID 04b4:0033'
[   329.357] (II) No input driver specified, ignoring this device.
[   329.358] (II) No input driver specified, ignoring this device.
[   329.358] (II) No input driver specified, ignoring this device.
[   329.359] (II) No input driver specified, ignoring this device.
[   329.359] (II) No input driver specified, ignoring this device.
[   329.359] (II) No input driver specified, ignoring this device.
[   329.360] (II) No input driver specified, ignoring this device.
[   329.360] (II) No input driver specified, ignoring this device.
[   329.360] (II) No input driver specified, ignoring this device.
[   329.361] (II) Using input driver 'evdev' for 'AVerMedia AVerTV Volar HD/PRO (A835)'


CaptainStor schrieb:
Das ist schon komisch.
Schon, aber zum Glück haben die meisten neueren Titel Vsync und fps Limit mittlerweile selbst eingebaut.

Mich verwundert nur, dass eine Form von Syncronisation trotzdem greift, da das Tearing ja verschwindet.
Unter KDE kann man mit Shift+Alt+F12 ja selbst unter Betrieb der Anwendung den Unterschied überprüfen und das Tearing ist ohne Compositor und Vsync unerträglich.

Meine zweite Vermutung war, dass mir einfach die FPS falsch ausgegeben werden, schließlich kann ich zwischen 60fps und 160fps auf einem 60Hz Monitor nicht unterscheiden. Jedoch ist die Ausgabe unter Verwendung mehrer FPS-Auslesemethoden gleich und das zweite Indiz ist, dass bei Verwendung des Software Cursors, ohne Framelimit, die Empfindlichkeit stark schwankt.
 
Zuletzt bearbeitet:
Ok also im stable branch haben die schon Kernel 4.3.3 drinne?
Entweder sind die Jungs sehr flott oder die testen nicht richtig.
 
Der Kernel ist optional.
Der momentane default Kernel ist 4.1.15, aka Terminator T-800.

Cdn5USz.jpg
 
Zuletzt bearbeitet:
Zurück
Oben