While the Android operating systems is itself open source, it still relies on proprietary binary files to leverage GPU acceleration, VPU hardware decoding, wireless connectivity, and so on. It’s been possible to run Android with an open source software graphics stack, but it’s normally terribly slow and barely usable. But Collabora has announced it could now boot Android with a full-graphics stack on iMX6 platforms using no proprietary blobs at all.
To do so, they leveraged the work done on Etnaviv open source drivers for Vivante GPUs, and adding the different formats used for graphical buffers in Android and Mesa library using modifiers representing different properties of buffers. They further explain:
Support was added in two places; Mesa and gbm_gralloc. Mesa has had support added to many of the buffer allocation functions and to GBM (which is the API provided by Mesa, that gbm_gralloc uses).
gbm_gralloc in turn had support added for using a new GBM API call, GBM_BO_IMPORT_FD_MODIFIER, which imports a buffer object as well as accompanying information like modifier used by the buffer object in question
The changes will be upstreamed, but in the meantime you could try it yourself by following the instructions on memcpy.io for iMX6 Sabrelite, Sabre Lite, or RDU2 boards. A boot with Android 7.1 using the full open source graphics stack is demonstrated in the video below on RDU2 board.