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!
There are plenty of games that would be a bother to play via wine were it not for the Nvidia drivers. Thats why for more than 8 years I've installed nothing but Geforce video boards on most desktops, sad as it may be.
"- 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.
Google never had a problem getting it to work in Chrome.
In fact the dev builds on Linux were the first to have hardware acceleration.
Whether or not they're wrong about the drivers being shit (I won't disagree entirely) other browser developers aren't too incompetent to get it to work..
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.
Ah, but at least the OS X drivers are likely fairly consistent with the bugs due to the limited amount of different mac hardware out there.
I think a more accurate statement is that OS X OpenGL bugs typically don't crash the UI, unlike Linux OpenGL bugs. OS X OpenGL bugs mostly involve features not working. Like antialiasing, for example. Apple does a lot of work at the Quartz level to get decent antialiased graphics primitives.
GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
If you are interested about 3D performance on ANY platform, your choices aren't terribly diverse.
It's down to only 2 vendors: ATI & Nvidia.
It doesn't really matter if drivers for crappy gear is "whitelisted" in MacOS or Windows.
A Pirate and a Puritan look the same on a balance sheet.
nVidia supplies top-flight OpenGL drivers with their cards. They are in every way as stable and as fast as their DirectX drivers, and support the latest standards. ATi's OpenGL drivers are nearly as good. I haven't tested them recently but last time I did they weren't quite as fast as DirectX, but nearly so, and their feature support is current (4.1 with the current drivers). Their main issue is with older games since they can't limit extensions reporting which can cause problems for games that can't handle all the extensions modern cards have.
The support is true over many generations too. The very latest cards, the 580 and 6970, support OpenGL (version 4.1 in this case), and support had been there for a long time. Go back and get an original GeForce 256, you find that it supports OpenGL (1.4 in its case) and every card in between. Not an extra download either, it is part of the standard drivers they provide on their website (and their OEMs ship with their cards).
That isn't non-existent, that is heavily supported. More or less if you have a dedicated graphics accelerator on Windows, you have OpenGL support. The only major graphics provider I don't know about in Intel. I know their graphics chips have OpenGL support, though it lags a bit, but I've no idea how good it is.
Regardless, I'd say Windows drivers being "practically non existent" is very incorrect. If you want 3D acceleration for your system, you purchase an nVidia or ATi card. They are the only guys in the business anymore. They both supply current OpenGL drivers with their current products. Means OpenGL drivers are readily available, and in fact installed on most systems that have discreet 3D.
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.
Can't speak on Linux as I haven't used it on the desktop but for Windows, their drivers are fine. I still wouldn't rank them as highly as nVidia's, but it is mostly advanced features. Stability wise they are great, and they support all the current technologies (DX11, DirectCompute, OpenGL 4.1, etc).
I've had a 5870 for about a year now and it has worked real well, I don't find myself saying "Man I wish I'd stuck with nVidia." Now I still like nVidia better, and I'll be getting an nVidia card next round if they have a competitive offering (they didn't when I bought the 5870, they currently do) but it is for little things. For example nVidia handles per application settings much more gracefully than ATi. I have no reservations at all about using and recommending ATi, if they are the better value.
That was certainly not always true. There was a time when I wouldn't touch ATi with a 10-foot pole. However these days, for Windows at least, they are fine to use. Graphics are fast and the system doesn't crash, which is really what matters.
The Evergreen 5xxx cards were well ahead of Nvidia in performance and power consumption. Over the longer term, AMDs openness about hardware specs. will play out to their advantage. A policy direction like this one takes years to play out. They decided to invest development effort into cleaning up their code base so they could open source the majority of the specifications. This is a slow process and likely diverted talent from bug fixing their proprietary drivers. Meanwhile Linux is trending to a saner architecture for support of modern video cards. I can see Linux driver support (for AMD at least) becoming a strength two or three years from now.
From another perspective AMD simultaneously bet the farm and bit off more than they could chew with their fusion ambitions. Maybe they could chew it, but the kind of slow chewing you do when your cheeks are too full. The Global Foundries transition also added to the chipmunk cheeks.
It would have been a killer initiative had it been released on the original time frame, and still looks pretty good if their releases this year are quality out of the gate. They aren't in a good position to stumble again.
Slowly the driver support and the product releases are coming closer together. Hate to see them becoming the Postgres of the graphics industry. So much better it's not even funny, but at the bottom of most people's lists for reasons forgotten to time.
"The future is already here, it's just not evenly distributed." Isn't that written somewhere in the Linux license agreement?
Hell, it's not like the proprietary video driver developers are making a killing selling their software.
RMS's view is that you should get paid for your labor but not get paid for taking away someone elses freedom. Sometimes the model works effortlessly, sometimes it runs into complications.
Graphics drivers are all over the place. For instance, the intel stack, to be complete, requires:
- the xserver tree
- the protocols tree
- the libdrm tree
- the intel 2d video driver (includes separated DDX driver and XvMC driver)
- the kernel (drm tree)
- mesa with its integrated drivers
- libva (for vaapi)
That's 5 hardware-accessing drivers (internal kernel, DDX, XvMC, internal Mesa, libva) in 4 trees linked together with libraries and applications coming from 3 more trees. And they call each other through layers and layers of function arrays with no real documentation at any level. It's always fun when trying to understand a function to see it calling another one through a function pointer which after two more indirections finally ends up in another function a paragraph after the original one. And you have to trace everything, because the just as innocuous call after that one is in fact going to send a message through a drm connection and the X server to the DDX driver. And will be as documented as the previous one. Add to that a (failed, but present) tentative in the code to support almost any combination of versions in this dreadful house of cards, and you end up with an astounding amount of added complexity that does not make debugging easy.
And fixing that is probably not going to ever happen until X/Mesa is dead under its own weight. The bitching when the n protocol trees became the one protocols tree was incredible, I don't see the poor soul who managed that one doing it ever again.
OG.
You are right. All "I" letters seem really fuzzy to me. But there seems to be a workaround addon called Anti-aliasing-tuner. Mozilla should do a patch that tries to apply system wide cleartype settings same way this extension does.
- Will the next id game default to OpenGL (on windows)?
While I generally prefer OpenGL over DirectX for a number of reasons, OpenGL really isn't doing so hot in recent years.
That would be Rage, which is crossplatform and according to Carmack is an OpenGL game. Though the fact that it runs on Xbox must mean there's at least a D3D layer in there somewhere.
Google cares about having their browser run well on Linux because they intend it to run on Chrome OS. Mozilla doesn't really care about Linux support going all the way back to when they were Netscape. Linux/UNIX has never been a 1st class target, only a port with a 'couple guys' working on it.
Seriously, I bought Netscape 1.0 and the Linux binary wasn't even on the CD. Back then buying was the only way to get export prohibited crypto. When I asked them about it I got blown off. Some years they care a little more than that, others about that little. At all time they make it clear a hold up on a port won't slow down feature development on their primary platform. IE is getting hardware assist so Firefox WILL ship it before IE9 leaves bets. And that probably makes sense from their pov.
Democrat delenda est
I think there is a a lot of negativity going on here, but I don't think there needs to be. Gallium3D/KMS/DRM is moving along nicely, as are the drivers that use it. It's all new, but it is moving well, and at the end, the drivers will be easier to maintain with much more code sharing between them. This process also removes the drivers from X. This will make X development easier too, hopefully reinvigorating X development. It also makes X alterantives realistic possible, which is why all the excitement about Wayland. It's all a lot of big changes, and it's not finished. It's not surprising it's not perfect yet. Personally I can't wait for Nouveau to be able to take over from NVidia's closed drivers. People here are raving about them, but they crash about once a month for me, which is worse then any other driver on the system (non of which crash). You also get left behind with all the X development as NVidia don't take part. As the drivers start getting feature complete, optimization will be increasingly the new goal (stablity will always be a goal). This is happening! Nouveau has replaced nv, the open ATI and getting better all the time, and I expect Nouveau 3D to start becoming enabled as standard quite soon.
The open source ATI stuff is mostly junk.
Well, and that is ATI's fault. ATI fails to supply a working open source driver.
nVidia also fails to supply a working open source driver, but at least they provide a working binary driver.
Incidentally, ATI's Windows driver on my Windows 7 machine crashes with regularity as well, so maybe the problem is just bad ATI hardware.
It's a bit unfair to say OpenGL is bad just because the open source guys can't implement it correctly in the Linux drivers.
It isn't the responsibility of "the open source guys" to reverse engineer hardware to create drivers for it. They do that because manufacturers are pig-headed, but if there is no good, working ATI driver for Linux, that's ATI's fault and ATI's fault alone.
The problem is that if you run an Nvidia binary, it usually constrains you to running certain kernel versions. If that kernel version has a security problem, and you need to upgrade it to overcome the security problem, your Nvidia binary may now not work. So what do you do? Do you continue to have video and run a kernel with a known security vulnerability, or do you run a fixed kernel and have no video. You'll be stuck in that position for as long as it takes for Nvidia to upgrade their driver. That might occur quickly if your card is 12 months old, but what if it is 3 years old. IOW, you security depends on how important the security issue is to Nvidia, and they may not consider it as important as you do, or be willing to fix it as quickly as it is necessary for you to. This problem doesn't exist with open source video card drivers.
The Internet's nature is peer to peer - 20050301_cs_profs.pdf
Sorry to bring it to you, but since Firefox 3, Linux has been a 2nd priority platform for Firefox.
He just drapes his open source goals in "freedom" rhetoric to make it sound more important.
Could you be more ignorant if you tried?
RMS doesn't have "open source" goals. He has "free software" goals. It's not rhetoric, it's the real deal.