Wayland - Xwayland - labwc -> wie ist das denn eigentlich mit den fps?

pit234a

Well-Known Member
Ich verstehe nicht richtig und kenne zudem auch keinen Ausweg. Weil mein Problem so wenig konkret ist, starte ich mal im Geplauder.

Ich habe eine NVIDIA GeForce RTX 3060 mit 12G RAM und sofern ich die Daten richtig lese, müsste ich mit Display-Port-Kabel 1.4 doch 120Hz auf meine beiden Monitore in jeweils 3840x2180 bekommen, aber ich habe nur 60Hz, wie mir das Nvidia-Setup-Tool sagt und auch der MPV anzeigt, sowie der OSD-Report der Monitore selbst.

Wenn ich das "Benchmark-Spiel" Xonotic (ich habe sonst keines) mal starte, zeigt das so um die 225fps an.

wlr-randr --json sagt zB:
Code:
    "modes": [
      {
        "width": 3840,
        "height": 2160,
        "refresh": 59.997002,
        "preferred": true,
        "current": true
      },
      .....
      {
        "width": 3840,
        "height": 2160,
        "refresh": 119.999001,
        "preferred": false,
        "current": false
      },
und aber:
Code:
wlr-randr --output DP-2 --custom-mode 3840x2160@120Hz
failed to apply configuration
Meine Verwirrung kann man hieraus sicher bereits verstehen.

Ich finde aber auch keine Angabe, woher der wlr-randr, bzw der Wayland oder wer auch immer das "preferred": true bei 60Hz bezieht und ob das womöglich auch anders eingestellt werden kann, ich finde gar keine diesbezügliche config.
Meine Xorg.0.log ist noch aus 2025 und hat demnach also keinen Bezug zu Wayland oder Xwayland und ich finde auch keine Pendants dazu.
 
Das Stichwort ist Vsync, kurz für 'Vertical Synchronization'. Das ist eine Option des Spiels. Wenn in Xonotic Vsync eingeschaltet ist, synchronisiert es sich mit dem abgeschlossenen Display und rendert - solange die Hardware schnell genug ist - für jedes Bild, was der Monitor darstellen kann, einen Frame. Dein Monitor hat wahrscheinlich 60 hz, kann also 60 Bilder pro Sekunde darstellen. Das Spiel läuft dann mit exakt 60 FPS. Ist in Xonotic Vsync abgeschaltet, rendert das Spiel einfach so viele Frames, wie die Hardware hergibt. Der Bildschirm zeigt dann an, was da ist. Das hat dann alle möglichen unerwünschten Nebeneffekte.

Ohne nun in die Tiefe und die emotionale Diskussion dahinter gehen zu wollen, alte Quake-Spieler wissen, was ich meine, ist im Normalfall die richtige Entscheidung den Vsync einzuschalten. Die meisten Spiele machen das von Haus aus in Standardeinstellung. Es kann aber durchaus sein, dass Xonotic mitdenkt und Vsync beim Benchmarken ausschaltet.
 
Dein Monitor hat wahrscheinlich 60 hz, kann also 60 Bilder pro Sekunde darstellen.
das ist ja eben, was mich umtreibt: er kann angeblich sogar bis 240Hz und wenn ich die wlr-randr Ausgabe ansehe,
Code:
      {
        "width": 3840,
        "height": 2160,
        "refresh": 239.990005,
        "preferred": false,
        "current": false
      },
wird ein entsprechender Mode auch gelistet.
Dafür bräuchte man aber DP-Kabel 2.1, ich habe derzeit nur 1.4, aber damit sollte 120Hz möglich sein.

Natürlich werde ich demnächst nochmal neue Kabel testen, aber ich werde das Gefühl nicht los, dass hier etwas suboptimal läuft / eingestellt ist. Was allerdings, da ich überhaupt nicht spiele, keine ernste Sache ist. Für mich langen die 60Hz, nur wundere ich mich eben, weshalb nicht mehr genommen wird.
 
DP Kabel leisten oft nicht was sie versprechen. Das ist leider wilder Westen da draußen. Und auch am Preis kann man das nicht unbedingt erkennen.
 

[td]Unterstützte Anzeigeoptionen:[/td] [td]Maximale digitale Auflösung (1)[/td]
[td]
7680x4320

[/td][td]
7680x4320

[/td]​
[td][/td] [td]Standard-Bildschirmanschlüsse[/td]
[td]
HDMI(2), 3x DisplayPort(3)

[/td][td]
HDMI(2), 3x DisplayPort(3)

[/td]​
[td][/td] [td]Multidisplayfähig[/td]
[td]
4

[/td][td]
4

[/td]​
[td][/td] [td]HDCP[/td]
[td]
2.3

[/td][td]
2.3

[/td]​
1 – Bis zu 4K 12-Bit HDR bei 240 Hz mit DP 1.4 a + DSC. Bis zu 8K 12-Bit HDR mit 60 Hz DP 1.4 a + DSC oder HDMI 2.1 + DSC. Mit doppeltem DP 1.4 a + DSC, bis zu 8K HDR bei 120 Hz

2 - Supports 4K 120Hz HDR, 8K 60Hz HDR and Variable Refresh Rate as specified in HDMI 2.1

3 - DisplayPort 1.4a

7680x2160 Gesamtfläche passt schonmal "rein".
Dein Kabel wird ein 1.4 sein, kein 1.4a oder wie von Kamikaze angedeutet von suboptimaler Qualität. Denkbar wäre auch, dass die GPU oder der Monitor das Kabel benchen und dann bei nem Wert dichtmachen, aber so genau weiß ich nichts über deren handshake. D(isplay)S(tream)C(ompression) ist Getrickse, also direkt mit 2.0-Kabeln nochmal probieren wäre meine Empfehlung. Wenn dein Monitor auf 60Hz/fps gesynct gerade läuft, das Spiel bzw. deine Nvidia aber 225fps ohne VSYNC rausballert, wird die Differenz verworfen/verrissen und du hast eine nette Stromverschwendung, mehr nicht.
Das beste Erlebnis (also ohne tearing, das balkige Bildzerreißen bei schnellen Bewegungen) hast du, wenn alles synchronisiert läuft. Also VSYNC für Desktop und im Spiel aktiv und dann jeweils in der höchsten Hz/fps-Zahl, die alle drei (GPU, Kabel, Panel) Komponenten können. Für flüssiges Arbeiten und Spielen reichen 60, alles darüber ist Kirsche auf Sahnetorte. Will man aber haben, wenn es die Geräte schon können. ;)
 



