AMD Exposes Mantle - A New Hardware Level API
AMD is up to some interesting things. Today at AMD’s tech day, we discovered a veritable cornucopia of information. Some of it was pretty interesting (audio), some was discussed ad-naseum (audio, audio, and more audio), and one thing in particular was quite shocking. Mantle was the final, big subject that AMD was willing to discuss. Many assumed that the R9 290X would be the primary focus of this talk, but in fact it very much was an aside that was not discussed at any length. AMD basically said, “Yes, the card exists, and it has some new features that we are not going to really go over at this time.” Mantle, as a technology, is at the same time a logical step as well as an unforeseen one. So what all does Mantle mean for users?
Looking back through the mists of time, when dinosaurs roamed the earth, the individual 3D chip makers all implemented low level APIs that allowed programmers to get closer to the silicon than what other APIs such as Direct3D and OpenGL would allow. This was a very efficient way of doing things in terms of graphics performance. It was an inefficient way to do things for a developer writing code for multiple APIs. Microsoft and the Kronos Group had solutions with Direct3D and OpenGL that allowed these programmers to develop for these high level APIs very simply (comparatively so). The developers could write code that would run D3D/OpenGL, and the graphics chip manufacturers would write drivers that would interface with Direct3D/OpenGL, which then go through a hardware abstraction layer to communicate with the hardware. The onus was then on the graphics people to create solid, high performance drivers that would work well with DirectX or OpenGL, so the game developer would not have to code directly for a multitude of current and older graphics cards.
Sure, guys like 3dfx would update their GLIDE API to handle legacy applications and legacy hardware as well as current products and new games. This still was too much work for developers. Creating different rendering engines that would take advantage of features on these chips all the while addressing support for 3dfx’s GLIDE, Rendition’s RRedline, or S3’s Metal was just too much. So we moved on to embrace Direct3D and OpenGL. Sounds like heaven, right? Not necessarily so. We have had issues with good driver support for these high level APIs. The high level APIs are not efficient, and the overhead that they impose impacts both performance and latency. These APIs have improved over time, especially with the jumps to DX11 and OpenGL 4.0. Still, they have enough of a hit that performance can be improved by getting rid of them altogether.
This is what Mantle does. It bypasses DirectX (and possibly the hardware abstraction layer) and developers can program very close to the metal with very little overhead from software. This lowers memory and CPU usage, it decreases latency, and because there are fewer “moving parts” AMD claims that they can do 9x the draw calls with Mantle as compared to DirectX. This is a significant boost in overall efficiency. Before everyone gets too excited, we will not see a 9x improvement in overall performance with every application. A single HD 7790 running in Mantle is not going to power 3 x 1080P monitors in Eyefinity faster than a HD 7970 or GTX 780 (in Surround) running in DirectX. Mantle shifts the bottleneck elsewhere.
What kind of improvements can we expect? Performance will increase when things are not shader bound. We probably could see an improvement in geometry handling (higher polygon scenes). Other than that though, do not expect miracles. In applications that require multiple shading passes, complex lighting, tessellation and deformation, we might see improvements in the single digit percentages, perhaps as high as the low teens. Still, it is an improvement and it will give AMD a leg up in these applications that utilize Mantle as compared to their primary competitor which still uses DirectX and OpenGL.
This development is not exactly unprecedented, though it was unexpected at this time. Both Sony and Microsoft are already essentially going this route with their next generation consoles. In fact, both of these companies have been doing this for several generations of consoles. They enable developers low level access to the hardware and control of memory addresses and accesses which makes graphics on these consoles very efficient. As software for consoles improves over time, these developers can create tricks and optimizations to squeeze every last ounce of performance from these machines. If we were to compare graphical fidelity of the latest titles to those at the consoles’ launches, it is almost night and day where we have come to. This “close to the metal” approach is very efficient and allows for a lot of flexibility for programmers.
So why are we seemingly going back in time? It seems that in computer technology the idea of “what was old is now new again” keeps coming around. So why does Mantle sound like a good idea? First of all, we do not have a dozen competing APIs from the likes of 3Dfx, Rendition, PowerVR, ATI, S3, Matrox, and others. Secondly we have a huge impetus for this movement from the next generation consoles which both implement AMD’s GCN architecture. Developers will already be familiar with the architecture and very similar programming techniques. Going to Mantle would not be trivial, but at the same time it does not require a total rewrite of the renderer to support.
Battlefield 4 will be the first title to natively support Mantle, and that support will be released to users as a free update in December. BF4 is based on the Frostbite 3 engine, which will be powering around 15 titles over the next year. Obviously most of these titles will have no need to support or implement Mantle, but we could see a couple test out that technology. The more important support could come from titles initially developed for the consoles and ported to the PC. We also have that little free radical called the Steam Box. While AMD is working with Valve to have drivers ready to go, we do not know if Valve will embrace Mantle for their titles. It seems somewhat unlikely because Valve is offering SteamOS for free and for multiple configurations. NVIDIA still has the majority of standalone gaming cards in the wild, but AMD is slowly closing that gap.
Mantle is an interesting move for AMD. While Mantle may not conquer the world overnight, as AMD starts to ship GCN based APUs we could see an uptick of interest. Not everyone owns a high end graphics card, but there will be a larger group of people with a GCN based APU in their machine. As the numbers start growing, then interest with developers will increase. When we combine the numbers for PS4, XBOne, and APU enabled PCs, then the numbers may make sense for developers to focus on implementing a Mantle based pathway for their games. Time will tell.