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)

Спасибо за перевод. В общем, получается, что задача Mir - запускать Unity не под устаревшими иксами, да и только. Какие-либо действительно важные преимущества перед иксами у него отсутствуют.

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

В общем, получается, что задача Mir - запускать Unity не под устаревшими иксами, да и только. Какие-либо действительно важные преимущества перед иксами у него отсутствуют.

Здесь вообще не было сравнения X.org с Wayland или Mir. Хотя трудами Кейта Паккарда и разработчиков Месы X.org может получить некоторые фичи, характерные для Wayland и Mir — например, отсутствие лишних копирований при композитинге, отсутствие излишнего и долгого общения с сервером и наличие нормального мультитача.

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

Хорошая статья, спасибо.

Sparx ★★
()

Дайте-ка угадаю... Он там вяленд обсирал и твердил, что иксы устарели?

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

Если это так, то разработчики Mir - идиоты, так как появляется лишняя сущность и обязательно использование XMir, из-за чего очень сильно проседает производительность. И эти люди ещё говорят, что иксы - это наслоение костылей?

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

В общем, получается, что задача Mir - запускать Unity не под устаревшими иксами, да и только. Какие-либо действительно важные преимущества перед иксами у него отсутствуют.

Спасибо, что написал комментарий за меня.

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

Вообще-то, главный соперник Мира - не X.org, а Wayland. Причём если в вяленом поддержка X11 рассматривается как некая временная досадная необходимость (вангую, что и забросят её сразу, как только завоюют, грубо говоря, 60% десктопа), то при анонсе Mir она была заявлена сразу, и относятся к ней серьёзно.

Так что в _реальном_ политическом раскладе - я за Мир. Ещё лучше, конечно, было бы эволюционно развивать иксы, но что-то я не вижу влиятельных сил, которые хотят этим заниматься...

hobbit ★★★★★
()

Chris Halse Rogers из компании Canonical, ранее занимавшийся сопровождением X-сервера в убунту и теперь привлечённый к разработке Mir и XMir

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

Polugnom ★★★★★
()

Топик детектор! Можно сразу отсеивать троллей и упоротых фанатиков!

alpha4
()

Мир не нужен. По сути он создается для работы со своей же юнити - в общем костыль. Я хоть не люблю, когда пропихивается одно и навязывается, но я за вяленый, т.к. они хотя бы о переносимости думают.

leg0las ★★★★★
()
Последнее исправление: leg0las (всего исправлений: 1)

Я так и не понял, Mir сможет дать все необходимое для нормальной реализации Nvidia Optimus? Или вся надежда на Wayland?

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

Мир не нужен. По сути он создается для работы со своей же юнити - в общем костыль.

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

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

anonymoos ★★★★★
()

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

В то же время Mir создан для достижения задач Canonical

Ну и что тут ещё можно добавить?

mbivanyuk ★★★★★
()

Пичалько

Придется сваливать с бунт, их принципиальный велосипедизм начинает вызывать попаболь, а вентилятор не справляется. Кто там первый вяленого в приличном виде выкатит?

wherecat
()

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

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

В то же время Mir создан для достижения задач Canonical

Ну и что тут ещё можно добавить?

А gtk+ пилилась для достижения задач gimp. Ну и что?

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

а wayland - для достижения задач редхата... ну не все ли равно для чего создан тул? если он позволит эффективно решать поставленные задачи - то большинству будет все равно кто и для чего это сделал...

P.S. спасибо автору за перевод

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

Что это глупая демагогия. Любая программа на 99% пишется для удовлетворения запросов разработчика. Если канонинклы об этом пишут открытым текстом, так это только потому, что как-то надо объяснить повторную разработку одного и того же.

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

wayland - для достижения задач редхата

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

anonymous
()

XMir в массы!

Будущее за убунтой!!!

obana
()

Rasberry Pi и все мобильные операционные системы

WUT?

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

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

«Нагадить Ubuntu» - само по себе задача, если что.

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

