LINUX.ORG.RU

XDC: доклад о XMir и XWayland

 , ,


1

7

С 23 по 25 сентября проводилась очередная X Developers Conference, XDC2013. На ней было несколько докладов, полезных для широкой публики — и одним из них был доклад о XMir и XWayland. Автор — Chris Halse Rogers из компании Canonical, ранее занимавшийся сопровождением X-сервера в убунту и теперь привлечённый к разработке Mir и XMir. Здесь будет изложен краткий конспект этого доклада, взятый из PDF-слайдов и видеозаписи.

Прежде чем рассказывать про вложенные X-серверы внутри Mir и Wayland, следует рассказать о Mir — ведь на данный момент немногие подробно изучили его кодовую базу. Mir — это

  • Библиотека для создания сущностей, выполняющих задачи дисплейного сервера, композитора окон и оболочки рабочего стола
  • Библиотека для взаимодействия с созданными сущностями со стороны прикладного ПО
  • И примерно 90 тысяч LoC (осмысленных строк кода) на C++, включая заголовки и тесты. Тесты составляют половину общего числа LoC.

Дизайн Mir имеет отличия от дизайна Wayland

  • Это библиотечный API, а не межпроцессный протокол или механизм
  • Буферы цвета для окон создаются на стороне сервера (прим. — в трёхмерной графике есть множество других буферов, хрянящих не цветовые значения пикселей — потому и возникло понятие color buffers). Приложение получает буфер цвета на время рисования кадра и затем отдаёт его обратно в обмен на другой буфер, а владеет этими буферами сам Mir.

Цели, к которым идёт Mir, также отличаются. Wayland стремится быть полезным для всех, например, над ним активно работают разработчики Tizen и сообщество вокруг Rasberry Pi. В то же время Mir создан для достижения задач Canonical — но, как надеются его разработчики, может пригодиться и для решения более общих задач. Mir нацелен на улучшение работы Unity.

После этой части доклада Крису задали несколько вопросов, в том числе — о буферах цвета на стороне сервера. Wayland может сам владеть буферами и выдавать их приложениям по запросу, а может использовать буферы, переданные клиентом — в чём тогда различие между Wayland и Mir в управлении буферами цвета? Дело в том, что Rasberry Pi и все мобильные операционные системы стремятся передать владение буферами дисплейному серверу, потому что это позволяет забирать буферы у неактивных (suspended) приложений и тем самым получать серьёзную экономию памяти. Однако mesa оперирует только клиентскими буферами, и поэтому на десктопном компьютере не получится просто так получить буфер, которым владеет дисплейный сервер. Кроме того, разработчики тулкитов и приложений по сути могут сделать выбор так, как им захочется, ограничившись только одним из двух режимов работы wayland. (прим. — Крис вроде бы упоминал о способе обойти это с помощью «wayland shared buffer extension», но я не понял, о чём именно идёт речь).

Как XMir, так и XWayland запускают вложенный X-сервер, используя механизм расширений Xfree86. Через этот механизм обеспечивается вывод графики средствами Mir и Wayland, передача событий ввода X-серверу, drag&drop, управление окнами и остальные вещи, нужные для полноценной работы иксов. Когда Mir и Wayland встраиваются во вложенный X-сервер, они диктуют ему следующее:

  • Пожалуйста, не трогай реальный дисплей
  • Возьми буферы цвета
  • Дай нам реализовать RANDR самим
  • И несколько более сложным образом реализуется работа GLX

Есть различия в организации передачи изображения на реальный дисплей. Wayland для каждого окна использующего X приложения запускает отдельный вложенный X-сервер, и благодаря этому основанный на Wayland композитор захватывает буфер цвета окна (которым владеет X). Mir сам владеет всеми буферами цвета и к тому же всегда использует как минимум двойную буферизацию (т.е. для передачи изображения на дисплей обязательно придётся делать операцию swap buffers), поэтому он не может использовать аналогичный подход: ведь иксовые приложения, не использующие XGL, имеют один буфер и на каждом кадре просто рисуют нечто новое поверх старого. Поэтому Mir имеет два дополнительных буфера, эмулирующих двойную буферизацию — и на каждом кадре он отслеживает изменения, которые были сделаны в единственном буфере X-сервера, и копирует изменённые области в свой активный буфер; затем он делает swapBuffers.

