Arch Linux > Desktopová prostředí a správci oken

GLX backend a problem s trhanim

(1/1)

MadMax:
Zdravím,

pôvodne som vás (lombardo1981) prosil o radu ako vyriešiť problém s trhaním (vsync) keď je backend nastavený na GLX. Použil som váš configurák comptonu a problém zmizol, no objavil sa ďalší v openboxe. Možno to je len najaká banalita. V openboxe som otvoril nové okno firefoxu a pretiahol ho na druhú plochu, ale prekreslil mi wallpaper a ostali po ňom miesta s fragmentami. Odstránil som ich opätovným ťahaním okna cez ne. Neviem či to zrozumiteľne vysvetľujem, neviem to totiž pomenovať. Ale nedeje sa to vždy. Skúšal som to znovu dosiahnuť a nepodarilo sa. Stalo sa to mimovoľne iba 2x.

Pôvodne to boli chyby vo vykreslovaní v Thunare. Keď som scrolloval dochádzalo k rozdvojeniu ikon. Ako keby ste na seba položili dva listy papiera a jeden posunuli o tretinu dĺžky listu. Xrender to nerobí, ale pod xrender nie je pekný fading. Hlavne pri Firefoxe je to obzvlásť nepekné. Preto by som rád použil glx. Ešte dodám, že na Slackware glx backend nerobí žiaden problém, alebo aspoň o žiadnom neviem. To ale bola moja konfigurácia comptonu, ktorá v arch linuxe akosi nefunguje.

Len zhrniem že používam:
- WM: i3wm a Openbox
- CPU: intel i5 2500K sandy bridge
- GPU: integrovanú, či ako sa to mu hovorí :)
- RAM 4G

Ďakujem

lombardo1981:
Ahoj.
V prvom rade mi pokojne tykaj. Nebudem sa cítiť taká stará.  ;D
Ale srandičky bokom... Najskôr, tu je odkaz na manuál pre optimalizáciu výkonu. Manulálová stránka:
--- Kód: ---man compton
--- Konec kódu ---

Tento parameter je optimalizácia predovšetkým pre nvidia. Upravuje zlú synchronizáciu medzi X Render a GLX. Skús ho zakomentovať:

--- Kód: ---xrender-sync-fence = true
--- Konec kódu ---

Ďalej, čo by mohol spôsobovať problémy je tento parameter:
--- Kód: ---glx-swap-method = "exchange"
--- Konec kódu ---

Skús ho zmeniť na undefined, čo je predvolená hodnota alebo na buffer-age (autodetekciu):

--- Kód: ---glx-swap-method = "undefined"
glx-swap-method = "buffer-age"
--- Konec kódu ---


Ďalšie možnosti sú:
--- Kód: ---undefined/exchange/copy/3/4/5/6/buffer-age

undefined is the slowest and the safest, and the default value.copy is fastest, but may fail on some drivers,
2-6 are gradually slower but safer (6 is still faster than 0). Usually, double buffer means 2, triple buffer means 3.
buffer-age means auto-detect using GLX_EXT_buffer_age
--- Konec kódu ---

Ďalší parameter, ktorý môže spôsobovať problémy je:
--- Kód: ---glx-no-rebind-pixmap = true
--- Konec kódu ---

Dostupné backendy:
--- Kód: ---xrender
glx
xr_glx_hybrid
--- Konec kódu ---

glx-copy-from-front sa pokiaľ možno vyhýbaj, značne znižuje výkon. glx-use-copysubbuffermesa môže byť použitá namiesto glx-swap-method. Nikdy nie spolu. Môže narušiť vsync. xrender-sync môže vylepšiť synchronizáciu medzi X Render a GLX. A jeho použitie sa odporúča. Ide o parameter, ktorý nahradí xrender-sync-fence.

Snáď niečo z toho pomôže.

MadMax:
Vďaka za rozpísanie možností :)

Toto musím mať odkomentované inak by som mal permanentné trhanie obrazu:

--- Kód: ---xrender-sync-fence = true
--- Konec kódu ---

Toľko som zatiaľ zistil. Ale problém sa už viacej aj tak neobjavil. Budem priebežne skúšať aj ostatné možnosti, stále som vo fáze testovania aj samotného Arch Linuxu. Zdá sa mi, že už je to ok, no dám tomu ešte nejaký ten týždeň a ak to pôjde bez chýb, budem to považovať za vyriešené.
V každom prípade ma tvoj config comptonu veľmi potešil. Už som ani nedúfal.

Ďakujem :)

lombardo1981:
Nemáš za čo. Aj za rady, aj za konfigurák. :)

Tiež mi chvíľu trvalo, kým som si compton optimalizovala. Len, keď som písala odpoveď, tak som sa na neho ešte raz pozrela, a zmenila som jeden parameter:

