Когда только 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.
Немає коментарів:
Дописати коментар