Archive for July, 2008|Monthly archive page

Open or closed source drivers for ATi cards: Which is better?

In linux, opensuse on July 17, 2008 at 9:22 pm

Man, it’s been 7 months since I wrote on this blog. Well, not really. I had a few posts that were started but never got completed. Did I mention how lazy I can be sometimes?

Anyway, let’s get back to the point of the post. As we all (or should all) know, AMD purchased ATi sometime back. On the linux front, thanks to an agreement with novell, ati has been steadily releasing documentation to opensource devs containing specifications for ati cards. A wise man once said, why continue with your shoddy coding when you can get people to support your crap for free?

Radeonhd, which is the brainchild of this whole documentation releasement, is coming along quite nicely. Owners of the x1000 and newer ati cards running linux can now rejoice and download the driver from their nearest distro repository. You can check out the website here.

Now, what about the tried and true radeon driver? The driver that has been chugging along since time immemorial? Since before such things as manufacturer provided documentation existed? How does it compare to the proprietary driver nowadays? It is slowly incorporating some stuff gleaned from ati’s documentation.

I haven’t had the luxury to test out the radeonhd driver since I happen to own a laptop containing the x700 mobility radeon. As any linux user with an ati card knows, the past few years have brought nothing but disappointments with each new fglrx release. Yes, ati was pulling itself together. Yes, the fglrx driver was able to achieve decent frames per second. However, each new release fixed one or two things and broke 5 more. The important bugs, such as, oh I don’t know, problems with compiz/beryl, corruptions on certain cards, incompatibility with 3D rendering, etc, took several releases cycles before they got fixed, if they ever got fixed. Some people are still using drivers released over a year ago because everything after that breaks their system terribly. Check out the forums at phoronix for discussions/complaints on each new fglrx release. Such things make one wonder if the ati linux dev team is really just one person. I mean, if a group of people are getting paid to improve the linux driver, only major incompetence would explain how little gets done every month.

I admit it, I got pretty frustrated with fglrx for the reasons listed above. I couldn’t play videos with some driver releases, compiz would slow to a crawl with others. Several just never compiled because ati was often very late on supporting newer kernels and patches weren’t always available. Seriously, the kernel major release cycles takes months. That’s plenty of time to add support. If you still don’t support a major release kernel 3 months after it was released, WTH?

While doing beta testing for opensuse 11.0 + kde 4.0, I had removed the fglrx driver sometime before and never bothered to reinstall it. I spent three or so months using a video driver that just worked. Glxgears was returning ~2800 FPS. I didn’t play many games during that time, but the ones I played worked perfectly. Compiz was disabled, as I wanted to get more acquainted with kde 4’s desktop effects. When I finally installed the opensuse 11.0 GM, I decided it was time to install fglrx for compizness.

The install went smoothly, with zero xorg.conf tweaking on my part, thanks to opensuse 11.0 enabling AIGLX whenever fglrx is installed. I just added the ati community repo in yast and off I went. The most configuration I had to do was run sax which I did more out of habit than anything else.

With the smooth install, I foresaw sunny skies ahead. The laptop ran well for most of the first day after the new install, but the X server froze later in the evening. I assumed this was a minor glitch on the somewhat buggy .0 release. I restarted and all was well with the world. Until the next day that is. X froze multiple times in a row. Since I had been running factory up until the previous day without any glitches, I figured I may need to update the default kde 4 to factory. I did. Sunny skies returned. For one more day at least. Every day after that, I had to update kde 4, otherwise my X would freeze. Strange isn’t it? On the days when kde 4 factory didn’t get an update, I experienced random freezes, which occured every few minutes until I updated kde 4. Oh yeah, all 3D stuff had terrible flickering. After a couple kde 4 upgrades, games like tremulous, glest, planeshift and sauerbraten which had been just barely tolerable initially, became completely unplayable.

I started pondering what else was different between my beta system and my current system. Well, I certainly wasn’t updating my system to factory (been there, done that when I needed to, got the tshirt). The only other difference was the video driver. For the life of me, I couldn’t figure out what driver I had been using on the beta install. The opensource radeon driver has given me a black screen ever since opensuse 10.3. I tried it anyway, with the same result. The radeonhd driver didn’t support my card. I tried it anyway, but no luck either. I then tried vesa…. yes, vesa. No surprise, the rendering was slow as molasses.

I even tried installing fglrx, but without configuring it with sax, and on a kernel that it couldn’t compile on. That gave me some pretty interesting results. 2D stuff worked fine, but 3D and compiz died a horrible death. Xorg logs showed parts of the fglrx driver were used for certain things, but glxinfo showed SGI as the glx vendor. Hmm.

So what the hell had I been using during those months of zero hassle? I stumbled on the answer by mistake. While futzing around with dependencies for fglrx in yast, I accidentally enabled both ati-fglrxG01-kmp-default as well as x11-video-fglrxG01 for removal. I also blocked the other fglrx related drivers, which naturally kept wanting to install. Surprise surprise, my laptop booted fine. Glxinfo gave me about 2600 FPS and damn, 3D games looked great. When I checked my xorg.conf, lo and behold, I was using the radeon driver. Just to be sure I was seeing things right, I installed x11-video-fglrxG01. The next X start gave me a black screen.

It’s been a longish post. Good thing I’m winding down. The point of this post was simply to put it out there that the radeon driver is now more usable than the fglrx driver. The fglrx driver only trumps the radeon driver in FPS under glxgears (~4400 vs 2800 on my system). However, none of my 3D applications showed a drop in FPS and none of them flicker (note that on planeshift, fullscreen is required to avoid some flickering  when using the radeon driver). The only problem I have encountered with the radeon driver is that if I load a game after resuming from suspend or after the laptop has been on for several hours, X is highly likely to freeze at some point. This doesn’t happen after a clean boot. Oh yeah, did I mention compiz works? It does, and with no hits to speed.

Goodbye cruel fglrx world. You treated me and mine as an afterthought, so here I return the favor. I’ll keep an eye on that front, but I’m done using the driver, unless a revolutionary release appears.

For those that feel they need the fglrx driver to get usable 3D or whatever, it’s about time to check out the radeon driver if your card is supported. Of course, as with anything, performance is system dependent, so your mileage may vary. Just don’t forget to remove everything related to fglrx before you switch to radeon, especially if using a mobility radeon card.