The other day, I read this interesting article on Anandtech about the GPU stuttering issues that were recently discovered with AMD cards. I wanted to do a quick write-up about that, since it relates to what I am doing.
As I’ve written a while ago, I develop software with 3D acceleration for multiple screens at a time, with multiple GPUs. This poses very similar problems to the ones explained here with FRAPS: I can only synchronize the screens up to the Present()-call, and I am dependent on the underlying driver queues from there.
For me it is very good news that this has now become an important issue in driver development, because it will mean that different vendors will probably diverge less in latency in the future. So synchronization will be easier and more reliable for me in the future.
Note also that I wrote at the time that nVidia had some issues in OpenGL when rendering multiple windows, which AMD did not. This could actually have been a result of nVidia’s latency handling scheme. It appeared like there was some kind of scheduling going on, but it only worked on a process-wide basis, rather than scheduling per-thread, and balancing out the performance equally between all windows. And if that theory is correct, then it would also explain why AMD did not suffer from it: they simply did not try to be clever at all, so they could not get it wrong either.
And well, it has to be said: it can’t really be coincidence that once again it happens to be AMD where these issues were detected. nVidia said that they’d been working on latency issues since Fermi, and Intel probably has been working on them as well, since their drivers did not seem to show big issues either. But for some reason it never even occured to the AMD driver team that this kind of latency issue exists, which is a bit sad.