LINUX.ORG.RU

GNOME on Wayland на Nvidia-блобе. История успеха

 , , , ,


3

5

Итак, свершилось! Мне наконец-то удалось запустить Wayland-сессию Гнома на проприетарном драйвере Nvidia. Для тех, кто не в теме: начиная с версии драйвера 364.12, Nvidia реализовала в нём начальную поддержку Wayland, однако несовместимую с тем, что используется в Mesa. В Mesa применяется библиотека GBM - Generic Buffer Manager, аллокатор буферов изображений. Реализация Nvidia основана на расширениях EGLStreams и EGLDevice, являющихся кроссплатформенным открытым стандартом Khronos. В списке рассылки разработчиков Wayland, Nvidia представила патчи для композитного менеджера Weston, однако разработчики их не приняли и, можно сказать, послали Nvidia подальше. Зато эти патчи адаптировали для Mutter и Sway, но о качестве работы будет ниже. Nvidia же в прошлом году анонсировала новый аллокатор, разрабатываемый совместно с разработчиками Mesa, но с момента последней новости - тишина. Nvidia не хочет создавать что-то платформоспецифичное, так как ей проще поддерживать единую кодовую базу для всех ОС.

Поддержка EGLStreams обеспечена в GNOME 3.24, однако для этого, оконный менеджер Mutter должен быть собран с --enable-egl-device Как оказалось, в Fedora 26 он собран без этой опции, также из-за применения библиотеки GLvnd, получаются лютые тормоза и лаги мышки. Аналогично в Arch Linux.

Поэтому для тестов я выбрал альфа-версию Ubuntu 17.10. Итак, что для этого нужно проделать:

1) установить драйвер Nvidia (sudo apt install nvidia-375)
2) включить DRM/KMS (по умолчанию в блобе он выключен из-за недоделанности и проблем со SLI-конфигурациями). Для этого в /etc/default/grub, в секцию параметров ядра, добавляем строку nvidia-375-drm.modeset=1 Номер драйвера указывать только для Ubuntu! Признаком успешного запуска DRM/KMS является Xorg, запущенный от юзера (в этом можно убедиться в менеджере процессов)

По идее, если всё сделано правильно, но сразу после перезагрузки Гном должен запуститься на Wayland, однако меня встречало окно входа в систему, и сеанс с Wayland никак не грузился. Поэтому я переключился на пятую tty-консоль, и стартанул сессию командой dbus-run-session -- gnome-shell --display-server --wayland

И о чудо! Оно запустилось! Начну с приятных моментов. Отрисовка значительно быстрее, чем с блобом на иксах. Курсор не отстаёт от окна ни на пиксель, анимации плавненькие, ресайз окон не тормозит. Может немного лагануть меню приложений, но я грешу на старый тормозной HDD, на котором я всё тестировал. Flatpak-приложения работают, но не все. Видео работает без проблем. Собственно, на этом приятное заканчивается. Далее оглашаю список ограничений:

1) Первое и самое главное - не работает Xwayland. В большинстве приложений. Из иксовых приложений успешно запустились лишь Firefox, Clementine и Chromium, остальные падают в корку с ошибкой Could not initialize GLX Потому запуск возможен только нативных Wayland-приложений. Чтобы запустить что-то на Qt5, нужно добавить переменную окружения export QT_QPA_PLATFORM=wayland, но тут тоже есть неприятные моменты.

2) Не запускается панель управления Nvidia (потому на скринах её нет), не работают приложения, юзающие веб-камеру (правда я только Cheese запускал), и как следствие предыдущего пункта - не работает ни одна игра (кроме встроенных гномовских) или эмулятор игровых консолей.

3) Иногда грузит CPU на 100%. Баг широко известен в сети, но я не знаю что думает на этот счёт Nvidia. От апстрима Гнома ответа не дождался.

4) KMS работает частично, в частности переключение между виртуальным консолями происходит секунды 2, а возврат в графическую может проходить и все 5. На свободном драйвере всё происходит мгновенно. Да, если вдруг кто спросит - нет, KMS в блобе не даёт высокое разрешение в консоли. Нету драйвера для fbdev, хотя с efifb вроде как разрешение высокое.

5) Родная панель управления Гнома не работает в такой конфигурации, потому запускается её сильно кастрированный вариант (скрин ниже)