Причём если в вяленом поддержка X11 рассматривается как некая временная досадная необходимость (вангую, что и забросят её сразу, как только завоюют, грубо говоря, 60% десктопа), то при анонсе Mir она была заявлена сразу, и относятся к ней серьёзно.

Xwayland обещались поддерживать в самих X'ах, так что подобное высказывание звучит по меньшей мере странно.

carasin ★★★★★
()

дело в том, что оконный менеджер kwin сам по себе отслеживает изменённые области экрана и копирует только их

Внезапно. А я думал, все так делают.

Aceler ★★★★★
()

Как показывают тесты Phoronix, подход Mir не приводит к существенному падению или увеличению производительности. Если рассматривать мелкие различия, то XMir работает чуть быстрее стандартного X-сервера на обычном многооконном десктопе в сочетании с композитным менеджером окна, и чуть медленнее — в полноэкранных играх.

Это замедление только при использовании прокладки Х? А если без прокладки, то Mir и/или Wayland будут быстрее существующего X?

ppy ★★
()

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

вот тут хотелось бы конечно узнать по-подробнее..

например почему именно нет возможонсти в Wayland сделать конфигурацию X-сервера такую же как конфигурация реального монитора. (что мешает?)

XWayland (в отличии от XMir) — запускает для каждого окна — свой собственный X-сервер. ну и что (?). это мешает сделать каждый X-сервер такого же размера как дисплей?

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

зря в новости написали эти предложения про цели..

вот эти: «Mir создан для достижения задач Canonical», «Mir нацелен на улучшение работы Unity»

теперь все будут это обсуждать и конструктивных бесед не получиться :(

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

hobbit> Вообще-то, главный соперник Мира - не X.org, а Wayland.

Это естественно, но добавлять лишнюю прослойку, которая ещё и заведомо тормозная - это идиотизм в чистом виде.

hobbit> Так что в _реальном_ политическом раскладе - я за Мир.

Его не будет за пределами убунты по вполне объективным причинам. Это значит, что экосистеме линукса и СПО от него лучше не станет.

hobbit> Ещё лучше, конечно, было бы эволюционно развивать иксы, но что-то я не вижу влиятельных сил, которые хотят этим заниматься...

Они просто не пиарятся и не кричат на каждом углу, а пилят иксы.

Quasar ★★★★★
()

это не очень-то нужно для XWayland, который держит отдельный X-сервер для каждого окна

Фигасе. И кто-то надеется на повышение производительности...

Falcon-peregrinus ★★★★★
()

Mir создан для достижения задач Canonical — нацелен на улучшение работы Unity.

Каконикал продолжает самоубийственную политику огораживания. Успехов им в скорейшем самозакапывании.

toney ★★★★★
()
Ответ на: комментарий от Falcon-peregrinus

И кто-то надеется на повышение производительности...

Ну не в режиме же совместимости, ну?

kravich ★★★★
()
Последнее исправление: kravich (всего исправлений: 1)

слушай, а чего там про упрощение кернел бисектинга они говорили ? а то в программе у них юыло про это.

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

Ещё лучше, конечно, было бы эволюционно развивать иксы, но что-то я не вижу влиятельных сил, которые хотят этим заниматься...

Иксы не надо развивать, их надо закопать и сделать нормальную архитектуру, собрав хорошее у иксов, винды и цитрикса. Вот это было бы «ооо, круто!». Только вот это думать надо и делать. Но ведь думать это некруто, проще в ондроеднофреймбуферном стиле заплаток наклепать и получить вяленд.

no-dashi ★★★★★
()
Ответ на: Пичалько от wherecat

вяленого в приличном виде

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

no-dashi ★★★★★
()

как интересно
читается как детектив

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

XWayland (в отличии от XMir) — запускает для каждого окна — свой собственный X-сервер

Угу. Вместо того, чтобы сделать rootles X-сервер. Круто, чо. Примерно настолько же разумно, насколько разумно пришивать рубашку к пиджаку.

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

Кристиан Хогсбегг работает в Intel'е. Всё остальное вторично.

Если бы Гном (== RedHat) не проталкивал Вяленд, он был бы только в никому не нужном Tizen.

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