As Phoronix readers should know very well if you've been a loyal reader the past few years, the ARM Linux graphics situation has traditionally been a ridiculous mess. ARM vendors haven't been interested in open-source GPU drivers, there haven't been many successful ARM open-source graphics projects in the past, and for a long time Imagination's PowerVR technology dominated the ARM graphics space and many of the capable open-source developers happen to be tainted from working on a driver for those cores.
Fortunately, as Rob Clark was quick to point out in his presentation, the ARM GPU situation is a hell of a lot better today for open-source Linux fans. Among the recent accomplishments that were covered in his XDC2013 presentation:
- The reverse-engineered Etnaviv driver for Vivante hardware in devices like the SolidRun CuBox and GCW Zero is taking shape. Etnaviv has a working Gallium3D-based driver, but it's currently maintained outside of the Mesa stack. This Gallium3D driver also works only when using a fbdev-based back-end and the development needs help in the area of an X.Org DDX, DRM/DRI2 driver, and other features. While it's lacking a lot, it's progressed quite a lot considering the reverse-engineering began less than one year ago.
- The GRATE driver, which has some support by NVIDIA, to support the Tegra 2/3/4 ARM devices is still early in the research stage. The GRATE developers have support for command stream capturing and replay, basic understanding for its OpenGL state, comprehension of the vertex shader ISO, and there's work on the fragment shader ISA. GRATE is being developed into a Gallium3D driver and so far the user-space side is very young.
- The Lima driver by Luc Verhaegen that really got some movement going in the ARM reverse-engineering space is still ongoing. The Lima driver is focusing upon the Mali 200/400 hardware and it has a basic Mesa classic driver that is starting to work. This classic Mesa driver though is still based upon the proprietary compiler back-end.
- Rob's Freedreno driver for the Qualcomm Adreno A2xx/A3xx hardware has its initial DRM/KMS driver merged into Linux 3.12 and the Gallium3D driver has been around since Mesa 9.2. There's also an xf86-video-freedreno driver that supports using the XA Gallium3D state tracker and the Z180 2D core. Freedreno can also work on Wayland/Weston! In terms of OpenGL support, it can handle OpenGL ES 1.0/2.0 and most OpenGL 1.4, but there's still some work involved in supporting MSAA, hardware binning pass, compiler optimizations, etc. Besides being able to run Wayland's Weston, Freedreno works with the GNOME Shell, XBMC, Xonotic, OpenArena, etc. Freedreno is pretty much the open-source ARM Linux graphics driver in the best shape right now.
More details on the status of these drivers as shared by Rob Clark this past week at XDC2013 can be found via his presentation PDF slides.