We have an ATI/AMD equipped laptop, an Acer Aspire 5740DG, which recently had a hard disk crash. We replaced the disk, reinstalled Windows 7 from scratch, and since then, Tao Presentations has an annoying blinking bug in full screen mode. The only workaround we found so far? Selecting one of the rotated display modes! In that case, it works as it should. Could someone at AMD shed some light on this bug? I'm really curious!
It used to work perfectly...
The machine we tested with is an Acer Aspire 5740DG, a laptop mostly notable for including a 3D stereoscopic display. This is the very reason we bought this laptop, since it is a good way to demo 3D presentations in actual 3D on the go. We used this laptop very frequently, on trade shows, with customers or just for testing purpose. In short, I know it used to work perfectly with the stock Windows 7 installation.
A few weeks ago, the hard disk started showing definite signs of going gaga. It clicked, Windows rebooted to run disk checks every other hour, files became unreadable more or less at random. It definitely looked bad. So we decided to replace the disk with a fresh one and reinstall everything.
We installed Windows 7 64-bit (since that's what we had on the machine initially), but also took the opportunity to dual-boot the machine with Ubuntu (since our product also runs on Linux, and many of our customers prefer that configuration).
Apparently, everything went smoothly. So I took the laptop with me on a trip, hoping to showcase our work to my family.
The screen blinking from hell
Unfortunately, as soon as I switched to full screen, the screen started blinking like crazy, as illustrated in the video above. At first, I thought the laptop was damaged, or that the problem came from some new bug in the experimental version of our software I was using.
Restoring older versions of the software that I had personally tested extensively on this very machine quickly ruled the "new software bug" hypothesis. The same blinking kept occuring even with Tao Presentations 1.09, which is a few months old, long before the disk problems.
Booting on Linux clearly proved that this was not a hardware issue either. The Linux version of Tao Presentations ran in full screen without any problem. It's a bit slower because the drivers are apparently not as good as the Windows ones, but it shows no blinking or any other anomaly.
Reinstalling AMD drivers is a real pain
So I decided to reinstall the AMD drivers. First obvious choice, go to the AMD web site. I select the option to autodetect my hardware. This download a file proposed from this page is called catalyst_mobility_64-bit_util.exe.
This is not the actual driver, mind you. That would be waaaay to simple. It's a kind of "verification tool", that checks if what driver version your laptop requires. Not sure what purpose this is supposed to serve, since as far as I can tell, AMD/ATI engineers crammed as many drivers as they possibly could in a single 150MB Catalyst monstrosity. Don't try to evaluate how many Commodore 64 it would take simply to store this collection of display drivers - it hurts.
Anyway, the verification tool itself is small-ish (a mere 17 Commodore 64), but it still doesn't work at all. Running the program helpfully offers the option to download something else (huh?), but then immediately tells me that I cancelled the download. No I didn't. Trying again greys out the button, the only option being to quit the program. Great. Trying again gets me the same result with highly annoying predictability. Additional pet peeves: half of the messages get truncated in the French version, so you only see part of the text. Yuck.
The reference in compromised user experience
The next best choice is to pretend I'm a computer geek who knows stuff, and download the Catalyst package directly. Just go to the Catalyst web page, run a quick sanity check to verify that the package is supposed to support the Mobility Radeon HD. Oh joy, it does. That's the great thing about 150MB
monstrosities unified driver packages.
There is actually a rather frightening warning on the page, but since there's nothing drawing the eye to it (a little bit of red goes a long way), I entirely missed said warning when I skimmed through the page. The warning itself is worth its weight in grains of salt.
AMD Catalyst Mobility software is a notebook reference graphics driver with limited support for system vendor specific features. When used with Windows Vista or Windows 7, the user experience may be limited or compromised.
Let's not speculate on what it means to produce a reference graphics driver which is supposed to deliver a limited or compromised user experience... The truth is... I should have read this carefully! Boy, was I naive two days ago!
So I went ahead and downloaded the 150MB bag-o-bits helpfully called 12-8_vista_win7_win8_64_dd_ccc.exe (who names these things anyway). Please note that this vista_win7_win8 file is the very thing that, "when used with Windows Vista or Windows 7" may deliver a semi-suboptimal user experience. Hmmm. Why does it have vista, win7 and win8 in the file name then? I don't get it.
Let me try to get that straight. We can safely assume that AMD does not intend that package to work on XP. Since user experience is supposed to be compromised on Vista and Windows 7, that only leaves Windows 8... Is AMD so ahead of its time that its drivers now only officially support Windows 8?
Actually, based on the rest of the user experience with Catalyst, I came to another conclusion. My guess is that AMD could not test Catalyst sufficiently with Windows 8 to ascertain that the software could properly serve as a reference for the compromised experience users came to expect from them. In short, at this point in time, the "Compromised User Experience Guaranteed (TM)" is reserved to Vista and Windows 7 users, Windows 8 users will have to wait the official release. That's just a guess, of course.
Catalyst BSODs during installation
In any case, installing the software gave me no warning whatsoever, except a subliminal one or two. The first subliminal messages are the not so subliminal ads that the installer yells at you during installation. Those are all pretty violent shoot-m-up. Is that a kind of installerese version of Kill All Humans? Are AMD installers subtly telling me that they are on the verge of becoming self-aware?
But the truly worrisome sign is that the progress bars appear to set a new bar in randomness. Now that's progress for you. There is not one bar, but two. That, unfortunately, is still frequent enough on Windows that I can't single AMD for having two progress bars. But then, both the top and bottom bars go back and forth in a way that makes quantum physics look entirely predictable by comparison.
Let me ask a simple question: Can you really trust programmers who can't get something as simple as progress bars right? Can you trust them with something as complex as a display driver?
Anway, this sickening back and forth motion of progress bars must have been well beyond Windows 7's ability to cope. After a while, my screen turned black, with a sort of funny DOS-like blinking cursor. I barely had time to think "nix good" that it had turned to that peculiar shade of blue shared by the smurfs and the Windows kernel panic.
The Beware of the Leopard school of computer design
Oh well, time to uninstall everything and retry. That got me a perfectly working VGA display, with resolution limited to 1024x768 and no acceleration.
Ah, but wait, there's a warning. It seems that Windows 7 does not accept the signature of the driver I downloaded, so it basically won't run it! How do I know? You'd think that if something as critical as a driver with a bad signature was loaded, you'd get Windows yelling at you something like "Your system may be compromised by this or that driver". Or "Are you sure that driver X is genuine". Or something like that. In 72 points font, red, blinking.
But no. To know why Catalyst complains that there's nothing on your system it can control, you actually have to right click on the Properties for your computer, then go to the Device Manager, then open the display devices, then notice the yellow little warning sign next to your card, then double click on that line to get a dialog box where, somewhere, is a tiny indication that Windows decided to not load the driver. That is what I call the Beware Of The Leopard school of computer design.
At that point, the proper reaction is "Aaaaaaargh!"
ATI.com not responding
As an aside, a good fraction of the problem seems to be the ATI.com web site. It looks like this web site is mostly broken, and this in turn breaks a number of AMD applications. For example, clicking on one of the links of the Catalyst Control Center sends me to http://www.ati.com/online/cccwelcome/fra/drivers.html, which helpfully 404s me. Great.
All the link I could test in the application respond in that way. Well, it's worse than that. As far as I can tell, http://www.ati.com itself does not respond, but it does so with style:
The requested URL "/", is invalid.
There was a time when "Guru Meditation" was a pretty funny way to report a system crash. I can't imagine anybody remembering Reference #9.2fc8ef50.1345571668.1280ff23 with the same fondness, though. Somehow, it sounds less funny.
Acer Aspire 5740DG: No such laptop
Since AMD was obviously unable to help me with drivers for their chips, I figured my next best bet was to try with Acer. If you look carefully, you'll notice that it's basically what AMD recommends on their web site.
So I went to the Acer web site and looked for the Acer Aspire 5740DG. Well, clearly, Acer Europe has never been made aware that Acer Rest-Of-The-World ever produced a machine called the 5740DG. Check for yourself, it skips directly from the 5737Z to the 5910, but no 5740, DG or otherwise. I guess some some bold Acer pirate resellers actually managed to sell that nonexistent model in France with a perfectly French keyboard and power plug.
What's the point of Microsoft's OpenGL crud?
Another option is to trust Windows to install the right driver. If we revert to the basic Windows support for OpenGL, what we get is OpenGL 1.1 with 3 (!!!) extensions. That's basically the state of the art in 3D graphics as of 1841. Thank you Microsoft for ridiculing yourself!
Now, I can understand that making the XBox a lucrative captive market pretty much required to make OpenGL look as lame as possible, despite all evidence to the contrary. But implementing OpenGL as a wrapper to a Direct3D software rasterizer written in Visual Basic running in a virtual machine for "added safety" may have been a little bit overboard, don't you think? At some point, someone might notice that the folks in Redmond are not exactly putting their back into this...
Make sure it only works in useless configurations
So we came back to the original driver setup, the one that results from a standard Windows 7 installation.
With that configuration, the observed behavior, as shown in the video, is nothing short of infuriating:
- If you switch to full screen, Tao Presentations blinks in a really annoying way (see video)
- The blinking disappears if you tell the driver to rotate the picture sideways or upside down. Now, this may be a mere (if severe) nuisance on a standard display. But for Tao Presentations, it's really double plus annoying, because the polarized mask for the interleaved 3D mode only works if the picture is upside up.
- You can also get a correct full-screen behavior by disabling desktop compositing (or switching to 16-bit colors, which also disables desktop compositing). In that case, Tao Presentations works in full screen... but when you exit full screen, you get a completely black desktop until you hit Control-Alt-Delete.
Here is a car analogy (I love car analogies). Acer, AMD and Microsoft conspired to give me a car that drives perfectly as long as I either:
- Drive in first gear (windowed mode), or
- Accept the discomfort of lacking any suspension (blinking full screen mode), or
- Drive facing towards the rear of the car (upside-down display), or
- Accept to be covered in oil from head to toes when the car stops (black desktop when disabling compositing).
Did I mention it works in Linux? Did I mention it used to work with the factory version of Windows 7?
An Open Blog Challenge to AMD Engineers
Dear AMD Driver Guru, I know that software engineering is complicated. But I would really really really like to have an explanation for this particular bug. I just can't imagine where it cam from, and I'm pretty sure that the explanation will be interesting.
Please leave your comments below.