[Arm64-baikalm] Поддержка двух мониторов

Nikolay Zhuravlev nikolay.zhuravlev на elpitech.ru
Вт Мар 29 14:38:08 MSK 2022


Коллеги,

Мы тут в Элпитехе недавно экспериментировали с настройкой работы одновременно
двух мониторов. Поскольку не во всех дистрибутивах аналогичные эксперименты
были полностью успешные, данная информация может быть кому-то полезной.

Настроить классические Иксы, без Xwayland, так, чтобы они работали на два
монитора, нам удалось только в режиме, когда мониторы создают общее вертикальное
пространство, не горизонтальное.  Это связано с особенностями поддержки
байкальской графики в Иксах, и обойти это, по нашему мнению, не получится. Либо
можно запускать два разных сервиса Xorg, по одному на каждый монитор, но такой
режим тоже мало кому покажется интересным, потому что нельзя будет перетаскивать
окна, да и вообще это дичь.

Поэтому мы сосредоточились на изучении возможностей Wayland и Xwayland, чтобы
показать, что железо с Байкал-М способно работать в требуемом режиме,
одновременно поддерживать безглючное 3D ускорение с panfrost, и что дело только
в софте.

Сравнивали два дистрибутива: Debian sid с нашими ядрами и Simply Linux
10.0 с родным ядром.

Статус экспериментов на данный момент такой:

Удалось запустить Debian sid с Wayland на 2 монитора с поддержкой panfrost 3D
ускорения в Mesa 21.3.5.  Ядро было наше 5.4 с github/Elpitech. Более новое наше
5.10 тоже работает. Использовалась плата ET101-MB 1.2, с DP и HDMI на борту, но
в принципе можно использовать и моноблок с LVDS/HDMI.  Запускали в такой
конфигурации: sddm autologin + kde + plasmawayland, в режиме FullHD + FullHD:

sudo apt install plasma-workspace-wayland

/etc/sddm.conf.d/autologin.conf
[Autologin]
User=user
Session=plasmawayland

Драйвер panfrost должен быть загружен. Если его нет, то будет использоваться
софтверный рендеринг. С драйвером panfrost рендеринг в glmark2 должен быть
примерно с такими велечинами FPS:

./glmark2-out/bin/glmark2-es2-wayland --annotate -b shading
=======================================================
    glmark2 2021.02
=======================================================
    OpenGL Information
    GL_VENDOR:     Panfrost
    GL_RENDERER:   Mali-T620 (Panfrost)
    GL_VERSION:    OpenGL ES 2.0 Mesa 21.3.5
=======================================================
[shading] <default>: FPS: 852 FrameTime: 1.174 ms
=======================================================
                                  glmark2 Score: 852 
=======================================================

Интересно, что в такой конфигурации наконец-то полностью ушли глюки с
отображением WebGL, которые мы раньше наблюдали в сайтах типа webglearth.com и
на тестовых приложениях WebGL. Видимо, что-то в Mesa в последнее время
основательно доработали в плане поддержки ARM64.

Пробовали также Debian с более классической схемой: gdm + gnome + Xwayland.
Тоже работает, но как-то странненько: Загрузка Дебиан ОС занимает около 2,5
минут. Большую часть времени на экранах будет чёрный фон с курсором.  По
завершению загрузки отобразится приглашение ОС.  Приглашение будет только на
мониторе, подключённом через DP.  При первом логине Xwayland не запустился, но
если перелогиниться в GUI, то запускается. Два монитора работают. Работает также
3D ускорение с panfrost.  Такой вариант может быть интересен в качестве
доработки, так как многим совершенно не захочестся переезжать на
sddm/kde/plasmawayland ради всего лишь двух мониторов.

При экспериментах с различными наборами софта заметили, что часто препятствия
создает на начальном этапе именно display manager (lightdm, gdm, sddm). Поэтому
для экспериментов полезно его поотключать, либо настроить в режиме автологина.
Может быть для display manager можно настроить какое-то собственное
консервативное разрешение и жестко привязать его к одному монитору, чтобы он дал
залогиниться и запустить всё остальное (Xwayland тот же). Не разбирались.

Второй момент, на который нужно обращать внимание - это то, что, вероятно, не
всякая версия Mesa соглашается работать с двумя мониторами и, одновременно, с
поддержкой panfrost ускорения. 

Теперь про эксперименты с Simply Linux 10.0 на плате ЕТ101-MB-1.2
и двумя мониторами.

Мы пробовали slinux-10.0-aarch64.iso настроить для двух мониторов. Это удалось
сделать, но только в режиме без panfrost 3D ускорения в Mesa. Правда,
sddm, KDE и plasmawayland не пробовали. Использовали только lightdm + GNOME,
которые там по дефолту.

В плате в SPI зашит другой dtb, который поддерживает STDP, но в конфиге
дистрибутивного ядра не было драйвера STDP, поэтому обошлись прописыванием
devicetree /boot/bm-et101.dtb в grub.cfg. Dtb взяли из нашего ядра
git на github.com:Elpitech/baikal-m-linux-kernel.git.  Это ограничило разрешение на
дисплей-порте до FullHD, но для эксперимента это как раз подходит.

Далее, пробовали убедить lightdm грузить GNOME с поддержкой Xwayland, но не
получилось. Однако, удалось загрузиться с gnome-wayland в режиме автологина:

/etc/lightdm/lightdm.conf

[Seat:*]
autologin-user=user
autologin-session=gnome-wayland

# groupadd -r autologin
# gpasswd -a user autologin      # re-login for the changes to take effect

Два монитора после этого формируют общий десктоп. Желательно, чтобы оба они были
максимум FullHD. Сочетать FullHD + 4К нам не всегда удавалось.  Впрочем,
байкальцы в сопроводительной документации к своим СДК вроде утверждали, что
Байкал-М стабильно поддерживает два монитора только в режиме FullHD + FullHD.

Если вернуть поддержку panfrost в Mesa, то два монитора перестают работать
в GNOME.

Еще интересная деталь. Если забить на GNOME + Xwayland, а запускать просто
Weston, то чистый Wayland прекрасно работает вместе с panfrost'ом: 3D ускорение
распознается. Правда, нам не удалось настроить работу с двумя мониторами в таком
режиме. 

-- 
WBR, Nick Zhuravlev
Software Developer
www.elpitech.ru




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