С планшетной версией Ubuntu Touch, а так же Mir и Unity Next, мы вторглись в мир Андроида. Эта статья снова описывает, как Убунту будет работать на новой для себя платформе. С новым дисплейным сервером, новой моделью драйверов и даже другими библиотеками.
Компоненты драйвера Андроида и их открытость.
Экосистема драйверов, как правило, очень сложная и андроид не исключение. Чтобы драйвер на андроиде заработал, производитель GPU предоставляет:
- Модуль ядра. Он должен быть под GPL совместимой лицензией и эта часть драйвера всегда открыта. Эта часть отвечает за управление GPU устройством. Организация буфера входящих команд и отправка буферов цвета.
- Реализации libhardware из андроид HAL (Hardware Abstraction Layer). Эти библиотеки, как клей, связывают нижний ядерный слой с верхним пользовательским. Их задача обеспечить базовые операции для пользовательской системы, такие как создание буферов, отправка видеобуфера (framebuffer) или получение буфера цвета для графического драйвера. Эти библиотеки, такие как gralloc, hwc, fb, иногда открыты, а иногда закрыты.
- Пользовательские библиотеки OpenGLES и EGL. Эта часть - инструкции GPU. Этот код предоставляет производитель GPU и он является закрытым. От его закрытости не следует, что мы не имеем представления о том, что в них происходит. Часто код поставщиков полагается на различные open source проекты или разобран методом обратной разработки в таких проектах как freedreno.
Все закрытые части драйвера должны быть использованы через интерфейсы под лицензией Apache или Khronos. API меняется медленно и делается под контролем Google или Khronos. Эти API разительно отличаются от DRM или gbm, которые мы видим в "свободном стеке".
Драйвера не открыты на 100%, но и нельзя сказать, что они на 100% закрыты. Без проприетарных бинарников, вы не сможете использовать функционал GLES. Но бо́льшая часть открыта и понять что делает система в целом не сложно.
Можно построить свободную экосистему с помощью Mir, используя интерфейсы к закрытым частям.
Что касается вопроса открытости - это серая зона, если приемлемо использовать блобы (binary linked object — объект двоичной компоновки).
Стабильность, производительность.
Разработчики знают о проблемах, которые маячат впереди. Но огромным облегчением является, устоявшаяся на андроид платформе, API от Google и Khronos, которая зарекомендовала себя на сотнях миллионах устройств.
Разработчики Canonical не изобретают колесо! Никто не изобретает свой HAL и не бьёт челом перед разработчиками GPU, чтобы выпросить поддержку нового API.
То есть мощное наследие андроида в виде управления питанием, производительностью будет использоваться дисплейным сервером Mir так, как он поставляется производителем.
Образно говоря, Mir и Unity Next будут построены не на песке, а на скале!
Демо работающего дисплейного сервера Mir. Устройство Nexus 4 и GPU Adreno 320.
Мировое господство Ubuntu:
Небольшой FAQ от Kevin, который поможет разобраться в Mir и Ubuntu Touch.
Зачем Canonical создала Мир? 5 причин от Кристофера Роджерса.
Wayland, Mir, X - разные проекты.
Немає коментарів:
Дописати коментар