GCW Zero is an open source handheld gaming console featuring Ingenic JZ4770 MIPS processor with Vivante GC860 GPU, 512MB RAM, 16GB internal storage, and a 3.5″ LCD with 320×240 pixels. The device runs Linux (OpenDingux) , and retro games and emulators. GCW Zero had a successful kickstarter campaign, and is now available in a few shops such as ThinkGeek (US), DragonBox (EU) for $150 / 125 Euros.
Today, I’m writing about this console, not because of amazing specs, nor price, but because it could be the first device with an embedded SoC that retails with an open source GPU driver. In September of this year, GCW Zero received a firmware update with Etnaviv GPU driver for Vivante GC860 adding support for 3D games via OpenGL ES support. The video below shows Quake 3 Arena running on the game console with the Etnaviv drivers.
Lots of OpenGL ES1 and 2 features are supported as you can see from the release notes for the latest firmware (October), but some may still needs to be implemented including loops in shaders, GLSL (OpenGL Shading Language) “texture” bias parameter and “textureLod”, and a few more more. Beside Quake 3D arena, D2X (Descent 2 rebirth), Dark Places, and Hurrican are some of the few 3D games that have successfully been tested on the platform.
That means any platform based on Vivante GC600, GC800, GC860, GC880, and GC1000 should be able to support OpenGL ES via the open source Etnaviv drivers in Linux or Android. Vivante GC2000, as used in Freescale i.MX6 Quad, is not yet supported mainly because multiple pixel pipes support is missing, although progress has been made.
Etnaviv appears to be mainly a one person effort by Wladimir J. van der Laan, and despite this, progress has been very fast for the last year or so. The hard parts have been done, i.e. reverse-engineering and 3D drivers, but there’s still more work to be done, such as integrating the Mesa stuff into DRI/DRM, upstreaming, and X11 2D driver.
If you are interested in contributing to the project, trying it out, or simply watch the progress of the project, you can do so on Wladimir’s blog, or on #etnaviv IRC channel on freenode. For source code and documentation, visit the project’s github repo.