Wenn dein Monitor auf 60Hz/fps gesynct gerade läuft, das Spiel bzw. deine Nvidia aber 225fps ohne VSYNC rausballert, wird die Differenz verworfen/verrissen und du hast eine nette Stromverschwendung, mehr nicht.
Nicht ganz, deine Eingabelatenz fällt in der Regel mit der Render-FPS. Bringt also unter Umständen bei Multiplayer-Titeln einen kleinen Vorteil, selbst wenn die Frames nie dargestellt werden.

Single player-orientierte Titel und Konsolenportierungen wie Souls Games haben in der Regel fixe World-FPS (in der Regel 60 Hz, manchmal 30 Hz), die von Rendering entkoppelt ist. Der Weltzustand wird dann einfach anhand der letzten Bewegungsvektoren extrapoliert.
Hier machen höhere FPS nur mit Vsync oder Adaptive Vsync Sinn. Dadurch sehen bewegen flüssiger aus und Panning hat weniger Latenz.
 
Will man aber haben, wenn es die Geräte schon können.
so ist das, denn brauchen tue ich es nicht, wundere mich aber doch, dass ich das nicht hinbekomme.
Nochmal: ich spiele gar nicht, also keine Games und Xonotic auch nicht. Das habe ich nur mal vor einiger Zeit installiert, weil ich das irgendwo als "Ersatz" für GLX-Gears beschrieben fand.

Nun habe ich mal Kabel eingesteckt, die angeblich DP 2.1 sind und es macht schon mal gar keine Änderung. Allerdings habe ich noch keinen Neustart probiert, halte das aber irgendwo auch nicht für nötig. Zumindest stelle ich mir vor, dass man auch im laufenden Betrieb mit wlr-randr umstellen können sollte. Aber es stellt sich einfach nix um.

