Tips en Trucs 2020

Horizontale grafische storingen wegwerken

Bij snel bewegende beelden, zoals bij het afspelen van video en spellen, ontstaan storende horizontale beeldfouten. De afbeelding hieronder is een simulatie van de beeldfout.
Horizontale tearing
By Vanessaezekowitz - Own work, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=7437859

Deze beeldfouten ontstaan door het gelijktijdig weergeven van twee beelden, een deel van het oude en een deel van het nieuwe beeld. Een oplossing bestaat uit het pas weergeven van het beeld als het volledig klaar is. Zo geeft de videokaart enkel volledige beelden weer en verdwijnt de horizontale beeldfout. M.a.w. de software en grafische kaart bouwen het beeld eerst volledig op en geven het dan pas weer op het scherm. Dit zorgt voor een stabieler en dus aangenamer beeld, maar zorgt ook voor een vertraging en prestatieverlies, wat echter reuze meevalt.

Niet iedereen heeft last van deze beeldfouten, zo heb ik er op mijn laptop met een Intel grafische kaart nooit last van. Op mijn Desktop computer met een NVidia grafische kaart met NVidia stuurprogramma's (geen open source) heb ik er in de browser bij het kijken naar streaming TV wel last van. Op dezelfde computer bij het afspelen van video's met VLC heb ik er dan weer geen last van. Mocht je met een NVidia grafische kaart en NVidia stuurprogramma last hebben van horizontale beeldfouten (tearing), kan je dit als volgt oplossen.

Informatie verzamelen

Start het NVidia configuratieprogramma via de Programmastarter > Toepassingen > Systeem > Configure NVIDIA X Server Settings (NVIDIA X Server Settings). Activeer het onderdeel X Server Display Configuration en zorg dat bij de keuzelijst Selection uw monitor geselecteerd is. Selecteer bij Resolution de standaard resolutie en de beeldfrequentie (Refresh) van uw monitor.
NVidia Display Configuration

Activeer daarna het onderdeel X Server XVideo Settings en activeer ook daar uw monitor.
NVidia X Server Settings

Activeer opnieuw de X Server Display Configuration en sla het configuratiebestand met de knop Save to X Configuration File naar het bestand xorg.conf in uw Persoonlijke map. Negeer eventuele foutmeldingen. Sluit het NVIDIA X Server Settings programma af.

Commandovariabelen

Met de volgende opdracht kan je de NVidia kaart instellen zodat horizontale beeldfouten op uw monitor niet meer voorkomen.

nvidia-settings --assign CurrentMetaMode="CONNECTION:RESOLUTION_RATE +0+0 { ForceFullCompositionPipeline = On }"

Deze opdracht moet echter verder aangevuld worden met gegevens van uw monitor. Om de CONNECTION variabele te achterhalen, start je een Terminal en voer je de volgende opdracht uit:

dany@main:~> xrandr
Screen 0: minimum 8 x 8, current 3840 x 2160, maximum 32767 x 32767
DVI-D-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 disconnected (normal left inverted right x axis y axis)
DP-0 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)
DP-2 disconnected (normal left inverted right x axis y axis)
DP-3 disconnected (normal left inverted right x axis y axis)
DP-4 connected primary 3840x2160+0+0 (normal left inverted right x axis y axis) 527mm x 296mm
   3840x2160     60.00*+  29.98  
   2560x1440     59.95  
   2048x1280     59.96  
   1920x1200     59.88  
   1920x1080     60.00    60.00    59.94    50.00    23.98  
   1600x1200     60.00  
   1600x900      60.00  
   1280x1024     75.02    60.02  
   1280x720      60.00    59.94    50.00  
   1152x864      75.00  
   1024x768      75.03    60.00  
   800x600       75.00    60.32  
   720x576       50.00  
   720x480       59.94  
   640x480       75.00    59.94    59.93  
DP-5 disconnected (normal left inverted right x axis y axis)

Hieruit kan ik afleiden dat mijn monitor met de computer verbonden is via de verbinding (connected) DP-4 (Display Port 4). De CONNECTION wordt dus DP-4.

De RESOLUTION variabele kunnen we hier ook afleiden en is voor mijn monitor 3840x2160.

De RATE variabele is voor mijn monitor 60. Daarvoor kijk je naar de monitor gegevens. Elke regel toont een door de monitor ondersteunde resolutie met verschillende beeldfrequenties. Eén van die beeldfrequenties heeft een sterretje (huidige beeldmodus). De beeldfrequente met een plusteken is de aanbevolen beeldmodus). Mijn monitor gebruikt in het voorbeeld momenteel de aanbevolen beeldmodus. Bij beeldfrequenties mag je de waarde steeds afronden naar het dichtbijgelegen geheel getal, bij een waarde van 60.02 mag je dus gerust voor RATE de waarde 60 nemen. De in de Terminal uit te voeren opdracht voor mijn monitor wordt dan:

dany@main:~> nvidia-settings --assign CurrentMetaMode="DP-4:3840x2160_60 +0+0 { ForceFullCompositionPipeline = On }"

Bij het uitvoeren van deze opdracht wordt het scherm even zwart. Daarna heb je geen last meer van de horizontale beeldfout. Tot je de computer herstart.

Beeldcorrectie bij systeemstart instellen

Hiervoor kan je verschillende oplossingen gebruiken. De systeemoplossing (X Org configuratie aanpassen en activeren) is nogal een riskante onderneming. Bij de minste fout heb je helemaal geen beeld meer en moet je in staat zijn via een niet grafische terminal de fout te herstellen. Daarenboven is de configuratie van X Org een complexe aangelegenheid. Je kunt gegevens die je daarvoor nodig hebt wel uit het hierboven aangemaakte xorg.conf bestand halen.

Ik beperk me tot de oplossing waarbij bovenstaande (geteste en werkende) opdracht wordt uitgevoerd bij het aanmelden van een gebruiker. Schrijf met uw favoriete teksteditor het volgende script en sla dit als nvidia.sh op in de bin map van uw Persoonlijke map. Opgelet: pas het script aan voor uw monitor.

#!/bin/bash
# Oplossing voor Horizontal screen tearing
# nvidia-settings --assign CurrentMetaMode="CONNECTION:RESOLUTION_RATE +0+0 { ForceFullCompositionPipeline = On }"
# CONNECTION,RESOLUTION en RATE opvragen met xrandr
nvidia-settings --assign CurrentMetaMode="DP-4:3840x2160_60 +0+0 {ForceFullCompositionPipeline = On }"

Maak het script uitvoerbaar met de opdracht:

dany@main:~> chmod +x bin/nvidia.sh

Start via de Programmastarter de Systeeminstellingen en start het onderdeel Opstarten en afsluiten. Activeer de categorie Autostart en klik op de knop Script toevoegen... om het pas aangemaakte script bij het Opstarten uit te voeren.

Waarschijnlijk ga je de eerste keer toestemming moeten geven, daarna nooit meer.