Etnaviv: An Open-Source Driver For Vivante GPUs

Posted by Michael Larabel on January 11, 2013

Etnaviv is a new open-source project for building a user-space graphics driver for controlling the Vivante GPUs found in some ARM SoCs. The ultimate goal is to create a new Mesa/Gallium3D driver for this graphics core.

At the moment the Etnaviv driver is particularly seeking to support the Vivante GCxxx series of embedded graphics processors. The 3D-capable Vivante GPUs include the GC400, GC500, GC600, GC800, GC1000, GC2000, and GC4000 products. These graphics cores support OpenGL ES 2.0, OpenVG 1.1, EGL 1.4, DirectX 11, and OpenGL 2.1/3.0.

The Vivante GPUs have been found in many ARM SoCs from the low-cost "Chinese tablets." Among the popular devices bearing Vivante graphics include the Google TV, OLPC, CuBox, many Rockchip 2918 tablets, and devices shipping the Freescale i.MX 6 series. Primary development of this driver is being done by Wladimir J. van der Laan and he's using an Android tablet with a Rockchip RK2918 bearing a GC800 GPU.

The Etnaviv driver ("Vivante" spelled in reverse) is currently in an experimental state. Like Lima, Freedreno, and various other ARM GPU drivers, Etnaviv is developed through reverse-engineering of the Linux driver's binary blob. The ultimate goal for this open-source ARM Vivante GPU driver is to create a Mesa/Gallium3D driver.

At present there's no plans on writing a new open-source kernel driver for the Vivante hardware. Vivante previously put out their Linux kernel component under the GPL.

Within the project's code repository is known information about the render state and registers, ISA vertex/fragment shader documentation, a basic disassembler for shader instructions, command stream format information, interception paths for the GPU command stream, a command stream dumper, replay test, and other components needed for reverse-engineering the Vivante GC graphics and for writing this new user-space 3D driver.

The Etnaviv "Etna_viv" driver project is currently being housed and developed on GitHub.

Discuss this article in our forums, IRC channel, or email the author. You can also follow our content via RSS and on social networks like Facebook, Identi.ca, and Twitter (@Phoronix and @MichaelLarabel). Subscribe to Phoronix Premium to view our content without advertisements, view entire articles on a single page, and experience other benefits.
Latest Hardware Reviews
  1. Sumo Lounge Emperor
  2. Gallium3D Continues Improving OpenGL For Older Radeon GPUs
  3. 15-Way Open vs. Closed Source NVIDIA/AMD Linux GPU Comparison
  4. Nouveau vs. NVIDIA Linux Comparison Shows Shortcomings
Latest Software Articles
  1. Intel Linux OpenGL Driver Leading Over Apple OS X
  2. The Cost Of Ubuntu Disk Encryption
  3. Btrfs vs. EXT4 vs. XFS vs. F2FS On Linux 3.10
  4. AMD Radeon R600 GPU LLVM 3.3 Back-End Testing
Latest Linux News
  1. New NVIDIA Linux Driver Supports The GeForce GTX 780
  2. Chrome 28 To Offer More Speed Improvements
  3. Digia Announces "Boot To Qt" Project
  4. X.Org Libraries Hit By Round Of Security Issues
  5. Wayland's Weston Gets Output Scaling Support
  6. Raspberry Pi Gets New Wayland Weston Renderer
  7. Debian GNU/Hurd 2013 Release Brings New Packages
  8. Intel Ultrabook Performance Is Faster With Mesa 9.2
  9. Hot Relocation HDD To SSD Support For Btrfs
  10. Phoronix Test Suite 4.6.0 "Utsira" Released
  11. New Intel X.Org Driver Supports All Of Haswell
Latest Forum Talk
  1. X.Org Libraries Hit By Round Of Security Issues
  2. Xserver 1.14 support will arrive with Catalyst...
  3. Radeon 7770 Can't reclock crash kernel
  4. Radeon HD 7850 Catalyst wine performance
  5. Digia Announces "Boot To Qt" Project
  6. Fedora 18 Comes To ARMv6, Raspberry Pi
  1. Computers
  2. Display Drivers
  3. Graphics Cards
  4. Motherboards
  5. Peripherals
  6. Processors
  7. Software
  8. Operating Systems
  9. All Articles
  1. Linux Benchmarking
  2. OpenBenchmarking.org
  3. Phoronix Test Suite