Es ist jedenfalls ziemlicher Mist (finde ich), dass man den Kabeln nicht ansehen kann, was sie leisten. Da sollte es einen Code geben oder einfach einen Aufdruck (fein mit Laser auf den Stecker etwa).
Ob ich mir nochmal ein Paar neue Kabel gönnen werde, weiß ich noch nicht. Brauchen kann man ja immer...

Mal sehen.
 
einen Schritt weiter:
es gibt das Programm wdisplays (x11/wdisplays), das unter Wayland (wlroots) funktioniert und mit dessen Hilfe man einfach mittels GUI Einstellungen ändern kann: damit kann ich zunächst mal auf 240HZ hoch takten und beide Monitore machen das auch brav mit.
Soweit so gut, aber noch bleibt der Wert 60Hz als prefered gekennzeichnet.
Dazu gibt es dann wohl kanshi (x11/kanshi), was man als eine Art Dämon im Hintergrund laufen lassen kann und das dann aus einer Config liest, was es machen soll. Soweit bin ich aber noch nicht, die Syntax der Config ist mir noch sehr unklar.
 
noch einen Schritt weiter: kanshi hat die Macht.

Noch bin ich am probieren, aber diese einfache ~/.config/kanshi/config sorgt schon mal dafür, dass die Frequenzeinstellung erhalten bleibt und auch die Maus richtig läuft (siehe Beitrag u. ff):
Code:
profile standard {
    output DP-1 mode 3840x2160@239.990005Hz position 3840,0
    output DP-2 mode 3840x2160@239.990005Hz position 0,0
    }
Kanshi braucht eine solche config und darin kann man mehrere sogenannte Profile anlegen. Das habe ich bereits verstanden. Was kanshi dann alles kann und wie, das weiß ich aber nicht, insbesondere scheinen die Profile auf automatische Reaktionen bei vorfinden einer bestimmten Situation (anhand gefundener HW) ausgelegt zu sein und lassen sich offenbar nicht manuell aufrufen. In meinem Fall allerdings nicht bedeutsam, habe ich trotzdem meinem Profil mal einen Namen gegeben.

Adaptive Sync wird in den Beispielen zwar nicht erwähnt, aber weil kanshi offenbar alle übrigen Ausgaben von wlr-randr beeinflussen kann, stelle ich mir vor, dass man auch dieses hier über ein Profil einbinden könnte, also irgendwie vielleicht adhoc ein- oder abschalten.
 
Nicht ganz, deine Eingabelatenz fällt in der Regel mit der Render-FPS. Bringt also unter Umständen bei Multiplayer-Titeln einen kleinen Vorteil, selbst wenn die Frames nie dargestellt werden.

Single player-orientierte Titel und Konsolenportierungen wie Souls Games haben in der Regel fixe World-FPS (in der Regel 60 Hz, manchmal 30 Hz), die von Rendering entkoppelt ist. Der Weltzustand wird dann einfach anhand der letzten Bewegungsvektoren extrapoliert.
Hier machen höhere FPS nur mit Vsync oder Adaptive Vsync Sinn. Dadurch sehen bewegen flüssiger aus und Panning hat weniger Latenz.


Multiframegen deaktivieren ist das erste, was man macht, das Ding macht selbst Singleplayerspiele unspielbar, von Multiplayer ganz zu schweigen.

Was den zweiten Teil betrifft: Ja, aber. Vsync hat eigentlich keinen Wert mehr, es gibt gsync von Nvidia und freesync von AMD, das läuft idr. sowieso automatisch und ist besser, da erübrigt sich das vsync auch für diese Anwendungsfälle.
 
Adaptive Sync wird in den Beispielen zwar nicht erwähnt
es gibt auch shikane (x11/shikane), quasi ein Nachfolger von kanshi und das kann jedenfalls auch adative_sync beeinflussen.

Die Begriffe schwirren mir ja hier nur so um die Ohren.
Deshalb möchte ich mich möglichst zurück halten, weil mir Vieles noch unklar ist. Aber ich habe nun mal mittels shikane meine Konfiguration gesetzt und dabei adaptive_sync = true benutzt. Das Ergebnis ist, dass die Monitore bei Inaktivität (zB kein Browser-Fenster aktiviert) auf 48Hz abfallen und dann bei Aktivität auf die gewünschten 240Hz gehen. Dabei flackert aber das Bild stets ein wenig, wenn inaktiv, die niedrige Frequenz ist nicht ganz stabil auf 48HZ, sondern schwankt ein wenig nach 50Hz und geht höher, wenn man nur die Maus bewegt. Ich weiß deshalb noch nicht, ob ich das so haben will.