--- Kód: ---glx-swap-method = "undefined"
--- Konec kódu ---

Toto by som odporučila zmeniť. Plus pridať:

--- Kód: ---xrender-sync = true
--- Konec kódu ---

MadMax:
No, tak som to trochu otestoval :) Ale teraz ma napadlo, že na začiatku som mal zmieniť aj iné súvislosti. Aby všetko fungovalo musel som nastaviť:

/etc/X11/xorg.conf.d/20-intel.conf
/home/USER/.drirc
/home/USER/.config/compton.conf


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

--- Kód: --- Section "Device"
  Identifier  "Intel Graphics"
  Driver      "intel"
  Option      "AccelMethod"  "sna"
  Option      "DRI"  "true"
  Option      "DRI"  "2"
  Option      "TearFree"  "true"
EndSection

--- Konec kódu ---

/home/USER/.drirc

--- Kód: ---<device screen="0" driver="dri2">
<application name="Default">
<option name="vblank_mode" value="0"/>
</application>
</device>

--- Konec kódu ---

/home/USER/.config/compton.conf

--- Kód: ---backend = "glx";
vsync = "opengl-swc";
refresh-rate = 0;
glx-no-stencil = true;
glx-swap-method = "undefined";      # pravdepodobne u mňa fungujú dobre všetky tri možnosti - undefined - copy - exchange
#glx-swap-method = "copy";
#glx-swap-method = "exchange";
#glx-no-rebind-pixmap = true;
# glx-copy-from-front = true;
# glx-use-copysubbuffermesa = true;
xrender-sync-fence = true;
xrender-sync = true
unredir-if-possible = false       # toto bolo pôvodne "true", ale spôsobovalo to flickering fullscreen aplikácii
paint-on-overlay = true;
mark-wmwin-focused = true;
mark-ovredir-focused = true;
# use-ewmh-active-win = false;
detect-transient = true;
detect-client-leader = true;
detect-client-opacity = true;
dbe = false;
sw-opti = false;
invert-color-include = [ ];
focus-exclude = [ "class_g = 'mpv'" ];

## Shadow
shadow = true;
no-dnd-shadow = true;
no-dock-shadow = false;
clear-shadow = true;
shadow-ignore-shaped = true;
detect-rounded-corners = true;
shadow-radius = 7;
shadow-offset-x = -10;
shadow-offset-y = -10;
shadow-opacity = 0.3;
# xinerama-shadow-crop = true;
# shadow-exclude-reg = "x10+0+0";
#shadow-exclude = [ "name = 'Notification'" ];
shadow-exclude = [
"n:e:Notification",
"g:e:Synapse",
"g:e:Conky",
"class_g = 'Firefox' && argb",
"n:w:*Chromium*",
"class_g ?= 'Xfce4-notifyd'",
"class_g ?= 'Xfce4-power-manager'",
"name = 'Notification'",
# workaround for conky until it provides window properties:
"override_redirect = 1 && !WM_CLASS@:s",
# "class_g ?= 'Dunst'",
# disable shadows for hidden windows:
"_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'",
"_GTK_FRAME_EXTENTS@:c",
# disables shadows on sticky windows:
# "_NET_WM_STATE@:32a *= '_NET_WM_STATE_STICKY'",
# disables shadows on i3 frames
"class_g ?= 'i3-frame'"
];

# shadow-exclude-reg = "x10+0+0";
# xinerama-shadow-crop = true;

## Menu opacity
menu-opacity = 0.9;
inactive-opacity = 0.85;
active-opacity = 1;
#frame-opacity = 0.80;
# inactive-opacity-override = true;
alpha-step = 0.01;
inactive-dim = 0.0;
# blur-background = false;
# blur-background-frame = false;
# blur-background-fixed = false;
blur-kern = "3x3box";
opacity-rule = [ ];
blur-background-exclude = [ ];
 
 
## Fading
fading = true;
fade-delta = 5;
fade-in-step = 0.03;
fade-out-step = 0.03;
# no-fading-openclose = true;
fade-exclude = [ ];
 
 
## Window type settings
wintypes:
{
  tooltip = { fade = true; shadow = true; opacity = 0.85; focus = true; };
  menu = { shadow = false; };
  dropdown_menu = { shadow = true; };
  popup_menu =  { shadow = true; };
  fullscreen = { fade = true; shadow = false; opacity = 1; focus = true; };
};

--- Konec kódu ---

Zdá sa mi, že to môžem považovať za uzavreté :) Pripájam screenshot, že kam som to dopracoval. Snáď nevadí odkaz na Abclinuxu http://www.abclinuxu.cz/desktopy/madmax-20171013

Navigace

[0] Seznam témat

Přejít na plnou verzi