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

если сами — то ведь это не обозначает что обязательно именно без апаратного ускорения?

наоборот! теперь каждая программа сможет реализовать своё самое-самое «хитрое» аппаратное ускорение :)

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

Какое-такое «свое»? Ускорение только за счет железа видекарты. Вообще, эти новомодные протоколы предполагают сообщать приложениям аппаратные возможности железа. И да, получается, перерасход памяти и ресурсов процессора в этих протоколах by design.

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

Уважаемые, объясните, все - теперь каждое приложение будет само растеризовать шрифты, создавать картинки, кисти, перья и все такое?

Это уже давно так.

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

Как будто что-то хорошее... И, да, у меня разрыв шаблона. Меня учили всегда разделять владельца ресурса и пользователя ресурса.

Так трудно поправить рисовалку X'ов, добавить полилайны, кривые Безье и пути?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Да вам, батенька, пропагандистом бы работать. Безапеляционно называть неверным то, что работает уже более четверти века — очень смело.

Насчет истории — она показывает, то, что заботится о совместимости, явсляется крайне успешным (процессоры Intel, операционная система Windows, etc.).

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

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

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

А вам бы к окулисту сходить. Чтобы целиком читать научили. И чтобы потом не обрезать цитаты там, где вам удобно.

процессоры Intel, операционная система Windows

Спасибо, посмешили. Изначальный Intel на PC - 16-битный процессор, текущий - 64-битный. То, что старое не дропнули не значит, что его берегут. Старые программы работают местами через патчи, костыли и подпорки. Запустите-ка мне сейчас непатченную игру Lands of Lore (в защите от копирования использовался баг конвеера 80386, использовавшийся тогда много кем. Все думали так и должно быть. Ага. До выхода 80486. :) Или оригинальную Ultima 7 (одна из немногих комерческих программ, работавших в Big Real Mode). Windows? Сейчас пойдём проверять сколь эффективно у нас работает DDE в 16-битных приложениях. Потом попробуем запустить их в 64-битной венде.

Мораль. Подпорки ставят. Есть они и здесь в виде XMir и XWayland. Но вам это не интересно.

И да, пока ни разу не были озвучены технические преимущества новомодных протокольчиков перед «древними» X'ами.

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

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

И да, пока ни разу не были озвучены технические преимущества новомодных протокольчиков перед «древними» X'ами.

Где-то я это уже слышал. А! «Теория эволюции - это просто теория, она никогда не была доказана». «Нет никаких опытов, подтверждающих верность теории относительности»

Какой эпичный бред. Его я тоже недавно слышал. Медицина? Зачем - есть отличные циркониевые браслетики. Их даже министр здравоохранения таскал. Очистка воды? Эти древние технологии - фууу таким быть. Вот есть Петрик со своими нанотехнологиями.

Ну не твоё аналогии, не твоё.

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

первый раз читаю чтобы Wayland сравнили с циркониевым браслетом..

...есть всё таки определённый талант у здешних анонимов :)

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

есть всё таки определённый талант у здешних анонимов :)

Вот по этому я и люблю поддерживать такие разговоры. Народ сам себя забесплатно идиотами выставляет. :)

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

Какой эпичный бред.

Вот мы и локализовали проблему. У вас в голове каша. В результате вы не отличаете работающие вещи от разводилова для лохов и сравниваете потом wayland с циркониевым браслетом.

Очистка воды? Эти древние технологии - фууу таким быть.

Отличный пример. Вы явно считаете, что технологии очистки воды не менялись со времён древнего Египта.

Ну не твоё аналогии, не твоё.

Очевидно, что это не вам решать.

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

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

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

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

Че, glxinfo нынче стало новомодным?

И да, получается, перерасход памяти и ресурсов процессора

Не сказал бы. Скорее наоборот. А вот багов, багов будет мнооого и в каждой программе свои...

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

Не сказал бы. Скорее наоборот. А вот багов, багов будет мнооого и в каждой программе свои...

Причём тут программы? Рисованием занимаются тулкиты, даже в Google Chrome и то это делает гугловский тулкит skia.

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

Так трудно поправить рисовалку X'ов, добавить полилайны, кривые Безье и пути?

Первые мысли Пакарда по XRender предполагали пути (пруф, раздел 4.4 Rendering Primitives). Но, во-первых, тогда ускорение всех этих операций легло бы на плечи писателям драйверов. Это каждый драйвер должен был бы стать таким маленьким Cairo-в-cебе. Да, в теории можно было бы ускорить отрисовку железом, можно сэкономить трафик.

Добавить новые запросы в XRender никто не мешает и сейчас. Я полагаю, что Пакард в курсе этих всех идей и об этом думал (линк с мыслями почти пятнадцатилетней давности выше это доказывает). Если ты зайдешь в рассылку и вежливо спросишь его, а почему это так и не было сделано и был бы вообще в этом какой-то профит (чисто из любопытства), то он расскажет, наверное.

Оттуда же:

3. Paths

Moving these into the server will reduce wire traffic, but not provide any dramatic performance improvements except in a networked environment.

По этому поводу есть интересный анализ Zack Rusin, который, скорее, не в согласии с этим выводом Пакарда.

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

технические преимущества

Мля.. иксы не работают с egl, все.

операционная система Windows

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

special-k ★★★★
()
Последнее исправление: special-k (всего исправлений: 1)
6 ноября 2013 г.
Ответ на: комментарий от atrus

Где-то я это уже слышал. А! «Теория эволюции - это просто теория, она никогда не была доказана».

не подскажешь, в каких отношениях с точки зрения эволюции находятся Х-ы, и всякие Вяленды/Миры ?

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

В отношениях «меня не научили в школе читать», по этому я не понимаю, что пишут другие.

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