В ходе совместной работы инженеры из Collabora и Google подготовили (http://memcpy.io/android-enabling-mainline-graphics.html) прослойку "drm_hwcomposer", обеспечивающую работу графической подсистемы платформы Android поверх штатного графического стека ядра Linux и API DRM (Direct Rendering Manager). Код прослойки drm_hwcomposer принят (https://chromium.googlesource.com/chromiumos/drm_hwcomposer/) в основной репозиторий проекта Chrome OS. Напомним, что в Android применяются специфичные видеодрайверы (https://source.android.com/devices/graphics/), работающие в пространстве пользователя и предоставляющие интерфейс для доступа к GPU через API Hardware Composer (https://source.android.com/devices/graphics/implement-hwc.html) (HWC). Прослойка "drm_hwcomposer" работает поверх mesa и libdrm, обеспечивая трансляцию API DRM в API HWC, что позволяет реализовать поддержку API HWC на базе обычных DRM-драйверов ядра. При этом SurfaceFlinger (http://pierrchen.blogspot.ru/2014/02/what-is-surfaceflinger-...), композитный менеджер Android, продолжает использовать API HWC.
Прослойка может работать только с ядрами Linux 4.10 и новее, так как завязана на использовании появившегося (http://padovan.org/blog/2016/09/mainline-explicit-fencing-pa.../) в ядре 4.10 механизма "explicit fencing (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin...)" (in-fence/out-fence), позволяющего управлять синхронизацией буферов между устройствами из пространства пользователя. Поддержка "explicit fencing" в ядре также дала возможность обеспечить поддержку в прослойке нового API HWC2, представленного в Android 7.0.
Демонстрируя возможности прослойки, разработчики запустили Android на плате Dragonboard 410c поверх Freedreno, свободного видеодрайвера для графической подсистемы чипов Qualcomm. Freedreno поддерживает в том числе GPU Adreno (A5XX), применяемые в SoC Snapdragon 820 и 821, которые используются во многих современных смартфонах, с видеоподсистемами которых до сих пор можно было взаимодействовать только через проприетарные драйверы. Прослойка может подтолкнуть вперёд развитие проекта
Replicant (http://www.replicant.us/), в рамках которого развивается полностью открытый вариант платформы Android, избавленный от проприетарных компонентов и закрытых драйверов.
URL: http://memcpy.io/android-enabling-mainline-graphics.html
Новость: https://www.opennet.ru/opennews/art.shtml?num=46277