Home » How do I choose a graphics card for Linux?

How do I choose a graphics card for Linux?


Open source drivers are getting pretty good these days. I haven’t had any problem with Intel or AMD hardware.

I hear the old ones are pretty bad, but my G4500HD does everything I need well. Video acceleration could be better though. There isn’t a proprietary driver for Intel either, your only choice is open source. The composited 3D desktop in KDE works great on my laptop which has an Intel chip.

Right now the older cards are better supported than the new ones. If you could somehow get an x1800 or something from the same generation that would probably be the best. The r300g driver is getting more development work than r600g. That’s not to say r600g is bad, in fact it’s great! It’s just somewhat behind the driver for the older hardware. AMD has a proprietary driver for the new hardware, but in my experience you want to avoid it; it’s pretty bad. The hardware covered by r300g isn’t supported by that driver, so the open driver is your only option there. And like the Intel chip I have, my Radeon 4850 runs the composited desktop in KDE well.

At the moment, I wouldn’t recommend an HD6000 series. The 6900s have no support at all in the open driver, and the others have basic support. Go for an HD5000 or an HD4000.

They have a really good proprietary driver, but the open driver is struggling along. It’s getting better all the time, but Nvidia is doing nothing to help the developers. At least AMD helps out a little bit for their hardware.

The advantage to having an open driver is that it will work out of the box in any distro. If you install Fedora, everything will work including dual screen and 3D. The proprietary ones are painful to setup. Neither of them properly set up my dual screens. It was easier to setup with Nvidia which isn’t saying much because the AMD blob was just awful at this. Also, anytime you update the kernel, you have to reinstall the driver. Most distros take care of this if you install the in-repo version, but if you don’t it’s annoying to boot up one morning and realize you updated the kernel and now X.org doesn’t work.

If you aren’t planning on playing 3D games, either the Intel or AMD drivers are the best. The AMD driver is more modern than the Intel one, it uses the Gallium3D architecture within Mesa (that’s what the g stands for in r600g), but they both get the job done.

Although this post is based on facts, it still contains my personal experience and opinions.


Although there is a project for OpenSource drivers, you probably need to consider Nvidia being closed source drivers only. Now in case of Nvidia this doesn’t really bring a lot of bad things since they really work on their drivers very hard. The best support when it comes to closed source graphic card drivers on Linux.

Nvidia graphic cards are the only ones that provide equivalent performance on Linux and Windows.

Still, the closed source drivers imply some limitations like no support for features available only to GPL drivers (like KMS).


Now when choosing Intel you need to be extremely careful. Some of the Intel graphic cards are actually 3rd party bundled cards that don’t have any (or have very crappy) support. But if you choose the correct chip, you can enjoy the best opensource drivers out there. For example even very low end Intel cards can be faster in compositing window managers then high end Nvidia cards.


Now this is complex. AMD provides both proprietary drivers (that tend to suck a lot) and they also release documentation and support opensource drivers development.

Now the problem is that the opensource drivers will never contain certain licensed/patented/etc… features and since they don’t really concentrate on the closed source drivers development I guess they will always be behind (Windows features/performance).

Check out the following lists of linux friendly graphics cards/chipsets, both open and proprietary:

http://www.phoronix.com/scan.php?page=category&item=Graphics%20Cards (provides benchmarks and reviews and all, pretty cool)




On a personal note, i would choose a NVIDIA graphics card. Their proprietary linux drivers are really good and frequently updated. They even release driver versions for FreeBSD and Solaris. To my knowledge there’s no match out there(neither proprietary nor free) and I didn’t have any real issues with direct rendering and 3D pertaining to NVIDIA cards since GeForce series got out.

Related Solutions

Joining bash arguments into single string with spaces

[*] I believe that this does what you want. It will put all the arguments in one string, separated by spaces, with single quotes around all: str="'$*'" $* produces all the scripts arguments separated by the first character of $IFS which, by default, is a space....

AddTransient, AddScoped and AddSingleton Services Differences

