Linux Screen tearing javítása

Screen tearing Linux
Screen tearing Linux

Ebben a cikkben megismerheted, hogyan lehet eltüntetni egyes Intel rendszereken a Screen tearing-et, azaz szaggatást a filmek lejátszásánál Linux alatt, illetve hasonló probléma megoldását egy AMD RX570-es kártyánál. Több helyen olvastam, hogy a videó lejátszás, vagy gyors görgetés alatt tapasztalható szaggatás, magyarul a Screen tearing egyes Linux disztribúcióknál. A videólejátszás szaggatását, a Screen tearing oka sok dolog lehet, én abból indulok ki, hogy a megfelelő videó meghajtó program van feltelepítve, a videórendszer jó és nem akarsz egy nagyon kicsi videokártyával egy 8k-s videót lejátszani. Illetve feltételezem, hogy MESA csomagod teljes, az összes hardveres dekódolást támogatja. Ez gond lehet egyes disztribúcióknál., ahol jogi megfontolás miatt csak szűkebb dekódolást fordítanak bele a MESA-ba az AMD kártyáknál.
A sokféle ok miatt többféle megoldásokkal lehet próbálkozni, én nem térek ki mindegyikre, mert ablakkezelőktől, egyéb beállításoktól függően más lehet a jó megoldás.

Intel integrált videónál:

A gép paraméterei:
Graphics Card: Intel Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller
A disztribúció MX Linux volt.

Kitérő: a géped adatait az inxi paranccsal nézheted meg. Ha nincs fenn alapból, akkor telepítsd fel a disztribúciódban megszokott módon! Ismered meg a saját disztribúciódat és alkalmazd megfelelően az ismereteket – önállóan. Hasznos eszköz lesz máskor is. Egy videót itt találsz róla.

inxi -G

adja a grafikus megjelenítéssel kapcsolatos. A többi:  inxi --help, vagy a man oldala. Sokat tud, érdemes átfutni.

A megoldás viszonylag egyszerű:

Először létre kell hozni egy új X11 konfigurációs könyvtárat

sudo mkdir -p /etc/X11/xorg.conf.d/

ha még nem létezik. Több disztribúcióban már benne vagy.

Majd létrehozunk egy konfigurációs fájlt 20-intel.conf néven a kedvenc szövegszerkesztővel rootként.

 sudo nano /etc/X11/xorg.conf.d/20-intel.conf

A nano a legtöbb Linux rendszerben alap, de a xed, vagy  geanynvim vagy bármi, ami sima szövegfájlokat tud szerkeszteni, az jó lesz neked. Én nem meglepő mód a nvim-et használom. Kerüld az ilyen szerkesztésekhez a LibreOffice és hasonló eszközt, hiszen itt fontos sima, tiszta szövegfájlok megléte.
Ha idegen a vim nvim használata egy videó erejéig tekint rá.

A fájl tartalma legyen:

Section "Device"
    Identifier "Intel Graphics"
    Driver "intel"
    Option "TearFree" "true"
    Option "TripleBuffer" "true"
EndSection

Majd el is kell menteni. Ne írd, másold – az elírás veszélyes! A formázásra figyelj!
A legfontosabb, hogy a TearFree értéke true legyen. Ezt ellenőrizheted is a

xrandr --verbose | grep "TearFree"

Ha a kimenetnél az értéke true akkor jól dolgoztál.

Újra kell indítani az X11 munkamenetet egy ki- és bejelentkezéssel, vagy egyszerűen újraindítod a gépedet.

Említik a

Option "AccelMethod" "uxa"

beállítás hozzáadását is, de nekem ez rontott az eredményen. Ahogy az elején mondtam: más-más lehet a jó megoldás a Screen tearing-re.

Ha compton-t használsz (ezt használja alapból sok openboxos rendszer) esetleg kipróbálhatod ezt is:

compton --backend glx --paint-on-overlay --vsync opengl-swc

vagy

compton --backend glx --unredir-if-possible --glx-no-stencil --glx-no-rebind-pixmap --glx-swap-method buffer-age --vsync opengl-swc

Én nem próbáltam, mert az első megoldás jól működik. Tartalék megoldásnak mentettem el.
Köszönet az MX Linux lelkes fórumozóinak! Ez utóbbit csak nagyon óvatosan használd! Minden ilyen beállítás okozhat problémát a gépeden!

A Screen tearing ellenőrzésének nem a legjobb módja, hogy egy filmet nézel, mert nem minden mozgásnál jön elő. A youtube-n keress rá a „Screen tearing test”-re és lesznek jó videók hozzá.

Figyelj rá, hogy openbox-ról,  Xorg-ról és Intel grafikus meghajtóról volt szó. Más ablakkezelő, vagy nem Xorg alatt gondok lehetnek!

Screen tearing javítása AMD kártyánál

Itt a kártya egy AMD Radeon RX 570 Series kártya volt. A probléma szintén hasonló, a megoldás is ugyanolyan volt.
A TearFtee opció aktuális állapotának ellenőrzéséhez az összes jelenleg csatlakoztatott kijelzőn futtasd az ismert parancsot:

xrandr --verbose | grep "TearFree"

Az én esetemben TearFree: auto háromszor (mivel három kijelzőm van csatlakoztatva).
Őszintén szólva nem vagyok teljesen biztos benne, mi alapján döntheti el, hogy mikor kapcsolja be vagy ki magát, amikor be van állítva auto értékre.
Nem nagyon volt Screen tearing, de időnként gyanús esetek előfordultak. Én ezért azt akarom, hogy legyen on, tehát folytassuk is a munkát. Ugyanozz mint az előnn létre kell hozni a fájlt, de most logikusan 20-amdgpu.conf néven. A tartalma is hasonló:

Section "Device"
        Identifier      "AMD Graphics"
        Driver          "amdgpu"
        Option          "TearFree" "true"
EndSection

Figyelj rá, hogy a nyílt kódú amdgpu a meghajtó, amit használok, azt nem tudom, hogy a zárt kódú PRO verziójúban ez miképp működik! Újra kell indítani az X11 munkamenetet egy ki- és bejelentkezéssel, vagy egyszerűen újraindítod a gépedet.

Konfigurációs fájlok szerkesztéshez ezt olvasd el!

Ha nem indul a művelet után a grafikus rendszer?

A létrehozott állományt törölni kell. Ezt akár grafikus felület nélkül, terminálból, de live rendszerrel, vagy egy másik telepítsen keresztül is megteheted!
Tipp: a rendszert érintő beállításoknál mindig egy-két változtatást tegyél és azt próbáld ki, ha kell újraindítással, így ha probléma van, akkor tudod mi lehet a gond. Gyorsan és hatékonyan visszaállíthatod az eredeti állapotot.

A cikkben leírtakat 2019. decemberében teszteltem MX linux alatt.
A cikket frissítettem: 2023-08-16
Az AMD kártyával Manjaro, Linux Mint és sima Arch alatt próbáltam ki 2023 augusztusában.