Как показывают тесты Phoronix, подход Mir не приводит к существенному падению или увеличению производительности. Если рассматривать мелкие различия, то XMir работает чуть быстрее стандартного X-сервера на обычном многооконном десктопе в сочетании с композитным менеджером окна, и чуть медленнее — в полноэкранных играх. Замедление в полноэкранных играх, в свою очередь, можно исправить — ведь сам по себе XGL использует двойную буферизацию, как и Mir, и не нуждается в отслеживании и копировании изменённых областей. Единственным исключением из этих правил является KDE, работа которого чуть замедляется как на многооконном десктопе, так и в полноэкранных играх — дело в том, что оконный менеджер kwin сам по себе отслеживает изменённые области экрана и копирует только их; этот механизм используется в нём уже несколько лет. Это также объясняет, почему разработчики Kubuntu не хотят использовать XMir в Ubuntu 13.10 и 14.04.

Несмотря на различия в XWayland и XMir, часть кода может быть переиспользована в обоих проектах:

  • Для вложенного X-сервера с системой ускорения GLAMOR иксовый видеодрайвер может быть написан один раз и использоваться в обоих проектах, и такой драйвер уже написан в рамках Wayland.
  • Прокси для оконного менеджера (это не очень-то нужно для XWayland, который держит отдельный X-сервер для каждого окна, но полезно для XMir)
  • И, возможно, libxcwm — библиотеку, позволяющую запускать иксовые приложения на системах, где вообще нет X-сервера, таких как Mac OS X, Windows, Wayland и Mir. Подробнее...

Иксовый драйвер ввода не получится переиспользовать, потому что модели обработки ввода в Mir и Wayland сильно различаются между собой.

После этого опять был перерыв на вопросы, и выяснилось, что подход XWayland (отдельный сервер на каждое окно) не только позволяет убрать прокси для оконного менеджера, но и делает управление окнами гораздо более простой задачей: поскольку каждое окно для Wayland представляет собой отдельный буфер, то композитор (он же оконный менеджер, в терминологии Wayland) может легко трансформировать окна по отдельности, и попытка сделать эффект волшебной лампы для сворачивающегося окна не приведёт к труднейшей задаче разделения окон, рисующих в один буфер одного X-сервера. С другой стороны, некоторые приложения начинают работать неправильно, если конфигурация предоставленного им X-сервера не соответствует реальной конфигурации мониторов, или если они не могут изменять конфигурацию мониторов, такую как разрешение экрана; в XMir такие приложения будут работать корректно.

>>> PDF-слайды доклада

★★★★

Проверено: Shaman007 ()
Последнее исправление: quiet_readonly (всего исправлений: 5)
Ответ на: комментарий от user_id_68054

X — страдает от однонитевости.

X страдает от килотонн говнокода. По хорошему надо было бы выкинуть большую часть кода и заодно переписать протокол, избавив его от атавизмов 80-х.

anonymous
()
Ответ на: комментарий от Q3164

А в Mac OS X разве нативные приложения не целиком через OpenGL рисуются?

вот! хть кто-то меня поддержал!

надеюсь и в GTK сделают всё через OpenGL :)

[хотя вроде бы планов таких я ещё не видел..]

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

а если грохнится менеджер сессий?

А если кирпич с неба упадёт?

Вероятность того, что грохнется менеджер сессий заметно меньше, управления расположением окон, обслуживания 100500 устройств ввода, рисования прозрачностей, мигающих окон, панелек, скринсейверов и т.п. в нём нет.

no-dashi ★★★★★
()
Ответ на: комментарий от user_id_68054

user_id_68054> если честно — то есть такое подозрение что они и после Wayland не перестанут работать.

Перестанут, так как это уже будут не иксы.

user_id_68054> что именно мешает гонять оконный буфер по сети?

Ухудшение производительности.

user_id_68054> ну вкрутят в gnome-shell (он ведь и отвечает в Wayland — за композитинг окон) функционал который будет отрисовывать эти удалённые буферы, вместо того чтобы эти буферы отрисывывались локально. а на удалённой стороне — будет запущен композитный сервер в режиме демона (без запуска графической оболочки).

И будут нестандартные ни с чем не совместимые велосипеды вместо того, чтобы просто взять и иксы использовать. Короче - будет зоопарк и фрагментация, а также потеря производительности, если так сделать (что вялендовцы и предлагают).

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

