Freesync unter Linux
Wednesday, 13. May 2020
Mit dem neuen Acer CB242Y konnte ich jetzt zum ersten mal richtig Freesync unter Linux testen. Mein Ersteindruck: Das geht ja gar nicht, alles stürzt ab. Zweiter Eindruck nach Neukonfiguration: Funktioniert einwandfrei und ist nett. Halten wir mal fest, wie das einzurichten und zu testen ist.
Einrichten
Der Monitor muss mit dem Displayport verbunden sein. HDMI funktioniert unter Windows, derzeit aber nicht unter Linux. Phoronix schrieb im Oktober 2019, dass sich das ändern soll, aber bisher sah ich dazu noch nichts neues und bei mir funktionierte Freesync unter HDMI nicht.
Dann, klar, muss Freesync im Monitormenü aktiviert werden. Dafür gibt es normalerweise eine Option, manche Monitore sind doof und verstecken sie in einem Game-Modus.
Jetzt zur Linuxseite. Erstmal zu meinem System. Meine Grafikkarte ist eine Radeon RX 580. Kernel:
onli@fallout:~$ uname -a Linux fallout 5.6.11_1 #1 SMP Wed May 6 19:42:50 UTC 2020 x86_64 GNU/Linux
Mesa:
onli@fallout:~$ glxinfo | grep "OpenGL core profile version string" OpenGL core profile version string: 4.6 (Core Profile) Mesa 20.0.6
Eventuell musst du gar nichts konfigurieren. Im Terminal, prüfe die Ausgabe von xrandr --props
und suche nach vrr:
vrr_capable: 1 range: (0, 1)
Hier ist Freesync also an, 0 wäre aus. Vorsicht: Es gibt einen eigenen Eintrag für jeden Monitoreingang, da kann man sich schnell vertun.
Ist es 0 sollte die xorg.conf angepasst werden. Dafür fügt man eine Konfigurationsdatei in xorg.conf.d/ hinzu oder editiert die bestehende:
onli@fallout:~$ cat /usr/share/X11/xorg.conf.d/10-amdgpu.conf Section "OutputClass" Identifier "AMDgpu" MatchDriver "amdgpu" Driver "amdgpu" Option "VariableRefresh" "true" Option "TearFree" "true" EndSection
Mit einer Nvidia-Grafikkarte sähe das natürlich anders aus. Für den amdgpu-Treiber ist VariableRefresh die Option für Freesync, TearFree ist eine andere Rucklervermeidung wenn die FPS über der Monitor-Bildwiederholrate sind, optional.
Bei mir nicht optional: V-Sync. Ist das nicht an funktionierte Freesync nicht. Auch das mag sich noch ändern oder vom jeweiligen Spiel abhängen, aber bisher muss ich es systemweit erzwingen. Dafür setze ich beim Systemstart:
export vblank_mode=3
Jetzt sollten Programme im Vollbild(!) mit Freesync Ruckler und Tearing vermeiden.
Testen
Aber funktioniert es überhaupt in Praxis? Der Effekt ist normalerweise nicht so stark, dass man das direkt bemerkt. Spezielle Testsequenzen können es aber deutlich zeigen. Ein richtig gutes und absurderweise unbekanntes Programm dafür ist VRRTest. Es zeichnet graue Balken, die schnell von links nach rechts huschen. Wird die Bildwiederholrate des Monitors getroffen oder ist Freesync an ist das eine glatte Bewegung, ohne Freesync wird bei niedrigeren FPS deutlich unglatt, die Balken verursachen viel Tearing.
Es ist das einzige mir bekannte Programm, mit dem man Freesync unter Linux testen kann. Nett: Es hat ein AppImage! Installation ist also simpel. Lade von der Releaseseite das AppImage herunter und mache es ausführbar.
Bevor du es startest, solltest du deinen Compositor deaktivieren. Bei mir läuft picom, also beende ich den:
killall picom
Wenn GNOME oder KDE als Desktopumgebung benutzt wird haben die ihren eigenen Compositor integriert, der hoffentlich irgendwo in den Einstellungen deaktivierbar ist oder sich von selbst bei aktiven Vollbildanwendungen ausschaltet. Wayland unterstützt Freesync noch nicht, sagt auch das Arch-Wiki, gleichzeitig wird aber Unterstützung im Wayland-WM sway erwähnt, da scheint sich also gerade ein bisschen was zu tun. Im Zweifel: Wayland deaktivieren.
Dann kann vrrTest gestartet werden. Die Anwendung öffnet ihre Testoberfläche im Vollbild. Das sieht dann so aus:
Der Text oben links erklärt die Bedienung: Mit den Pfeiltasten die FPS auswählen. Ich fand es gut, erst auf die Monitorbildwiederholrate zu schalten, bei mir sind das 75, und mit b die genauere FPS-Zählung zu aktivieren. Wenn ich dann runtergehe wird es ohne Freesync ruckelig, mit Freesync bleibt es stabil, bis ich dann die 49 FPS erreiche und wohl die Freesync-Range verlassen wird.
Fazit: Kinderschuhe
Linux hängt hier doch deutlich hinterher. Kein Freesync über HDMI, keine einfache Aktivierung in einem grafischen Treiberverwaltungsprogramm, X konfigurierte ich seit vielen Jahren sonst nur noch zum Bugfixing in instabilen Distributionen. Blöd auch, dass die Funktion überhaupt so intransparent ist das Testprogramme nötig sind. Der Konflikt mit dem Compositor ist auch unpraktisch. Ich kann zudem gar nicht sicher sein, dass die Abstürze vom ersten Test nicht wiederkommen.
Aber immerhin: Freesync wird offiziell von AMD unter Linux unterstützt, es funktioniert verifizierbar in Praxis und der Effekt wenn es greift ist ziemlich cool. Ich freue mich, bei der Monitorauswahl auf die Funktion bestanden zu haben.
onli blogging am : FreeSync-Range unter Linux anpassen
Vorschau anzeigen