Etnaviv Project Vivante GCxxx GPU Open Source Driver
You have most probably heard of Lima, an initiative to provide fully open source Mali-200 & Mali-400 drivers by reverse-engineering the closed source Mali GPU drivers. A separate effort, Etnaviv Project, has now started to offer open source drivers for Vivante GCxxx GPU used in SoC such as Marvell Armada 1500 (notably used in mainly Google TV platforms), Rockchip RK2918 (present in many older tablets), Freescale i.MX6 (used in newer tablets, low cost development boards, some SoMs and GK802/Hi802 mini PCs). The project is called Etnaviv.
The introduction of Etnaviv Project reads as follows on the corresponding Github account:
Project Etnaviv is an attempt to make an open source user-space driver for the Vivante GCxxx series of embedded GPUs.
The current state of the project is experimental. It is currently only of use to developers interested in helping develop open source drivers for the hardware, reverse engineering, or in interfacing with GPU hardware directly. It is NOT usable as a driver for end users.
Once the understanding of the hardware is good enough, we’d likely want to fork Mesa/Gallium and create a GL driver.
For now, Project Etnaviv github repo contains tools and documentation related to figuring out how to program Vivante GCxxx GPU chips:
- Assembler and disassembler
- Command stream format
- Command stream interception
- Command stream dumper
- Replay test
- Vivante GPL kernel driver
There are also some build instructions on Github, Wladimir J. van der Laan, Ennaviv Project Developer, has been able to replay some commands used in the closed source driver, and replay them to render the Cube and Cube_companion demos on the right side. His development platform is currently an Android tablet based on Rockchip RK2918 with Vivante GC800 GPU.
This is all preliminary work, so there’s most probably still a very long way to go before we can get a stable driver.