Q3164> А в Mac OS X разве нативные приложения не целиком через OpenGL рисуются?

А Mac OS X разве умеет сетевую прозрачность?

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

anonymous> X страдает от килотонн говнокода. По хорошему надо было бы выкинуть большую часть кода и заодно переписать протокол, избавив его от атавизмов 80-х.

Этим сейчас и занимаются, но при этом стараются ничего не сломать. Поэтому процесс идёт не так быстро.

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

user_id_68054> надеюсь и в GTK сделают всё через OpenGL :)

В случае с GTK скорее вырежут рендеринг целиком.

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

Читайте новости хотя бы на том же opennet'е и иногда ходите по ссылкам из новостей с главной ru.fedoracommunity.org, отпадут все сомнения.

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

Так я по этой теме и пишу. Там ничего не сказано о том, что XWayland будет прямо в составе X.org. Сказано, что будет поддержка XWayland.

Quasar ★★★★★
()
Ответ на: комментарий от no-dashi

ну ладно.. а если привязать программы к манагеру сессий (а не к X11)....

...но при этом допустим что некий программист Вася допустит в X11 такую ошибку, которая будет приводить НЕ к обрушению X11, а к тому что оно начинает допускать утечку ресурсов (памяти и файловых дескрипторов).

таким образом по истечению некоторого времени пусть X11 не рушатся, но зато съедают все файловые дескрипторы доступные ползовательскому лимиту...

лучше чтоле будет?

это я к тому что если X11 глючит — то это плохо.

не особо важно — какой вид глюков. их надо исправить!

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

Опять же: там написано, что будет поддержка. В каком именно виде - подробностей нет. Что такое «компонент xwayland», не конкретизируется.

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

user_id_68054> ...но при этом допустим что некий программист Вася допустит в X11 такую ошибку, которая будет приводить НЕ к обрушению X11, а к тому что оно начинает допускать утечку ресурсов (памяти и файловых дескрипторов).

Слишком абстрактно. Можно в этом тексте «X11» заменить на «Wayland» или ещё чего-нибудь, и получить абсолютно то же самое.

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

Даже если не умеет, то повышенного эноргопотребления или каких-то других проблем не наблюдается.

Да и вообще, ты же сам писал:

1. Есть GLX

Q3164
()
Ответ на: комментарий от Quasar

Ухудшение производительности.

ну подумаешь, чуть чуть.. тоже мне беда :) ..

ну будет, согласен. да. немного упадёт.. ну или даже не немного..

но ведь можно (!?) понизить производительность у чуть-чуть компьютеров (в чуть-чуть редких ситуациях).

зато в целом улучшить аритектуру, и увеличить производительность в основных случаях!

это же хороший обмен!!

И будут нестандартные ни с чем не совместимые велосипеды

ды пусть хоть 100500 велосипедов.

главное чтобы на удалённой стороне можно было бы запустить любой из этих велосипедов в качестве демона (ну или не любой велосипед, а именно тот который нам нужен) — и использовать этот велосипед для всех возможных Wayland-compatibility-программ которые есть на этом компьютере.

например на клиентском компьютере открыт gnome-shell (Wayland version). следовательно на удалённой стороне открывам демон-велосипед (не от root, а от текущего SSH-пользователя) , который совместим с нашим gnome-shell .. какие тут могут появится проблемы? :)

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

Можно в этом тексте «X11» заменить на «Wayland» или ещё чего-нибудь, и получить абсолютно то же самое.

да. можно конечно.

и вывод точно такой же: если есть ошибка, то надо её выявить и исправить.

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

Очередной кулик свое болото хвалит.

А чьё болото следует хвалить кулику?

Если человек над чем-то работает то либо он верит, что делает что-то полезное. И это нормально.

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

X11 не может глючить - это протокол.
ну ты же меня понял — я про реализацию! а не про протокол

в целом — справедливое замечание. согласен

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

Что плохого в том, что делают не только сферическую библиотеку, но и сразу что-то работающее на ней?

Ничего плохого в этом нет, но и хорошего тоже.

Ок, предположим нужен будет один драйвер, например под вяленый, и мир его тоже будет полностью использовать.

