Earlier this month, Microsoft acknowledged that it would debut DirectX 12 at GDC this year, with promises that it would offer many of the same features as AMD's Mantle. Fast on the heels of that announcement came news that the API would also be deployed on the Xbox One, presumably as part of a future update. Now, a report from SemiAccurate claims that "Microsoft has adopted AMD’s Mantle but are now calling it DX12. The way they did it manages to pull stupidity from the jaws of defeat by breaking compatibility in the name of lock-in."
Meanwhile, other reports across the 'Net are claiming that because the Xbox One has a real-time operating system, it won't benefit from the new API and that the entire effort is smoke and mirrors on Microsoft's part. While I haven't been at GDC this week and it's possible that Microsoft's DX12 slides are reprints of AMD
decks with the word "Mantle
" crossed out and "DirectX 12" written in.
Jokes aside, I can't say for certain -- but I can say that I've been digging at the question of where DirectX 12 came from and whether or not it's a straight port of Mantle -- and my information has tended to point in the opposite direction.
Two sides to every story
We can draw a few basic conclusions, I think, even with limited facts. Clearly AMD built Mantle for a reason. Building and launching a new API
is an enormous amount of work. Building developer support and an entire software ecosystem has never been AMD's historical strong suit -- given the lead times intrinsic to this kind of work I think we can safely assume that AMD put a renewed focus on Mantle (and software development in general) as part of its reorganization procedures after Rory Read came onboard in August, 2011.
AMD knew that single-company APIs face long odds and low chances of success and it's always told me that the long-term goal was to see a Mantle-like API adopted by the entire industry
not just to push Mantle in the short term. It's been quick to claim that Mantle will be supported even in the face of DirectX 12
, and has hinted that we may see Linux and Mac OS support in the future. We also know that Microsoft is very likely to chain DirectX 12 to the next version of Windows while Mantle and GCN face no such restrictions.
Furthermore, if DirectX 12 is going to run on the Xbox One, it strongly implies that GCN graphics cards shipping today will be capable of using it as well. (This could also be true for Nvidia, though that's not clear). So is it fair to think that AMD built Mantle because it saw a need that Microsoft wasn't addressing, that it intends to support Mantle in ways that are meaningfully different from the support DirectX may offer, and that AMD gets "first mover" credit on this front? Absolutely.
But when it comes to the question of whether Microsoft is ripping off Mantle to build DirectX 12, I'm a bit more dubious.
Sources I've spoken to have categorized Microsoft as a bit annoyed with Mantle, seeing it as a distraction from the company's own efforts to build a low-level API. I've been told that DX12 has been in the works for quite some time, and that the idea that Microsoft was 'pushed' into making an announcement by Mantle's debut on the desktop simply isn't true.
AMD is plucky. AMD is clearly putting a much greater focus on software and software development. But when it comes to two critical measures of raw muscle -- market share and dollars -- AMD doesn't have the strength, in either category, to shove the entire market towards an API. That's not a criticism of AMD -- with the GPU market split between three players, neither Intel nor Nvidia has been able to shove the industry in a single preferred direction, either. Intel thought the entire GPU market should evolve towards ray tracing. Nvidia thought everyone ought to adopt PhysX as a key gaming feature. In both cases, the market largely disagreed.
I'm inclined to agree with S|A
, however, when it writes that the focus here is on the Xbox, but I'm not sure how much it helps. The problem is simple: Assuming Mantle tells us anything about DX12's capabilities, it tells us that the configurations that gain the most are lopsided configurations that pair weak CPUs with powerful GPUs. If you have an A10-7850K
and an R9 290X
or an FX-8350 + R9 290X, you see huge gains from Mantle. If you have a high-end Intel CPU, the gains are smaller.
If the Xbox One was being choked by low CPU performance, we'd expect to see it outperforming the PS4, which has the same number of CPU cores running at a lower clock speed. Since it isn't, this suggests that the issue is GPU performance -- and it may be extremely difficult to fix that with a Mantle-like API. This, in turn, suggests that as far as the Xbox One is concerned, DX12 will implement some additional features or capabilities that <em>can</em> address these problems.
Sometimes a good idea is a good idea
When I've talked to AMD contacts about the DX12 / Mantle dichotomy, AMD has been quick to state that it intends to continue supporting and developing Mantle, but it hasn't seemed particularly worried over the question of who copied who. Obviously looking like the front runner is a PR win for Sunnyvale, but as the company told me back in November -- the long-term goal is to see Mantle-like capabilities adopted by every API. If multi-threading is easier and games can scale to use CPU cores more effectively, in the long run, everybody wins.
I think that's the most important takeaway from DX12, regardless of its other considerations. The point of Mantle is to create better games.
If Microsoft implements similar ideas that get us to the same place, that's a win-win situation for everyone involved.