Why Linux Loses Out On Hardware Acceleration In Firefox
devtty writes with some bad news for Linux users, from OSNews: "The release notes for Firefox 4.0 beta 9 noted that it comes with hardware acceleration for Windows 7 and Vista via a combination of Direct2D, DirectX 9 and DirectX 10. Windows XP users will also enjoy hardware acceleration for many operations 'using our new Layers infrastructure along with DX9.' Furthermore, Mac OS X has excellent OpenGL support, they claim, so they've got that covered as well. No mention of Linux, and there's a reason for that. 'We tried enabling OpenGL on Linux, and discovered that most Linux drivers are so disastrously buggy (think "crash the X server at the drop of a hat, and paint incorrectly the rest of the time" buggy) that we had to disable it for now,' explains Zbarsky, 'Heck, we're even disabling WebGL for most Linux drivers, last I checked...'" An update to the story softens this news slightly, saying that "hardware acceleration (OpenGL only) on Linux has been implemented, but due to bugs and issues, only one driver so far has been whitelisted (the proprietary NVIDIA driver)."
Until graphics card manufacturers take Linux seriously, these problems are always going to occur. That's why it's stupid to use the argument that OpenGL is better than D3D because it's cross-platform. It's only cross-platform insofar as there is actually an implementation on Linux. After that, I'm wondering if it's better to use D3D and Wine instead of native GL!
"- Windows OpenGL drivers are practically non existent". That's just non-sense. ATI and NVidia drivers both include OpenGL up to version 4.0. The Windows OpenGL drivers are so advanced they let you use directx 10 features, such as image arrays, on Windows XP.
This conclusion matches the observation of the kwin developers who are brave enough to use GLSL for desktop effects
http://blog.martin-graesslin.com/blog/2010/09/driver-dilemma-in-kde-workspaces-4-5/
Without citations to back it up, the response of some open source devs was, IIRC: The KWin guys don't understand open source. They are meant to get in touch with the driver developers and help getting the bugs resolved, preferable send patches. The clutter developers i.e. sent patches to solve driver problems.
IIRC, the mentioned contribution from clutter devs to the graphics drivers were made by Red Hat employees, which heavily backs the gnome development. Red Hat has lots of money and eve more important expertise in house to tackle such problems. The KWin guys don't have these resources.
Open source gives the means to find, analyze and fix bugs, but its not mandatory. Saying so would mean that one has to know the code bases of every open source library used by his or her application. Thats ridiculous.
The firefox devs sure don't plan to get into linux graphics driver development and thats fine.
The real problem is that the driver teams don't have enough resources (money and developers) to get the job done. I'd be happy to vote with my feet and only buy graphics hardware with good open source drivers to encourage to hardware vendors to hire linux kernel developers. But right now I have to stick with nvidia since their drivers, though not open source and certainly have their own bugs, are the only sufficient choice for OpenGL (and OpenCL) on linux.
If you need to hardware accelerate web browsers these days, I think that more indicates a problem with modern website design.
Rather nVidia's drivers are a result of two things:
1) Getting tired of the Linux situation. Much of the problems with the bullshit in X and the underlying layers nVidia just avoids by bypassing it all with their drivers. They do things their own way and it works. They weren't interesting in fucking around with all the politics and BS and waiting around for a reasonable standard to get developed, and just made something that works. They shouldn't have to, and didn't on Windows which provides a solid graphics infrastructure (which also allows for extension so you can implement other APIs like OpenGL) but htey did on Linux.
2) Their drivers use code they've licensed that they can't distribute. Various things are patented or licensed in some way and they can't just hand it out. So to do an OSS version would mean to rewrite the drives without it, and generally using programmers that had never worked with it to avoid issues of contamination. That is difficult and expensive. Before you claims that can't be the case note that AMD hasn't just opened up their binary drivers. The reason is the same.
Basically nVidia did what was best for their business, and best for their customers that want to get work done. They made Linux graphics drivers that work well. They aren't OSS friendly, but they can accelerate OpenGL well and they have been doing so for years. They weren't interested in ideological purity or the like, they were interested in having good support, and their strategy delivered and is STILL the only one that does, after all this time.
Maybe in a few years you'll be right, there'll be an open solution that works as good or better. Maybe at that point nVidia will use it. However right now I have trouble faulting them. Their shit works where the other's don't. That is really all that matters.