One of the major planks of AMD's APU13 developer conference has been an in-depth discussion of its next-generation API, Mantle. Mantle, which first debuted at the company's Hawaii unveil in late September, has been billed as a high-performance alternative to DirectX 11. Prior to today, AMD has mostly discussed Mantle in broad terms, without giving much detail on the nuts and bolts of what it offers.
Thanks to new information released at APU13, we can give you a better idea what Mantle offers, what games will support it, and how it could shape gaming in years to come.
First the big one. According to multiple sources, including Johan Anderrson from DICE, Mantle is a thin layer abstraction that sits over hardware, not an AMD-specific product. There's no reason NVIDIA couldn't use Mantle in future products and, not surprisingly, multiple speakers at the event expressed interest in seeing that happen at some point in the future.
Solving DirectX's Small Batch Problem
One of the issues plaguing DirectX development for years has been the fact that the API itself consumes a great deal of CPU overhead in certain scenarios. This is exacerbated if the developer launches a great many small batches of triangles for rendering. Every batch of draw calls consumes additional CPU power, so the goal is to group draw calls as efficiently as possible.
AMD's Mantle aims to target 100K draw calls per second.
According to AMD, you can reasonably hit 4-5K worth of draw calls in a given scenario. Really great programmers may hit as high as 10K, briefly, but even that's tiny when you consider that the PS3 and Xbox 360 can regularly field 20-30K in draw calls. With Mantle, AMD wants to close that gap.
According to AMD, Mantle gives developers the ability to fine-tune their own applications for maximum throughput -- partly by giving developers more flexibility in where workloads are executed.
Mantle's improved application resource management
What the image above shows is a series of application threads (left side) being queued for execution across the CPU and GPU. Workloads are being shifted to specific targets depending on where they'd be optimally executed. Mantle is designed to explicitly allow asynchronous compute scheduling so that the GPU can simultaneously run graphics and non-graphics workloads, or share data across the CPU-GPU link thanks to HSA.
One of the other ideas behind Mantle is that of expanding parallelism. Under DirectX and OpenGL, CPU0 might be handling game compute, CPU1 sets up rendering, and CPU2 handles the driver setup and data passing. Using Mantle, CPU0 handles the CPU-centric computation, but CPU1-CPUx (maximum multi-threading) are all dedicated to the render path with no need to tie up cores with driver interfaces.
According to Marc, CPUs are actually powerful enough to even occasionally serve as offload engines for GPU rendering on both consoles and PCs.
The Multi-GPU Question
There are two basic ways of doing multi-GPU rendering -- split-frame rendering and alternate frame rendering. Split-frame rendering means two GPUs work on exactly the same frame, but break it into top and bottom, while AFR hands Frame 1 to GPU 0, Frame 2 to GPU 1, and so on.
Mantle changes this approach by treating multiple GPUs exactly the same way it treats single GPUs.
To Mantle, more GPUs are more queues to dispatch workloads to. This moves the load balancing question from the frame to the queue and should help eliminate problems of microstutter that can plague GPU configurations.
So what about performance?
This is where we have to frustrate you a bit. AMD's Mantle discussions are long on exposition, very, very short on demos. "Short," as in, "There have been no head-to-head demos. The performance figures we've seen batted around have ranged from 20% - 50%.
My own sense is that Mantle may be a major bullet point for selling high-end video cards, but it's actually most important for APUs and other low-end discrete solutions. The reason here is simple: The difference between a steady 100 FPS vs. 150 FPS will be all but invisible. The difference between a steady 20 FPS and 30 FPS? That's playable vs. non-playable.
While it's disappointing not to have numbers to show you at this juncture, we can report that multiple developers, including DICE and Nixxes, came to APU13 to talk up the benefits of Mantle and why they're excited to see it on future systems. In addition, DICE's Johan Andersson keynoted the final day, alongside presentation from developers like Nixxes (Deus Ex: Human Revolution, Thief, Tomb Raider, and Hitman: Absolution).
Battlefield 4 is still expected to be the first title to add Mantle support, with the final patch dropping in 4-6 weeks. It's not clear at this juncture if later titles will have Mantle from the beginning or if contractual obligations will require it to be added at a later date. Either way, we'll be able to evaluate the product in final form in the not-too-distant future.