Collabora's Robert Foss is reporting on a new NXP i.MX6 buffer modifier implementation on Android and Mesa, which allows Android to run on the i.MX6 platform without needing any proprietary blobs.

Support for buffer modifiers was added in both Mesa and gbm_gralloc. While gbm_gralloc is now capable of using the "GBM_BO_IMPORT_FD_MODIFIER" GBM API call, which has been designed to import a buffer object and accompany various information, such as the one about the modifier used by the respective buffer object, Mesa received buffer modifier support in GBM and several of the buffer allocation functions.

"With modifier support added to Mesa and gbm_gralloc, it is now possible to boot Android on i.MX6 platforms using no proprietary blobs at all. This makes i.MX6 one of the very few embedded SOCs that needs no blobs at all to run," said Robert Foss in the report. "Not only is that a great win for Open Source in general, but it also makes the i.MX6 more attractive as a platform."

Lays the groundwork for supporting the i.MX8 platform

With buffer modifiers in place, it is now possible to render different properties of buffers to cover a wide range of information about a buffer, including tiling and compression. So this is now enabling tiling artifact free running of Android on the i.MX6 platform. A tutorial is available here for those who'd like to test out the new buffer modifiers support, which is currently on its way to being upstreamed.

Best of all, this new buffer modifier implementation in Mesa and gbm_gralloc lays the groundwork for supporting Google's Android mobile operating system on the i.MX8 System on Module (SOM) series. To better understand how all this works, please take a look at the video attached below to see ZII RDU2 board (i.MX 6QuadPlus) booting Android using the Mesa open-source graphics stack.