immerhin kann shikane das einfach und auch mehrere Profile, zwischen denen mittels shikanectl gewechselt werden kann.
 
Ich weiß nicht ob es bei deiner Karte im Detail zutrifft, da müsstest du mal googlen, aber damit du nen Anhaltspunkt hast: Manche 3060 brauchen für die höheren Auflösungen DSC, was auch entlang der Kette zum Monitor unterstützt werden muss, und denke ich ne Zusatzspezifikation zu 1.4a ist.
 
das ist eingeschaltet.

adaptive_sync = true
mal nochmal aus meiner Perspektive gesprochen.
Das einzige Baller-Spiel auf meinen PC ist dieses xonotic und das zeigt auch bei festen 60Hz GraKa-Monitor seine 250fps im eigenen Fenster an.

Die Hauptanwendung, die mir bewegte Bilder anzeigt, ist mpv und die meisten Filme, die ich sehe, laufen auf 25Hz oder 50Hz. Ich sehe keinen Unterschied, ob ich nun mit 60Hz oder 240Hz oder den Werten dazwischen einen Film ansehe oder im Browser lese.

Wenn ich auf Werte größer 60Hz gehe und adaptive_sync einschalte, gibt es dieses ganz leichte Flackern des Bildes, das sich dann aber stabilisiert, sobald ich eine Anwendung aktiviert habe. Dann wird der gewählte maximale Takt geschaltet. Anders gesagt, das ganz leichte Flackern stört eigentlich nicht, da ich ja dann inaktiv werde, wenn ich eh den PC verlasse und kurz danach dann ja der Standby für die Monitore kommt.
Andererseits bringt mir das adaptive_sync tatsächlich aber auch nicht wirklich etwas, denn die "Stromkosten" auf Grund einer niedrigeren Taktrate sind im Vergleich ja vernachlässigbar.

Deshalb weiß ich noch nicht, wie das weiter gehen wird, aber es ist schon mal sehr angenehm, mittels shikanectl zwischen den verschiedenen Möglichkeiten zu switchen.
 
Deshalb weiß ich noch nicht, wie das weiter gehen wird,
mit ziemlicher Sicherheit werde ich auf 120Hz ohne adaptive_sync bleiben. Das muss zwar nicht sein, aber es hat auch gar keine Nachteile (wie 180Hz oder 240Hz) ebenfalls. Höchstens eine gewisse Einbildung, dass 120Hz am angenehmsten auf mich wirkt.

In der shikane config kann man einfach mehrere Profile anlegen und ebenso einfach im laufenden Betrieb wechseln.
Beim Start (also auch nach resume), werden alle Einträge geprobt und ich bin nicht sicher, ob das vielleicht Zufall war, aber es wurde nun bei mir das erste gültige Profil schon mehrfach zum Start genommen. Da steht nun deshalb bei mir eben das 120Hz-fest (ohne adaptive_sync).

shikane ist mir lieber, als kanshi, aber in den diversen Dokumentationen wird es kaum eingebunden. Deshalb hier nochmal zwei Links, weshalb ich mich jetzt dafür entschieden habe:


 
Das hat nichts mit Multiframegen zu tun.
Äh natürlich, MFG erhöht den Input Lag, da gibts auch einige Testvideos zu, im deutschsprachigem Bereich zB von PCGames oder Gamestar. Ich hab das letztes Jahr, als ich mir einen neuen GamingPC gebaut habe selbst getestet (und dann entschieden, dass ich lieber bei AMD bleibe). Selbst Dinge wie Autofahren in CP77 waren damit ziemlich mühsam.
 
Äh natürlich, MFG erhöht den Input Lag, da gibts auch einige Testvideos zu, im deutschsprachigem Bereich zB von PCGames oder Gamestar. Ich hab das letztes Jahr, als ich mir einen neuen GamingPC gebaut habe selbst getestet (und dann entschieden, dass ich lieber bei AMD bleibe). Selbst Dinge wie Autofahren in CP77 waren damit ziemlich mühsam.
Aber wir haben nicht von MFG geredet.
 
Zurück
Oben