Skip to main content

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:

pcie_aspm=force

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:

--blacklist-accelerated-compositing

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 slide...it was still broken.

Conclusions

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.


Comments

Popular posts from this blog

Mirth: recover space when mirthdb grows out of control

I was recently asked to recover a mirth instance whose embedded database had grown to fill all available space so this is just a note-to-self kind of post. Btw: the recovery, depending on db size and disk speed, is going to take long. The problem A 1.8 Mirth Connect instance was started, then forgotten (well neglected, actually). The user also forgot to setup pruning so the messages filled the embedded Derby database until it grew to fill all the available space on the disk. The SO is linux. The solution First of all: free some disk space so that the database can be started in embedded mode from the cli. You can also copy the whole mirth install to another server if you cannot free space. Depending on db size you will need a corresponding amount of space: in my case a 5GB db required around 2GB to start, process logs and then store the temp files during shrinking. Then open a shell as the user that mirth runs as (you're not running it as root, are you?) and cd in

From 0 to ZFS replication in 5m with syncoid

The ZFS filesystem has many features that once you try them you can never go back. One of the lesser known is probably the support for replicating a zfs filesystem by sending the changes over the network with zfs send/receive. Technically the filesystem changes don't even need to be sent over a network: you could as well dump them on a removable disk, then receive  from the same removable disk.

How to automatically import a ZFS pool built on top of iSCSI devices with systemd

When using ZFS on top of iSCSI devices one needs to deal with the fact that iSCSI devices usually appear late in the boot process. ZFS on the other hand is loaded early and the iSCSI devices are not present at the time ZFS scans available devices for pools to import. This means that not all ZFS pools might be imported after the system has completed boot, even if the underlying devices are present and functional. A quick and dirty solution would be to run  zpool import <poolname> after boot, either manually or from cron. A better, more elegant solution is instead to hook into systemd events and trigger zpool import as soon as the devices are created.