TL;DR Transient objects are always different; a new instance is provided to every controller and every service. Scoped objects are the same within a request, but different across different requests. Singleton objects are the same for every object and every...

How to download package not install it with apt-get command?

Use --download-only: sudo apt-get install --download-only pppoe This will download pppoe and any dependencies you need, and place them in /var/cache/apt/archives. That way a subsequent apt-get install pppoe will be able to complete without any extra downloads....

What defines the maximum size for a command single argument?

Answers Definitely not a bug. The parameter which defines the maximum size for one argument is MAX_ARG_STRLEN. There is no documentation for this parameter other than the comments in binfmts.h: /* * These are the maximum length and maximum number of strings...

Bulk rename, change prefix

I'd say the simplest it to just use the rename command which is common on many Linux distributions. There are two common versions of this command so check its man page to find which one you have: ## rename from Perl (common in Debian systems -- Ubuntu, Mint,...

Output from ls has newlines but displays on a single line. Why?

When you pipe the output, ls acts differently. This fact is hidden away in the info documentation: If standard output is a terminal, the output is in columns (sorted vertically) and control characters are output as question marks; otherwise, the output is...

mv: Move file only if destination does not exist

mv -vn file1 file2. This command will do what you want. You can skip -v if you want. -v makes it verbose - mv will tell you that it moved file if it moves it(useful, since there is possibility that file will not be moved) -n moves only if file2 does not exist....

Is it possible to store and query JSON in SQLite?

SQLite 3.9 introduced a new extension (JSON1) that allows you to easily work with JSON data . Also, it introduced support for indexes on expressions, which (in my understanding) should allow you to define indexes on your JSON data as well. PostgreSQL has some...

Combining tail && journalctl

You could use: journalctl -u service-name -f -f, --follow Show only the most recent journal entries, and continuously print new entries as they are appended to the journal. Here I've added "service-name" to distinguish this answer from others; you substitute...

how can shellshock be exploited over SSH?

One example where this can be exploited is on servers with an authorized_keys forced command. When adding an entry to ~/.ssh/authorized_keys, you can prefix the line with command="foo" to force foo to be run any time that ssh public key is used. With this...

Why doesn’t the tilde (~) expand inside double quotes?

The reason, because inside double quotes, tilde ~ has no special meaning, it's treated as literal. POSIX defines Double-Quotes as: Enclosing characters in double-quotes ( "" ) shall preserve the literal value of all characters within the double-quotes, with the...

What is GNU Info for?

GNU Info was designed to offer documentation that was comprehensive, hyperlinked, and possible to output to multiple formats. Man pages were available, and they were great at providing printed output. However, they were designed such that each man page had a...

Set systemd service to execute after fstab mount

a CIFS network location is mounted via /etc/fstab to /mnt/ on boot-up. No, it is not. Get this right, and the rest falls into place naturally. The mount is handled by a (generated) systemd mount unit that will be named something like mnt-wibble.mount. You can...

Merge two video clips into one, placing them next to each other

To be honest, using the accepted answer resulted in a lot of dropped frames for me. However, using the hstack filter_complex produced perfectly fluid output: ffmpeg -i left.mp4 -i right.mp4 -filter_complex hstack output.mp4 ffmpeg -i input1.mp4 -i input2.mp4...

How portable are /dev/stdin, /dev/stdout and /dev/stderr?

It's been available on Linux back into its prehistory. It is not POSIX, although many actual shells (including AT&T ksh and bash) will simulate it if it's not present in the OS; note that this simulation only works at the shell level (i.e. redirection or...

How can I increase the number of inodes in an ext4 filesystem?

It seems that you have a lot more files than normal expectation. I don't know whether there is a solution to change the inode table size dynamically. I'm afraid that you need to back-up your data, and create new filesystem, and restore your data. To create new...

Why doesn’t cp have a progress bar like wget?

The tradition in unix tools is to display messages only if something goes wrong. I think this is both for design and practical reasons. The design is intended to make it obvious when something goes wrong: you get an error message, and it's not drowned in...