Для Android подготовлена прослойка для работы со штатными видеодрайверами Linux
В ходе совместной работы инженеры из Collabora и Google подготовили прослойку "drm_hwcomposer", обеспечивающую работу графической подсистемы платформы Android поверх штатного графического стека ядра Linux и API DRM.
Напомним, что в Android применяются специфичные видеодрайверы, работающие в пространстве пользователя и предоставляющие интерфейс для доступа к GPU через API Hardware Composer (HWC). Прослойка "drm_hwcomposer" обеспечивает трансляцию API DRM в API HWC, позволяя применять обычные DRM-драйверя ядра и Mesa. При этом SurfaceFlinger, композитный менеджер Android, продолжает использовать API HWC.
Прослойка может работать только с ядрами Linux 4.10 и новее, так как завязана на использовании появившегося в ядре 4.10 механизма "explicit fencing", позволяющего из пространства пользователя управлять синхронизацией буферов между устройствами. Поддержка "explicit fencing" в ядре также дала возможность обеспечить поддержку в прослойке нового API HWC2, представленного в Android 7.0.
Код прослойки drm_hwcomposer принят в основной репозиторий проекта Chrome OS. Демонстрируя возможности прослойки, разработчики запустили Andrid поверх Freedreno, свободного видеодрайвера для графической подсистемы чипов Qualcomm. Freedreno поддерживает в том числе GPU Adreno (A5XX), применяемые в SoC Snapdragon 820 и 821, которые используются во многих современных смартфонах, с видеоподсистемами которых до сих пор можно было взаимодействовать только через проприетарные драйверы.