А теперь представь - как будет рисоваться сложная графика? Пример. Есть убунта 18.10 с миром и с 3D приложением, написаным под мир. (стим например). Я хочу запустить его на своей генте. Мне (как я понимаю) придется юзать какой-нибудь костыль в виде вайланд-мир (в убунте так же его прийдется юзать, чтобы запустить приложения, написаные под вяленый). В итоге - оверхэд, и производительность на уровне иксов. Ну может чуть быстрее. И это совсем не win.

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

какие тут могут появится проблемы? :)

ну например с безопасностью... придется прикручивать систему авторизации чтобы как-то различать юзеров...

любой сетевой манагер сессий - это головняк для безопасности

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

какие тут могут появится проблемы? :)

Мне одному вспомнился анекдот о девочке, которая ходит в шлеме и улыбается?

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

придется прикручивать систему авторизации чтобы как-то различать юзеров...

ну SSH-же!

этот SSH одновременно и как раз и запускает «демон-велосипед» (будем придерживаться прошлой терминологии), и заодно получает/передаёт данные от_него/к_нему ...

можно даже предположить что при неожиданном разрыве канала SSH — также будет происходить и обрушение удалённого «демона-велосипеда», а вслед за этим и обрушение удалённой программы (так как: обрушение демона, выполняющего роль удалённого композитного сервера)..

все теже самые не приятные побочные эффекты, как и в случае X11_Forwarding .. всё как вы любите :)

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

А DirectFB ещё проще и реальнее для встраиваемых устройств.

да, но во первых, он без слоя совместимости с иксами, а во вторых, когда его делали, не было такого количества планшетов и смартфонов. Его просто некуда было приткнуть.

А X.org никак не тормоз в развитии.

Монстрик, это раз. С десктопом полностью на opengles все плохо, это два.

Тот же Wayland вместе с Mir, если хорошенько посмотреть на их возможности - вот настоящие тормозы развития.

Честно говоря, смотреть там не на что. Это же пока только заявки на будущее, а не реальные продукты в отличие от вандройдв или ксорга с их ДЕ и тыщщами приложений.

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

анекдот о девочке, которая ходит в шлеме

не слышал такой.

(но на всякий случай — я не девочка.. и не в шлеме :))

user_id_68054 ★★★★★
()

Wayland стремится быть полезным для всех...

Какая субъективная чушь! Можно подумать, каноникал разрабатывает приложение, которое будет только писать «каноникал» в каждом окне! Аффтар должен от стыда сожраьт свои сандали, насколько неприкрыто он выставляет личные предпочтения.

Пока что между вяленым и миром очень много мутных, пустопорожних обзоров. Нет конкретного технического сравнения «вот это мы делаем так и достигаем это и это» - чтобы даже последний домохозяйк мог взять и сказать: «вот это более перспективная технология!».

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

Q3164> Даже если не умеет, то повышенного эноргопотребления или каких-то других проблем не наблюдается.

Чем измерял?

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

AVL2> да, но во первых, он без слоя совместимости с иксами

X11 запускаем в фреймбуфере и усё. И вообще... Нафига иксы во встраиваемом устройстве, если там нужно всё брезать по максимуму и всё равно писать решение специализированние с нуля?

AVL2> а во вторых, когда его делали, не было такого количества планшетов и смартфонов.

Было. И фреймбуфер, кстати, в них использовали. Причём с Qt. У меня даже такое устройство было. И много у кого ещё.

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

AVL2> Монстрик, это раз. С десктопом полностью на opengles все плохо, это два.

1. Он модульный. В чём проблема отключить лишнее?

2. Зачем этот GLES на десктопе нужен, когда есть полноценный OpenGL. GLES вообще сделали только потому, что в те же армы хотелось что-то попроще запихать, чем полноценный 3D-ускоритель для OpenGL.

AVL2> Честно говоря, смотреть там не на что.

Вот-вот. Тот же Wayland уже давно за отметку 1.0 зашёл, а смотреть там всё ещё нечего.

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

Судить по макбукам, скажем так, некорректно, так как там вариантов нет для сравнения - пользователи жрут то, что дают им. Ну и OS X - далеко не образец того, как делать надо.

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

все теже самые не приятные побочные эффекты, как и в случае X11_Forwarding .. всё как вы любите :)

правильно... и нужность манагера сессий как бы становится под вопросом... либо он должен уметь восстановить сессию с полного оффлайна для конкретного соединения...

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

