неділя, 24 березня 2013 р.

Mir и Android

Небольшой FAQ от Kevin (ник kdub на #ubuntu-mir freenode), который поможет разобраться в шумихе вокруг дисплейного сервера Mir и операционной системы Ubuntu Touch для планшетов. В данной статье описано, как именно Mir будет абстрагирован от нижележащего слоя, чтобы уметь работать и на обычных десктопах, заменив Xorg, и на планшетах, заменив SurfaceFlinger. Не забывайте, что выше этажом будет работать Unity Next, чья цель объединять своим интерфейсом различные платформы и архитектуры.

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

Как видно из рисунка, к маю 2013 года нужно избавиться от SurfaceFlinger и заменить его на дисплейный сервер Mir.

Mir будет поддерживать андроид драйвера?

Да. При запуске Mir внутри планшета под управлением Ubuntu Touch используется платформа андроид, чтобы получить полное OpenGLES ускорение. OpenGL ES (OpenGL for Embedded Systems) — OpenGL для встраиваемых систем.

Какое ускорение будет с андроид драйверами?

Полное ускорение! Более конкретно, это означает, что весь путь от рендера (client render) до framebuffer будет аппаратно ускорен. Это даст пользователям дисплейного сервера Mir и Unity Next так необходимую производительность.

Android использует Java. Означает ли это, что Mir использует Java?

Ох, нет! Mir не содержит в себе Java. Mir - это C++11, с использованием новомодных вещичек типа умных указателей, лямбда функций и т.п.

Мне нужны инструменты, типа SDK или NDK, от платформы Android для работы с Mir в Ubuntu Touch?

Нет! Все зависимости и инструментарий сборки доступны в deb пакетах Убунту. Мы используем пакет программ gcc arm из репозитория Убунту. Программа adb из android-tools-adb может быть полезна, но не обязательна.

На каких устройствах уже работает Mir?

Мы фокусируемся на линейке Nexus в первую очередь, но всё должно будет работать на любом устройстве, независимо от производителя GPU. Сейчас в основном разработчики нацелены на платформу Ice Cream Sandwich и новее. Список устройств, тестирующихся на работу с Mir, можно глянуть в Installing pre-built packages on an Android device.

Как Mir использует android драйвера?

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

Драйвера под андроид используют:

  • ядро андроида.
  • bionic libc - вариант стандартной библиотеки языка Си, разработанный Google для использования в составе ОС Android.
  • библиотеки драйвера.

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

Означает ли это, что Mir использует bionic libc?

Кратко, нет. Драйвера андроида используют bionic libc, которую знают и любят разработчики андроид драйверов, а код Mir и библиотеки используют обычную GNU libc, которую мы лучше знаем и любим.

А чего не использовали SurfaceFlinger вместо написания своего дисплейнего сервера Mir?

Рассматривали этот вопрос и нашли, что:

  • SurfaceFlinger очень привязан к платформе Андроид и потребуется много работы, превращая обычную Ubuntu в Ubuntu Touch. Если представить, гипотетически, что это получилось, то это будут очень разные Убунту.
  • SurfaceFlinger основан на очень простом методе отрисовки с помощью Z-буферов (z-order based compositing). Нам же нужно было то, что поддержит возможности Unity, которые уже работают на Desktop.
  • SurfaceFlinger нужно было бы адаптировать для работы с драйверами Mesa/GBM, а это огромный фронт работ и, возможно, это не реально сделать.

Пользующихся Mir будет касаться на какой платформе Android или Mesa/GBM они запущены?

Нет! Клиенты Mir могут быть запущены как на платформе Mesa/GBM, так и на Android. Мы много сделали, чтобы "клиент" не зависел от нижележащей модели драйверов OpenGLES.
Никакой перекомпиляции или определения нужной платформы не нужно!

Дисплейный сервер Mir Ubuntu

Моя мысль.
В целом, мне многое стало ясно. Unity Next, переписываемая в Qt/QML стиле, продолжит дело Unity и будет объединять разрозненные вычислительные платформы под единым интерфейсом. Qt/QML даст разработчикам лёгкость в адаптации Убунту под разные устройства с их разными экранами и наличию/отсутствию сенсорных, новомодных штучек.

Под капотом Unity Next будет работать дисплейный сервер Mir, который заменит старика Xorg, который на новых устройствах вызывает больше проблем, чем помогает. Mir не будет зависеть от нижележащего слоя. На десктопе Mir будет использовать знакомые нам проприетарные или свободные драйвера к NVIDIA и AMD видеокартам. На планшетах и других ARM устройствах, Mir будет использовать родные андроид драйвера GPU производителя. Задача Mir'а изолировать работу с видеосистемой и предоставить для Unity Next единый механизм работы.

В этом свете, создание Мира - это действительно грамотный шаг.

Wayland пытается охватить только десктоп и его разработчики, возможно, не рассматривали работу Wayland на драйверах мобильных платформ типа планшетов. Самим реализовывать нужное? Чем это лучше с нуля написанного? Кристофер Роджерс уже указывал на 5 причин почему не выбрали Wayland.

30 летний Xorg пилить и изменять под современные нужды и множество различных аппаратных платформ - банальная трата времени.

Вот цель Canonical! Единая кодовая база Ubuntu, которая легко превратится в Ubuntu Touch или что-то подобное в будущем для будущих устройств. Эта единая Убунту, но с разными лицами, благодаря Unity Next, будет работать на дисплейном сервере Mir. А Mir будет работать на разных платформах - с разными архитектурами CPU и GPU. И всё под контролем Canonical! Браво!

Mir везде

Вы по-прежнему не любите новости про Мир? Писаете кипятком от сетевой прозрачности Иксов? Она уже не работает в нём на 100%.
Читаем:
Французский программист Julien Danjou, разработчик оконного менеджера Awesome, и его мысли вслух о протоколе X.
Jasper St. Pierre, разработчик GNOME Shell в статье Графический стек Linux.

Связанное единым Миром:
Wayland, Mir, X - разные проекты.
Зачем Canonical создала Мир? 5 причин от Кристофера Роджерса.
Canonical представила дисплейный сервер Mir.

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

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

HyperComments for Blogger

comments powered by HyperComments