The other day I found that this blog was linking back to one of my blogposts. Since I did not agree with the point he was trying to make by referring to my blog, I decided to comment. The discussion that ensued was rather sad.
This guy pretends to be knowledgeable about GPUs and APIs, and pretends to give a neutral, objective view of APIs… But when push comes to shove, it’s all GCN-this, GCN-that. He makes completely outrageous claims, without any kind of facts or technical arguments to back them up.
I mean, firstly, he tries to use C64 as an example of why being able to hack hardware at a low level is good… But it isn’t. Even though we know a lot more about the hardware now than we did at its release in 1982, the hardware is still very limited, and no match for even the Amiga hardware from 1985. Hacking only gets you so far.
He also tries to claim that GCN is relevant, and how the consoles were a huge win for AMD. But they weren’t. On the PC, nVidia still out-sells AMD by about 2:1. Only about 12-17% of the installed base of DX11-capable GPUs is GCN.
Also he makes claims of “orders of magnitude” gains of performance by knowing the architecture. Absolute nonsense! Yes, some intricate knowledge of the performance characteristics of a given architecture can gain you some performance… But orders of magnitude? Not in this day and age.
As I said in the comments there: It doesn’t make sense to design a GPU that suddenly has completely different performance characteristics from everything that went before. That would also mean that all legacy applications would be unoptimized for this architecture. A PC is not a console, and should not be treated as such. A PC is a device that speaks x86 and D3D/OGL, and CPUs and GPUs should be designed to handle x86 and D3D/OGL code as efficiently as possible.
Because this is how things work in practice, ‘vanilla’ code will generally run very well out-of-the-box on all GPUs. You could win something here and there by tweaking, but generally that’d be in the order of 0-20%, certainly not ‘orders of magnitude’. In most cases, PC software just has a single x86 codepath and just a single D3D/OGL path (or at least, it has a number of detail levels, but only one implementation of each, rather than per-GPU optimized variations). Per-GPU optimizations are generally left to the IHVs, who can apply application-specific optimizations (such as shader replacements) in their drivers, at a level that the application programmer has no control over anyway.
It’s just sad that so many developers spread nonsense about AMD/GCN/Mantle these days. Don’t let them fool you: GCN/Mantle are niche products. And Mantle doesn’t even gain all that much on most systems, as discussed earlier. So if a fully Mantle-optimized game is only a few percent faster than a regular D3D one (where we know AMD’s D3D drivers aren’t as good as nVidia’s D3D drivers anyway), then certainly ‘orders of magnitude’ of gains by doing GCN-specific optimizations is a bit of a stretch. Especially since virtually all of the gains with Mantle come from the CPU-side. The gains do not come from the GPU running more efficient shaders or anything.