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)
Ответ на: комментарий от anonymous

Так трудно поправить

Поправь :} Аналитики всё вещают про счастливое будущее иксов и как всё прекрасно и легко, но таки улучшений как не было так и нет. Иксы RIP, уже совсем скоро.

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

То есть технических аргументов нет? Насчет поправить - я не корпорация и не университет, да даже и поправлю если, «продавить» решение я не смогу.

Пока вроде все работает, дальше - будем посмотреть.

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

А libwayland-server.so и libwayland-client.so — это что?

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

Что такое «движуха»? Такой технический термин? А, понял, изменения ради изменения. Мы ведь не бактерии и не троцкисты.

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

Да да, в иксах всё хорошо, ничего делать не надо, потому оно и помирает, видимо :}

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

Очень много народа на форумах знают как надо, что надо и кому надо. Но, кода от этого не прибавляется. Парадокс.

imul ★★★★★
()

Я в этих вещах почтиничего не смыслю, подскажите. Разв нельзя написать backend для Mir с реализацией протокола wаyland? Что бы Mir спокойненько себе работал поверх wаyland? Ведь wayland только протокол, вон kwin скоро будет реализовывать его, почему бы миру этого не сделать?

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

Очень много народа на форумах знают как надо, что надо и кому надо. Но, кода от этого не прибавляется. Парадокс.

разработчики читают эту тему форума.. и затем в зависимости от того кто оказался в теме прав — в том направлении и делают код :)

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

Очень много народа на форумах знают как надо, что надо и кому надо. Но, кода от этого не прибавляется.

Ты предлагаешь прям здесь и сейчас начать искать университет, где какой-нибудь профессор занимается данной проблемой, уговаривать его создать команду и все такое? Время пока терпит.

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

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

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

Ты предлагаешь прям здесь и сейчас начать искать университет, где какой-нибудь профессор занимается данной проблемой, уговаривать его создать команду и все такое? Время пока терпит.

Приехали. Банальное копирование данных туда сюда это уровень школьника старших классов, даже не пту. Нахрена университет с профессорами - задачу трех тел решать внутри закрашивания прямоугоьника градиентом? Вообще оторвались от реальности. Не делают это только потому что уже есть, и работает много лет. А не потому что там что то сложное или что надо что то «разрабатывать»

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

Не делают это только потому что уже есть, и работает много лет. А не потому что там что то сложное или что надо что то «разрабатывать»

Не так все радужно и просто, как ты утрируешь (Хотя, да, во многом твоя аргументация верна). Многие измения буквально назрели (хотя бы та рисовалка X'ов).

И, мир таков, какой он есть. Принятие таких решений в данный момент возможно только от университетов или корпораций.

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

Ну и а десктопах - скорее всего федора.

Тогда придется сваливать с линупса — такое глюкалово на десктопе использовать невозможно.

Deleted
()

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

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

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

На Форониксе наоборот заметили прирост производительности.

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

Все в машину!

Квазар снова кукарекает!

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

unity работает на одном дистрибутиве

Ты, наверное, еще в пеленки ссался, когда Синус выкладывал в галерею Юнити на Арчике, да?

anonymous
()

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

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

Белка-истеричка, я тебя ждал!

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

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

Ну да, ну да. Где можно посмотреть тесты производительности 3д-приложение в иксах вяленом, мире? А, нигде. Но ты фантазируй, фантазируй.

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

То есть технических аргументов нет?

Технические аргументы простые - стандарт. Нет этого в протоколе. А если добавить, то это не поймут старые железные X-терминалы. Потому что одно дело, когда половина протокола не используется и просто гонятся пиксмапы, а другое, когда их начнут просить то, чего они делать не умеют.

А если забить на совместимость с ними, то встаёт вопрос: Зачем вносить незначительные изменения, трясять, чтобы не поломать всё, если можно передизайнировать с чистого листа?

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

Ух ты, анонимус не забывает ;)

// а вообще вроде там после 6-ой версии юнити столько нагородили, что тот китаеза подзабил апдейты на арч делать — оно вроде сдохло. Могу ошибаться, то полгода назад было – он мог и оживить текущую версию.

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

Нагадить Ubuntu? Каким образом?

После того как Марк заявил что Убунта будет на Вэйланд, РХ присоединилась к проекту, чтобы не мешать патчаи от Каноникал

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

Вайлэнд и Мир два архитектурных уродца, если экосистема ГНУ перейдет на них, то к сожалению для своего рабочего места мне прийдется выбирать между Мак и Вин. Зачем делать из Линукса второй андройд? Или еще остался запал бессмысленного энтузиазма?

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

С точки зрения пользователя что-нибудь изменится? Нет.

Корабль ещё не начал тонуть, а хомячки уже побежали.

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

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

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

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

Intel точно нет, у них своих велосипедостроителей с пачку индусов есть. Oracle, им смысла покупать компанию на которой паразитируют нет, да и работает она с хорошей прибылью, так что не одна вменяемая комиссия не даст добро. RedHat по сути, осталась единственной компанией в США, которая полностью зарабатывает на дистрибутиве Linux.

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

Я так понял, что наоборот, кто угодно может купить Canonical. Только непонятно зачем кому-то покупать компанию не приносящую денег.

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

Ты уже свои собственные слова не помнишь?

RedHat по сути, осталась единственной компанией в США, которая полностью зарабатывает на дистрибутиве Linux.

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

Да ты щто? Canonical USA Inc такие дела посанщик;)

Она вообще-то зарегистрирована в США, Китае и множестве других стран. Другое дело, что «центр» ввиде Canonical LTD находится в Британии.

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

кто угодно может купить Canonical

Не совсем. Canonical LTD частная компания без акционеров и т.д Ее можно купить только если Марк ее захочет вам продать.

Red Hat же теоритически может купить любой. Причем это может сделать даже Microsoft, а после покупки тупо прикрыть лавочку.

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

Правда? См. мое сообщение выше и перестань позориться!

Ой да ладно, правда?

Wikipedia:

Canonical Ltd. зарегистрирована на острове Мэн и имеет сотрудников по всему миру, включая главный офис в Лондоне и вспомогательные офисы в Бостоне, Монреале, Тайбэе, Сан-Паулу и Шанхае

Ты понимаешь что работать официально в другой стране, нужно там зарегистрироваться? Или это сложно для твоего ума?

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

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

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

Более того, история показала, что это не верный подход. В иксах уже есть функции рисования, более того, они определены весьма точно, чтобы получалась идентичная картинка. Но, сюрприз! Ими больше никто не пользуется. Потому что сегодня они выглядят ужасно. Хотя раньше в них был смысл (слабые компы, мало памяти, медленная сеть). Но сегодня вшивый смартфон мощнее компа начала 2000-х.

И да, эти новые протокольчики поддерживают какой-нибудь механизм расширений?

Wayland - да, конечно. С Mir сложнее, у него нет жёстко определённого протокола и как там решаются такие вопросы - х.з.

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

Не надо ничего ломать. Вообще. Это порочный путь.

Да вы, батенька, ретроград.

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

Fixed. Вот только костылей уже столько, что всем уже надоело копаться в этом навозе.

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

Wayland - да, конечно. С Mir сложнее, у него нет жёстко определённого протокола и как там решаются такие вопросы - х.з.

У мира API — это разделяемая библиотека, а не протокол, так можно добавлять функции сколько угодно или даже замутить аналог eglGetProcAddress().

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