[devel] Q: libGL* transition to GLVND

Konstantin Lepikhov lakostis на altlinux.org
Ср Май 31 23:23:38 MSK 2017


Привет!

Поначалу я это собрал для себя, ну раз оно собралось и заработало, решил
спросить нужно ли это в Сизифе.

Что такое GLVND? Грубо говоря, это такая библиотека, которая позволяет
перенаправлять стандартные вызовы в libGL в vendor-specific библиотеку,
которую предоставляет соответствующий пакет. Например, в случае
dri/gallium это будет Mesa, а в случае nvidia - блоб от nvidia.
Поддерживается функционал libGL, libEGL и GLES, заявлена поддержка
wayland.

Чем это интересно? Тем, что больше не нужны костыли, которые переключают
*GL библиотеки в случае установки vendor-specific и несовместимых с Mesa
3D драйверов. В случае ALTLinux это множество костылей и подпорок которые
живут в %_libexec/X11/* и %_sysconfdir/X11/%_lib. Как положительный
момент, улучшается поддержка железа и в системе могут одновременно
сосушествовать несколько библиотек, что также упрощает поддержку на уровне
начальной конфигурации и установки. Еще положительный момент -
возможность тестирования библиотек не удаляя или пересобирая системные,
т.к. libGL загрузчик не меняется и все вызовы остаются на своих местах.

Полное описание процесса [1].

Также полезно ознакомиться в документом [2] от Fedora/RH, где переезд уже
случился.

На практике потребуется свежая сборка libglvnd, mesa с поддержкой этого
хозяйства, и патчинг всего, что перестало работать после переезда. У меня
сломался только xdriinfo и он уже починен в RH (сборка отправлена в сизиф,
но пока ждет approve от владельца пакета). Еще это все нужно бутстрапить,
т.е. собрать libglvnd, пересобрать mesa с bootstrap headers, потом
пересбрать mesa с полным набором.

В случае mesa я пошел по самому легкому пути, т.е. собрал свежий snapshot
из git и включил там glvnd. Как следствие, еще туда же собрался и llvm5.

Из текущих проблем:
- GPU autodetect в xorg server работает очень странно, надо разбираться
  кто виноват, патчи от ALTLinux или апстрим.
- Нельзя переключить libglx (в случае nvidia это необходимо).
- Непонятно, работают ли с этим дрова от AMD (которые AMDGPU PRO).

Также я собрал ознакомительный livecd [3] который любой может поставить и
посмотреть, как это выглядит на практике без установки всех пакетов в
систему.

Репозиторий с пакетами [4], исходные коды доступны у меня на git.alt.

Рад выслушать любые отзывы и предложения с обоснованиями.

Спасибо за внимание!

1. https://github.com/NVIDIA/libglvnd
2. https://fedoraproject.org/wiki/Changes/Vendor_Neutral_libGL
3. http://www.unsafe.ru/lakostis/livecd/current/live-lakostis-20170526-x86_64.iso  
4. http://www.unsafe.ru/lakostis/RPMS/ALTLinux/glvnd/

-- 
WBR et al.


Подробная информация о списке рассылки Devel