Итог: я не знаю почему в Mesa выбрали GBM вместо открытого стандарта. Ведь Нвидию, по сути, обвинить не в чем. В кое-то веки смогла в стандарты. Я не думаю что будут какие-либо серьёзные улучшения как работы блоба с EGLStreams, так и оконных менеджеров куда эти патчи добавили, ибо апрстрим не принял, и тестировать некому. Хотя посмотрим как оно будет. На данный момент вердикт - неюзабельно.

Ещё скриншоты:

Firefox и LibreOffice
Activities
SMplayer (Qt5) нативно в Wayland
Панель управления
Nautilus и Clementine

>>> Просмотр (1600x900, 453 Kb)

★★★★★

Проверено: JB ()

Ответ на: комментарий от grem

Это не существующая технология?

Выше уже сказали, что когда разрабатывался GBM - EGLStream и в помине не было.

На самом деле виноваты они все, так как до сих пор не договорились о сотрудничестве.

Договорились и сейчас идёт работа, почитай внимательно. Проблема в том, что договариваться пришлось только из-за одной Нвидии. Ибо все остальные вендоры поддерживают то, что есть. Intel и AMD поддерживают Wayland с момента его появления в Mesa, Nouveau тоже его поддерживает. И тут приходит Nvidia и заявляет, мол, ваш GBM хорош, но он линуксоспецифичен. А мы тут ещё BSD, Солярку и винду поддерживаем. И в итоге EGLStream, хоть и оказался более функционален, чем GBM, принёс ещё больше недостатков, как то:

1) отсутствие поддержки у других вендоров
2) совершение очень большой работы по внедрению в драйвера
3) малопонятное или неопределённое поведение в некоторых сценариях. Также минусом как раз является то, что он EGL-based https://www.x.org/wiki/Events/XDC2016/Program/Unix_Device_Memory_Allocation.pdf

Sunderland93 ★★★★★ ()
Ответ на: комментарий от Polugnom

Ога, вот только ситуация такая, что на квадратных колёсах всё едет, а на круглых еле удаётся с места сдвинуть.

Sunderland93 ★★★★★ ()
Ответ на: комментарий от Sunderland93

AMD поддерживают Wayland

А как при этом с поддержкой DE? Gnome, помнится, какое-то время не очень то дружил с fglrx. Или с момента существования amdgpu всё стало нормально? Amdgpu-pro тоже проблем теперь не вызывает?

И тут приходит Nvidia и заявляет, мол, ваш GBM хорош, но он линуксоспецифичен. А мы тут ещё BSD, Солярку и винду поддерживаем.

Не такой уж плохой подход в унификации решения.

grem ★★★★★ ()
Ответ на: комментарий от Sunderland93

Ты сейчас прям любителей иксов цитируешь слово в слово.

Polugnom ★★★★★ ()
Ответ на: комментарий от grem

А как при этом с поддержкой DE?

FGLRX мёртв, свободные дрова превзошли его по производительности. Да и AMDGPU-PRO проблем в работе не вызывает. Но как он в Wayland - не знаю.

Не такой уж плохой подход в унификации решения.

Где они были раньше, когда Wayland только только выходил в свет? Правильно, они сказали что ни Wayland, ни Mir поддерживать не станут. А как только всё допилили до работоспособного состояния - припёрлись и начали толкать свой велосипед. При чём одни и те же патчи они предлагали 2 раза. И оба раза их слали подальше. Типичная Nvidia

Sunderland93 ★★★★★ ()
Ответ на: комментарий от Polugnom

Факт в том что на Wayland пока действительно не всё работает, а уж на проприетарной Нвидии и подавно

Sunderland93 ★★★★★ ()
Ответ на: комментарий от Sunderland93

> FGLRX мёртв, свободные дрова превзошли его по производительности

Не замечал. У меня AMDGPU-PRO быстрее.

ZenitharChampion ★★★★★ ()

Я так понял вейланд на невидии еще долго будет не готов?

Im_not_a_robot ★★★★ ()
Ответ на: комментарий от Sunderland93

Ну тут никто не спорит. И с таким подходом работать будет не скоро.

Polugnom ★★★★★ ()
Ответ на: комментарий от Sunderland93

FGLRX мёртв, свободные дрова превзошли его по производительности

