Graphics support on Linux has always been something of an “interesting” topic on Linux. On the x86 side of things over the last 15 years or so there’s been somewhat of a consolidation of GPU manufacturers found in most video cards. Now days you basically have a choice of Intel, ATI or NVIDIA chipsets. They are mostly pretty well supported in Linux whether it be by the vendors themselves or through community projects. I can remember back in the 90s when there was a lot more vendors. Anyone remember when around 1998 a Matrox g200 was the best card to get for Linux, or even earlier around 95/96 (when I first started using Linux) where a S3 ViRGE was always a good bet to get a working X? No, not a lot of people do! Maybe that’s not such a bad thing, I for one was not sad to see the end of modelines and xorg.conf files.
So having got involved in the ARM project one of the less nice things at this point in time is the complete lack of decent X drivers for 3D, and in most cases for 2D the best you can do is a FBdev driver. A few off us discussed the sorry state of drivers for ARM based devices at FUDCon Blacksburg.
So what is out there? Do we have the mass variety of GPUs like the older x86 days, or is it more like big three of today with a few minor players on the side? Most definitely the later. For the devices we’d like to support within Fedora ARM we have the following devices to contend with. Firstly ARM themselves make the MALI GPU, they’re used in Samsung, ST Ericsson and other platforms. Then we have the NVIDIA ULP GeoForce used in Tegra 2 an Tegra 3 systems, apparently its nothing like it’s older brothers. Next up is the Imagination Technologies PowerVR as included in, amongst others, the TI OMAP, Samsung Hummingbird, Apple Ax. Those three seem to be the major ones we encounter at the moment. There’s also the GPUs used in the Marvell, Freescale, Qualcomm Snapdragon, Broadcom, and what ever the many other ARM platforms use, I’m not exactly sure of all those details.
At the moment the state of accelerated drivers is very similar to the time when AdamW would rant about Poulsbo drivers. Basically you grab a download of a system that ships binary only drivers and attempt to make them work with the current Fedora X and hope that it works and is mostly stable. Not ideal!
A week ago at FUDCon the state seemed dark and horrible and not about to change at any time soon. A week later it seems there’s a ray of light poking its way over the horizon that may indicate the winter might be starting to thaw on the way to a warmer spring. So why do I think there’s light at the end of the tunnel?
Firstly there’s a FOSDEM talk entitled Liberating ARM’s Mali GPU by Luc Verhaegen. Having a Nouveau style driver for the MALI GPUs will be a massive improvement for Linux on ARM as this is the core that ARM develops themselves and companies can then license it to use without having to develop their own. I think we’ll see this GPU design in a lot of devices in the coming years.
Next up there’s hints from Arnd Bergmann, a kernel developer at IBM/Linaro (according to LinkedIn), that the traditionally frosty relationship NVIDIA has with Linux X drivers might change for the Tegra platform with the comment of “see them in the same boat as Intel and AMD regarding their support for free drivers in the near future”. Which while isn’t any form of guarantee it sort of indicates they might well be at least considering it.
Samsung has also had their Exynos 4210 DRM driver merged into kernel 3.2. It’s a basic, un-accelerated DRM driver which supports KMS. It’s some forward movement, although there’s no mention yet of what the user side driver will consist of. There’s also a project for an open S3C6410 driver which is a earlier gen Samsung SoC.
Texas Instruments is also working on it’s omapdrm driver which also provides a similar basic DRM/KMS functionality. There’s also a matching X.Org driver which in conjunction with omapdrm can provide a 2D DDX driver. No 3D yet though. Not really holding my breath on that one to be honest. The FSF has had PowerVR on it’s high priority list for quite some time and as the GPU in every generation of iDevice Imagination Technologies Group has no financial incentive to support any form of X based 3D driver as they’re already selling silicon hand over fist whether it’s iOS or Android based. The working 2D driver for the aforementioned SGX derived Poulsbo plus the OMAP bits might be enough for some smart hacker to glue bits together to at least get a decent general purpose 2D SGX driver though.
Well the open drivers on ARM aren’t great, but at least there’s a few upcoming improvements to look forward to. Maybe the smaller companies might realise that an open driver will at least allow them to sell some silicon designs where they can’t get their foot in the door with the likes of Apple. Maybe people like Luc will just hack them before they do and make it a mute point.