понеділок, 24 березня 2014 р.

Почему выбор дисплейного сервера не так важен?

Когда только Canonical начала разрабатывать свой дисплейный сервер Mir, на этом поле уже были работающий, но старый X и новенький, но вяло разрабатываемый Wayland. Третий лишний! - решила часть пользователей. Кто вам будет писать писать заново драйвера? - неверно рассуждала другая часть, ибо многим разработчикам нужно в драйверах лишь новый интерфейс EGL вместо старого GLX. Разработчик Роберт Анцел (Robert Ancell) повествует, о таком компоненте как дисплейный сервер.


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

Современный дисплейный стек состоит из 5 главных компонент:

  • Железо (Hardware)
  • Драйвер (Driver)
  • Дисплейный сервер (Display Server / Shell)
  • Тулкит (Toolkit / Platform API)
  • Приложения (Applications)

Над аппаратным обеспечением (Hardware) у нас нет власти, кроме выбора что покупать.

Над драйверами (Driver) чуть больше контроля - от закрытых драйверов от производителя до открытых. И тут происходит вечное перетягивание каната между производителями, которые закрытыми драйверами прячут свои наработки в железе, и свободным сообществом, которое хочет возможности изменять и улучшать драйвера.

Мы слишком много времени жили с дисплейным сервером X в этом мире открытых исходников. Сейчас из нового поколения дисплейных серверов есть соперники друг другу: Mir и Wayland.

Приложения (Applications) используют тулкиты и API (Toolkit / Platform API) для получения доступа к графической функциональности. Есть множество замечательных тулкитов, таких как Qt и GTK, которых можно рассматривать как завершённый API к платформе, что замечательно для прикладных программистов.

Читая новости в Интернете, может сложиться неверное мнение, что самая важная часть в общей системе - это дисплейный сервер. На самом деле это всего лишь часть и причём не имеющая большого значения:

  • Приложения получают доступ к дисплейному серверу через тулкиты. Все современные тулкиты поддерживают множество backend, так как они работают на множестве операционных систем. К примеру, вы можете взять приложение, написанное на GTK, и запустить в MS Windows.
  • Железо и драйвера становятся для нас всё более и более обобщёнными. Видеокарты используются ради узко специализированной функциональности и OpenGL использует ограниченный набор функций. Современные видеокарты обладают большим количеством процессоров (их может задействовать OpenCL) и OpenGL занимается обработкой шейдеров и содержимого буфера.

В результате, дисплейный сервер не важен приложениям, так как тулкиты прячут, в хорошем смысле этого слова, детали работы с ним. Для драйверов так же не важен дисплейный сервер, так как они через свои интерфейсы предоставляют некоторые операции, такие как управление буферами и шейдерами, а кто вызывает эти операции им не важно.

Что же важно?

  • Важно обладать открытыми драйверами. Потому что нужно иметь возможность исправлять различные нестыковки в драйверах. К примеру, когда дисплейного сервера Б касается некий баг, а дисплейного сервера А - нет. Подобное наблюдалось при обеспечении работы Mir с драйверами Андроида. Поскольку их использовал до сего момента только один SurfaceFlinger, есть пару ошибок, если вы делаете те же вещи, но по-другому. Просто отправка отчёта о баге не может заменить возможность самому быстро исправить баг.
  • Shell теперь имеет бо́льшее значение. Сейчас идёт отступление от парадигмы WIMP (windows, icons, menus, pointer). На рынке множество устройств с различным форм-фактором и от shell зависит то, что может приложение выразить и разные shell делают это по разному.

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


Как многие справедливо пишут - Xorg стар и не соответствует современным реалиям. Сейчас многое делается на стороне тулкитов и современным линукс дистрибутивам давно нужен новый дисплейный сервер, который учитывает новомодные тенденции.

Дополнительные материалы:
Дисплейный сервер Mir будет по умолчанию в Ubuntu 16.04 LTS.
Дебют Mir 0.1.4.
Вопросы и ответы про новый дисплейный сервер Mir.

Немає коментарів:

Дописати коментар

HyperComments for Blogger

comments powered by HyperComments