Не знаю, не знаю. Как раз в отпуске подумываю вернуться на gentoo, там то и сравню. Сам ati-drivers уже убрали из реп (странное решение), но у меня есть копия ebuilds (+patch) из их git и сам драйвер. Сравнить хочу для radeon hd5850 в Bioshock Infinite, Tomb Raider. Перед сносом Mint 17.3 ещё раз запущу встроенные тесты этих игр в нём.

grem ★★★★★ ()
Последнее исправление: grem (всего исправлений: 2)
Ответ на: комментарий от BceM_IIpuBeT

Тогда лучше просто интел-видиокарты покупать и все. Зачем платить больше.

ipeacocks ★★★★★ ()

Запустилось, ну и чёрт с ними со всеми. Рано пока в этот блендер руки совать.

kirill_rrr ★★★★★ ()

Признаком успешного запуска DRM/KMS является Xorg, запущенный от юзера
запущенный от юзера

А что, где-то эта свалка костылей продолжает с правами рута запускаться?

Meyer ★★★ ()
Ответ на: комментарий от Meyer

А что, где-то эта свалка костылей продолжает с правами рута запускаться?

Обычно на ней стоит SUID-флаг. То есть запускается от юзера, но получает root-права. Чтобы запустить от юзера, нужны: systemd-logind, KMS драйвера, и совместимый дисплейный менеджер. Из последнего на данный момент - это только GDM. Но можно обойтись и без него, и стартовать иксы через startx

Sunderland93 ★★★★★ ()
Ответ на: комментарий от Sunderland93

systemd-logind

Не нужен. Достаточно группы, имеющей права доступа к видео и вводу. Non root Xorg

Meyer ★★★ ()
Ответ на: комментарий от Meyer

А что, где-то эта свалка костылей продолжает с правами рута запускаться?

Ну можно сказать, что в практически любом линуксе из коробки. В fedora (если не гном), ubuntu, opensuse... Что там еще из не пионерского.

fornlr ★★★★★ ()
Последнее исправление: fornlr (всего исправлений: 2)
Ответ на: комментарий от batya

Всмысле на EGLStream? Нет. А поддержка EGL самого по себе там давно

Sunderland93 ★★★★★ ()
Ответ на: комментарий от Deleted

почему «кто-то»? вся троица вполне себе интересная

Ford_Focus ★★★★★ ()
Ответ на: комментарий от BceM_IIpuBeT

хз как amdgpu, но kde neon с wayland-сессией вполне себе запускается на Radeon HD6570 (т.е. на radeon). А ведь карта 2011 года :)

с запуском приложений проблем не заметил. профитов от перехода на wayland тоже :(

критический минус, после которого тестирование было завершено - не работают виртуальные рабочие столы. google про проблему ничего не знает, возможно нужно было просто удалить конфиги kde

Ford_Focus ★★★★★ ()
Последнее исправление: Ford_Focus (всего исправлений: 1)
Ответ на: комментарий от Ford_Focus

критический минус, после которого тестирование было завершено - не работают виртуальные рабочие столы. google про проблему ничего не знает, возможно нужно было просто удалить конфиги kde

Реализация Wayland в плазме на уровне технодемки, а для виртуальных рабочих столов не запилен ещё протокол

Sunderland93 ★★★★★ ()
Ответ на: комментарий от Sunderland93

На самом деле апи вообще одинаковое идеологически.

По опыту работы в амд могу сказать что проблема может быть в тупо прибитом гвоздями к чему то коду.

Без иксовый режим если что был запилен еще в ati. И я его лично из исходников почти собрал. Не собирался драйвер ведра изза ограничений доступа к uvd.

Все остальное я собрал

ckotinko ☆☆☆ ()
Ответ на: комментарий от ckotinko

Нас закрыли изза госдепа в начале 2014го. Объявили за два месяца официально. Неофициально ибо в амд даже там работает много русских - изза украины и это было известно им еще осенью 2013.

ckotinko ☆☆☆ ()
Ответ на: комментарий от Sunderland93

Я до сих пор не понимвю чо за нах с вяленым. Таких проблем которые есть быть не должно. Я мир щупал. Он работает и в играх даже.

Вяленые походу врут

ckotinko ☆☆☆ ()
Ответ на: комментарий от nvl

Я так понял, от кдешников ждать поддержки eglstream бесполезно.

alexferman ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.