The mysteries of video cards for Linux

September 22, 2010

One of the frustrating things about putting together a Linux machine is just how much specialized knowledge you need in order to do a decent job of it. Today I'm going to pick on video cards, partly because it's an area that I sort of follow so I actually know a bit about it.

Suppose that you want to spec out a new Linux machine, and you insist on using open source video drivers instead of being willing to live with proprietary binary drivers. The leading graphics cards contenders are ATI (now AMD), nVidia (still independent so far), and Intel's integrated graphics (if you get a motherboard with a suitable onboard chipset).

(At one point ATI was considered the best open source choice, then Intel surged ahead until they stumbled with the 'Poulsbo' mess, and now who knows. nVidia seems to be continuing its stance as basically open source hostile.)

You will search in vain for an easily located page on any widely used Linux distribution's website that says what the current best or well supported video cards are, or gives you any sort of feature tradeoff for different sorts of cards. Instead you are left to assemble this information on your own, and it's not simple.

There are at least three areas of driver support that have historically mattered: basic (2D) graphics capabilities, '3D' hardware acceleration, and various flavours of Xvideo (aka Xv). Some degree of '3D' hardware acceleration has mattered not just for 3D applications with OpenGL but also for a number of increasingly widely used graphics effects like alpha-blending (and Compiz and related desktop effects); however, it now may be included in the X server's EXA or XAA hardware acceleration framework, so that a card that has full EXA support would be good enough. At one point Xvideo support was essential in order to get good playback of video, but I don't know if that's still true in this era of fast machines and content that is already as big as many people's screens.

(The manual pages and websites for common video players are no help; many are hysterically out of date as far as X Windows issues go.)

There is a confusing matrix of what drivers support what features on what hardware, and what answers you get depend on where you check; for example, the radeon manual page on my Fedora 13 machine lists a different (and more limited) set of features than the Radeon feature matrix. The nVidia driver manpages don't even list Xvideo support, but I happen to know that it's available on some nVidia hardware.

In order to get a good answer, you need to know more here than I do, because what I've written down here is more questions than answers. You need to know not just what Xvideo is, but how important it is on modern machines and for various video players and sorts of content. You need to know something about how Glib and Qt implement their graphics effects, how much hardware support is needed to make them fast, and how that support is implemented in the X server. And, for that matter, how much OpenGL is quietly used by any programs that you care about (given that web browsers are already talking about GPU accelerated rendering, this may soon be more important than you think).

(Also, you will probably become quite good at decoding between chipset names and marketing names for various graphics chipsets. Wikipedia may help.)

All of this is frustrating; assembling this specialized knowledge is a bunch of work, you use it once, and then it rapidly goes obsolete (like all PC hardware knowledge, it has a half life measured in months). But you have to do this in order to pick a decently supported graphics card.

(Well, you probably have to.)

Sidebar: resources for doing this

Comments on this page:

From at 2010-09-22 11:34:39:

I've tried a number of different graphics cards over the years, and consistently Nvidia comes up top for Linux support.

Which is rather frustrating given their generally hostile approach to open source.

My home PC has an ATI HD 5750 in it, and my work machine has a low end Nvidia Quadro in it. ATI has come a long way with linux drivers since the last card I had from them (9800 Pro), which consistently proved to be a hassle to ever get working. The drivers these days do "just work", however there is a really large bug in that I can't ever get standard console output to work. Fine, right up until I screw up my *nix install (I fiddle a lot on my home setup, it's not unusual to screw up Gnome completely) at which point I have to grab a live disc just to be able to get at a command line.

Nvidia always has worked smooth as silk, I don't think I've ever experienced problems with it. That said I'm baffled why they insist on CUDA being part of a separate driver set and not just wrapped into the main one. Seems pointless not to have it there and just further discourages use.

By cks at 2010-09-23 11:10:19:

The situation for people who are willing to use the binary drivers is much different, but it's not something I have any real knowledge of (or interest in).

Written on 22 September 2010.
« Dear Solaris boot sequence: SHUT UP
Why things should be in Python's standard library »

Page tools: View Source, View Normal, Add Comment.
Login: Password:
Atom Syndication: Recent Comments.

Last modified: Wed Sep 22 02:56:01 2010
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.