Odstránenie 1FPS na externom primárnom monitore

17.07 | 11:57 | originalnynazovblogu | LUcoRP

V Xorg sa nachádza nepríjemný bug, ktorý spôsobuje zvýšenie času odozvy na externom monitore pripojenom v móde primárneho displeja. Odozva sa zníži až na 1 FPS pri všetkých hardwarovo akcelerovaných aplikáciách, čo spraví externý monitor nepoužiteľný.

Čiastočnou barličkou môže byť prepnutie primárneho displeja na displej notebooku, čo framedrop síce vyrieši, ale pokiaľ potrebujete používať externý monitor ako primárny, tak je toto “riešenie” nepoužiteľné. Či sa skutočne jedná o tento problém si viete overiť tak, že po spustení glxgears na externej obrazovke a jej prepnutí do primárneho módu dostanete výsledný krásny framerate 5framov/5s.

V mojom prípade je situácia nasledovná: do notebooku s duálnou AMD grafickou kartou Radeon Renoir/Radeon RX5500M mám pripojený 4k monitor, ktorý potrebujem používať ako primárny. Pre grafickú kartu používam opensource ovládače a celý setup beží na Xubuntu 21.04, ale fix by mal fungovať pre väčšinu distribúcií používajúcich Xorg.

Po hlbšom vŕtaní v probléme som zistil že vinníkom tejto situácie je v mnou používanom ovládači defaultne zapnutý Vsync. Jeho vypnutie bolo po chvíľke googlenia jednoduché. V home užívateľa si stačí vytvoriť súbor .drirc a vložiť do neho pravidlo na vypnutie Vsync-u.

nano ~/.drirc

Do otvoreného súboru potom vložíme naseldovné pravidlo:

<driconf>
    <device screen="0" driver="dri2">
        <application name="Default">
            <option name="vblank_mode" value="0" />
        </application>
    </device>
</driconf>

Po reštarte systému bude nové pravidlo načítané, overiť si ho je možné cez glxgears, kde framerate vyskočí z hodnoty okolo obnovovacej frekvencie monitora na vyššie hodnoty, v závislosti od výkonu grafickej karty (nové karty >1000 FPS).

Aplikácie, ktoré nerešpektujú toto nastavenie WM bude potrebné nastaviť každú samostatne v rámci jej konfigurácií.

Prílohy