Monday, December 31, 2012

The sorry state of ATI drivers in Linux

Subtitle: broken by impress.js

I've been using Linux as the primary OS on all my laptops since a loooong time ago and until recently I always chose computers fitted with nvidia graphics over any other brand because their drivers probably have the best quality and performance.

My last (and current) laptop, an HP ProBook, came with ATI graphics, but since in the last years ATI seemed to have caught up, I decided to give it a try.
For over two yeas the laptop performed extremely well with Ubuntu 10.04 LTS as everything worked right out of the box with no customization whatsoever. Suspend/resume worked, performance was great and boot time pretty good too (for a conventional hard drive at 7200rpm, at least). The problems came with the upgrade to Ubuntu 12.04.

The first one was an overheating issue: the laptop (especially the bottom, but it could be felt on the top too) would simply become so hot that I would feel uncomfortable at resting the palm of the hand over it. Luckily that was fixed (but it took several weeks of googling) by adding this boot option:


After that I started getting random lock ups on shutdown. The issue is far too common with ATI cards, if you just take the time to google it. That I was never able to really fix it and decided that for a while I would just put up with it as, after all, it dit not occur frequently.

Then, this month, I started putting together a presentation for an upcoming talk and decided that I would write it with impress.js (btw, I believe that HTML will rule the world AND I just couldn't wait to ditch yet another Office application).

rendering artifacts on Chrome with ATI drivers: note the cut off
letters and the broken rotation effect on the bottom right.
As you might know impress.js pushes browsers to the limits by making heavy use of animation, transitions and all sort of cool HTML5 and CSS3 features. Unfortunately impress.js broke Google Chrome.
I had already experienced rendering artifacts with Google Chrome on other apps but thought that perhaps it was a problem with a specific Chrome version. Until I googled it and found this.

The solution is, in theory, pretty simple: upgrade your ATI drivers. Which I did, just to find out that my card (a Radeon HD 43xx) is no more supported and driver updates stop just short of fixing this issue. Annoying huh? Luckily Firefox still works so I could keep working on my presentation nonetheless.

Today I decided that I would fix the issue once and for all and decided to play with Chrome options to see if I could find a lucky charm to make Chrome behave. The option that (almost) fixed Chrome is the following:


broken 3D composition: the camera
should have rotated by almost 90° to
show the slide
Unfortunately this options breaks the rendering of 3D compositions, see picture on the left.

I was baffled. And annoyed. And decide to try my last card: the opens source radeon drivers. One more reboot later I was running radeon drivers and hesitantly opened Google Chrome.

3D performance is as bad as it gets (60 fps on glxgears versus 2000 with firegl!) but at least I could browse the web and view my presentation with Chrome again.

I played through the presentation, looking carefully for artifacts and when I reached the 3D-transformed was still broken.


I will be keeping the radeon drivers, just to avoid the hard lockups on shutdown. Chrome rendering has improved, even if it's not perfect.

Performance wise, the readeon drivers still allow me to run Unity 3D, but I am thinking about switching to XFCE. Surely in the future I will not buy computers with AMD/ATI cards anymore.

No comments: