BlackMagic DaVinci Resolve
DaVinci Resolve 19 на Sisyphus.
Система:
$ uname -a Linux 6.6.51-un-def-alt1 #1 SMP PREEMPT_DYNAMIC Thu Sep 12 12:20:03 UTC 2024 x86_64 GNU/Linux
Видеокарта:
$ inxi -G Device-1: NVIDIA TU104GL [Quadro RTX 4000] driver: nvidia v: 550.107.02 Device-2: Blackmagic Design DeckLink HD Extreme 3D/3D+ driver: blackmagic_driver v: N/A Display: wayland server: X.Org v: 1.24.1.2 with: Xwayland v: 24.1.2 compositor: kwin_wayland driver: X: loaded: modesetting,nvidia unloaded: fbdev,vesa gpu: nvidia,nvidia-nvswitch resolution: 1: 1920x1080~60Hz 2: 1920x1080~60Hz 3: 1920x1080~60Hz API: EGL v: 1.5 drivers: nvidia,swrast,zink platforms: wayland,x11,surfaceless,device API: OpenGL v: 4.6.0 compat-v: 4.5 vendor: nvidia mesa v: 550.107.02 renderer: Quadro RTX 4000/PCIe/SSE2 API: Vulkan v: 1.3.290 drivers: N/A surfaces: xcb,xlib,wayland
При запуске выдает ошибку:
$ /opt/resolve/bin/resolve :symbol lookup error: /usr/lib64/libpango-1.0.so.0: undefined symbol: g_string_free_and_steal
хотя я нашел эту строчку без проблем:
$ nm -gD /usr/lib64/libpango-1.0.so.0 | grep g_string_free_and_steal U g_string_free_and_steal
Ошибка возникает из-за версии библиотек в /opt/resolve/libs они отличаются от системных. Если мы перенесем или удалим эти библиотеки из /opt/resolve/libs, то DaVinci Resolve будет использовать системные библиотеки вместо родных.
Решение
Создадим папку disable_libs в /opt/resolve/libs и перенесём туда библиотеки:
# cd /opt/resolve/libs # mkdir disabled_libs # mv libglib-2.0.so* libgio-2.0.so* libgmodule-2.0.so* disabled_libs/
Так же для работы DaVinci нужно установить пакеты:
apt-get install libnvidia-opencl libnvidia-encode libnvidia-nvcuvid libnvidia-nvvm nvidia-cuda-gdb nvidia-cuda-toolkit
Запускаем DaVinci.
DaVinci работает в Plasma X11.
Теперь никаких библиотек не требует, с первого взгляда всё работает.
Выставляем принудительно CUDA и видеокарту NVIDIA, автоматическое определение нужно снять.
DaVinci определил плату Blackmagic Design DeckLink HD Extreme 3D/3D+.
проблемы
В прошлый раз я указал библиотеку в переменной LD_PRELOAD:
$ LD_PRELOAD=/lib64/libglib-2.0.so.0 /opt/resolve/bin/resolve
Но после обновления системы, этот метод больше не работает. Начинает ссылаться на другую библиотеку.
$ LD_PRELOAD=/lib64/libglib-2.0.so.0 /opt/resolve/bin/resolve /opt/resolve/bin/resolve: symbol lookup error: /lib64/libgdk_pixbuf-2.0.so.0: undefined symbol: g_task_set_static_name
В этот раз (описал в начале статьи) пришлось отключить библиотеки которые идут в комплекте с DaVinci:
libgio-2.0.so libgio-2.0.so.0.6800.4 libglib-2.0.so.0 libgmodule-2.0.so libgmodule-2.0.so.0.6800.4 libgio-2.0.so.0 libglib-2.0.so libglib-2.0.so.0.6800.4 libgmodule-2.0.so.0