====== Blender crash a grafická karta Intel i915 ======
> **Poznámka k datu vzniku:** Tento článek vychází z původního textu z 23. 3. 2021. Jde o dobovou zkušenost a uvedený workaround nemusí odpovídat aktuálním verzím Blenderu, jádra Linuxu, Mesa ani ovladače Intel i915.
Při práci s Blenderem jsem se na notebooku s grafickou kartou Intel setkával s pády Blenderu. Původně jsem hledal chybu v samotné verzi Blenderu, nicméně se problém vyskytoval u všech verzí, které jsem tehdy zkoušel. To nejhorší na pádu bylo, že zamrznul celý desktop. Ne zřídka jsem musel použít ''Ctrl + Alt + F3'' a restartovat GDM.
Později jsem si v logu všiml těchto chyb:
[ 353.699935] Asynchronous wait on fence 0000:00:02.0:gnome-shell[3045]:1950 timed out (hint:intel_atomic_commit_ready [i915])
[ 353.700001] Asynchronous wait on fence 0000:00:02.0:gnome-shell[3045]:1950 timed out (hint:intel_atomic_commit_ready [i915])
[ 353.700058] Asynchronous wait on fence 0000:00:02.0:gnome-shell[3045]:1950 timed out (hint:intel_atomic_commit_ready [i915])
[ 356.165370] i915 0000:00:02.0: [drm] Resetting rcs0 for preemption time out
[ 356.165378] i915 0000:00:02.0: [drm] blender[5998] context reset due to GPU hang
[ 356.181847] i915 0000:00:02.0: [drm] GPU HANG: ecode 9:1:87f59eb9, in blender [5998]
[ 357.669334] i915 0000:00:02.0: [drm] Resetting rcs0 for preemption time out
[ 357.669343] i915 0000:00:02.0: [drm] blender[5998] context reset due to GPU hang
[ 357.686560] i915 0000:00:02.0: [drm] GPU HANG: ecode 9:1:87cabff2, in blender [5998]
[ 359.049269] i915 0000:00:02.0: [drm] Resetting rcs0 for preemption time out
[ 359.049278] i915 0000:00:02.0: [drm] blender[5998] context reset due to GPU hang
[ 359.063068] i915 0000:00:02.0: [drm] GPU HANG: ecode 9:1:87cabff2, in blender [5998]
Problém nakonec nebyl na straně Blenderu, ale spíš na straně ovladačů. Na fórech jsem našel tipy, že je potřeba použít novější jádro. Nakonec jsem zkompiloval nejnovější jádro a stejně se problém nevyřešil.
uname -a
Linux zenbook 5.10.13-051013-generic #202102032337 SMP Thu Feb 4 00:17:21 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
===== Řešení: workaround =====
Později jsem ve fórech našel řešení, které mi pomohlo nejvíc. Jeden pád jsem sice ještě zaznamenal, ale s tím, co se dělo předtím, se to nedalo srovnat. Problematika je podrobněji popsaná v článku [[https://medium.com/swlh/mx-linux-and-blender-crash-209a2a66f96e|MX Linux and Blender crash]].
Podle popisu by měla stačit jedna z následujících variant, nicméně tehdy jsem se raději rozhodl použít obě. První je spustit Blender s nastavením proměnné ''INTEL_DEBUG'' a pak zvýšit timeout pro GPU. Příkazy vypadají takto:
INTEL_DEBUG=reemit blender
echo 10000 > /sys/class/drm/card0/engine/rcs0/preempt_timeout_ms
===== Užitečné zdroje =====
* [[https://medium.com/swlh/mx-linux-and-blender-crash-209a2a66f96e|MX Linux and Blender crash]]
* [[https://itsubuntu.com/how-to-upgrade-linux-kernel/|How to upgrade Linux kernel]]
* [[https://itectec.com/ubuntu/ubuntu-how-to-apply-kernel-patches/|How to apply kernel patches]]
* [[https://github.com/mtompkins/linux-kernel-utilities|linux-kernel-utilities]]
* [[https://gitlab.freedesktop.org/mesa/mesa/-/issues/3748|Mesa issue 3748]]
* [[https://gitlab.freedesktop.org/mesa/mesa/-/issues/3736|Mesa issue 3736]]