The open-source "Freedreno" Gallium3D driver that provides reverse-engineered 3D support for Qualcomm's Adreno/Snapdragon graphics processor is turning out to be in quite good shape. Freedreno is one of the first good ARM Gallium3D drivers and it might soon be merged into Mesa.
Rob Clark talked about his Freedreno
Gallium3D driver this weekend at FOSDEM in Brussels. This is the reverse-engineered open-source Qualcomm driver
that he began to work on last April.
While Freedreno is a personal side project mostly just worked on by Clark himself in his spare time, the 2D and 3D reverse-engineered driver support is coming along rather well. Right now he's doing most of his work from an Adreno A220/Z180 (Snapdragon S3) as found on an HP TouchPad. However, he's soon going to be switching over to focusing upon a Google Nexus 4 with an A320.
In terms of EXA/2D accelerated support, all of the basics work and he understands enough of the registers now for the Qualcomm hardware. Rob Clark just needs more time to finish implementing the rest of the support, but all of the basics are in place.
For the more interesting reverse-engineered 3D support with his Gallium3D driver, the 3D basics are working but there are some bugs. Compiz is already running on this driver and other common OpenGL workloads. He's already getting +50% the performance of Qualcomm's official driver for workloads like glmark2, XBMC, Compiz, and Quake 3 Arena.
Freedreno Gallium3D actually works!
Still needed is to understand the command stream for MSAA and mipmap textures. His 3D compiler also needs to add in support to handle loops, optimizing, and hardware binning (tiling).
A video of the entire Freedreno presentation (along with the other X.Org development room talks) will be published on Phoronix in the coming weeks.
In talking with Rob later on in Brussels, he shared that rather soon he expects his Gallium3D driver might be in a state for merging into mainline Mesa. The Gallium3D driver is in relatively good shape for being reverse-engineered, less than one year old, and being largely developed by just himself.
Right now he's relying upon Qualcomm's open-source Linux kernel driver, but he has shared that in the end he might end up writing his own kernel driver too. It will be some time before he looks into this further, but he might end up writing his own Freedreno DRM driver if he ends up hitting enough limitations and problems of Qualcomm's official kernel driver.