Red Hat подключился к нему гораздо позже. Причем с целью иметь возможность нагадить Ubuntu (планировалась, что в Ubuntu будет Wayland), а не решить свои задачи. У Red Hat нет задач для которых нужны Wayland, Gnome 3, Systemd и т.д

Йода магистр заговора теорию ощущает.

Скажите, вам шапочка из фольги не жмёт?
P.S. Вы пульсу упомянуть забыли.

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

Опять же - драйверы. Многое упирается в драйверы. Кроме того, как я уже выше написал, задействование 3D-ускорения для отрисовки интерфейса повышает энергопотребление системы, что невыгодно, поскольку 2D проще посчитать и ускорить, чем 3D (с этим даже процессор справляется). Полноценный GUI с 3D делают только в двух случаях (в остальном максимум для эффектов композитора):

Ага, расскажите это разработчикам Blender - они бедняги не знают, что удобный, настраиваемый и энергоэффективный gui нельзя было делать с использованием opengl.

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

OpenGL для GUI - очень неудачный выбор, поскольку есть специализированные и более эффективные тулкиты.

Бред сивой кобылы.

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

OK.

Вот инструкция по сборке непосредственно самого Wayland'а (без разницы — с Xwayland'ом или без него).

А вот указания по сборке Xwayland. Одним из этапов является как раз сборка X.org'а:

    git clone git://anongit.freedesktop.org/xorg/xserver -b xwayland-1.12
    cd xserver
    ./autogen.sh --prefix=$WLD
    make
    make install
    cd ..
А всего этапов сборки три: libxtrans, X.org и DDX. Т.е. отдельно его не собирают, оно часть X'ов.

Версия X-сервера 1.15 должна уже включать наработки из указанного выше git'а, на что и давал линк i_gnatenko_brain.

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

Этот тред это перепись малогромотных убунтухейтеров;)

...а тем временем именно коммерческий Цаноникал представляет ту _реальную_ силу, способную не только фонтанировать идеями, но и воплощать их профессиональными разработчиками.

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

2. Зачем этот GLES на десктопе нужен, когда есть полноценный OpenGL. GLES вообще сделали только потому, что в те же армы хотелось что-то попроще запихать, чем полноценный 3D-ускоритель для OpenGL.

То бишь чем отличается OpenGL от OpenGL ES вы и близко не знаете.

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

Это всё поддерживается, если не считать оптимус.

Ага, так сказать поддерживается.

И то оптимус малой кровью смогли прикрутить через VirtualGL.

Это называется малой кровью. Правда он до сих пор не работает как задумывалось, но прикрутили.

А XI2 уже давно есть, так что проблемы устройств ввода полностью ликвидированы.

Правда сам разработчик XI2 говорит что система ввода в иксах лютое говно, но тебе виднее конечно.

Для меня иксы - это не алтарь поклонения, а инструмент, который решает задачи нерешаемые в том же вяленде.

Сетевая прозрачность что ли? Нафиг эта хрень нужна в графической подсистеме? Именно в протоколе?

Еще раз: иксы устаревшая, ненужная и только мешающая нормальному развитию графической подсистемы сущность. Чем раньше их закопают, тем раньше мы получим нормальную графику и нормальную подсистему ввода.

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

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

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

Правда сам разработчик XI2 говорит что система ввода в иксах лютое говно

Ну да, он же ее разрабатывал %) А теперь он разрабатывает вяленд, и там-то всё будет шоколадно!!11

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

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

quiet_readonly ★★★★
() автор топика

Марк — няша

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

Deleted
()

На XDC2013 были еще интересные доклады. Ну, с DRI3 и Present Extension понятно. Выступал Кит Паккард, сказал, что в 1.15 уже будет.

А еще Адам Джексон (ajax) из Red Hat выступал. Он полностью переписывает GLX. Масштабная чистка кода. Вроде в докладе была цифра - около 40 тыс. строк кода удалено.

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

Правда сам разработчик XI2 говорит что система ввода в иксах лютое говно, но тебе виднее конечно.

Кто? Peter Hutterer говорит (он разработчик XI2)? Ты в Daniel Stone не путаешь?

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

Еще раз: иксы устаревшая, ненужная и только мешающая нормальному развитию графической подсистемы сущность. Чем раньше их закопают, тем раньше мы получим нормальную графику и нормальную подсистему ввода.

Это ты сам придумал, или кто подсказал?

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