Early Direct3D 12 Demos

Wrapping things up, while DirectX 12 is not scheduled for public release until the Holiday 2015 time period, Microsoft tells us that they’ve already been working on the API for a number of years now. So although the API is 18-20 months off from its public release, Microsoft already has a very early version up and running on partner NVIDIA’s hardware.

In their demos Microsoft showed off a couple of different programs. The first of which was Futuremark’s 3DMark 2011, which along with being a solid synthetic benchmark for heavy workloads, also offers the ability to easily be dissected to find bottlenecks and otherwise monitor the rendering process.


3DMark 2011 CPU Time: Direct3D 11 vs. Direct3D 12

As part of their presentation Microsoft showed off some CPU utilization data comparing the Direct3D 11 and Direct3D 12 versions of 3DMark, which succinctly summarize the CPU performance gains. By moving the benchmark to Direct3D 12, Microsoft and Futuremark were able to significantly reduce the single-threaded bottlenecking, distributing more of the User Mode Driver workload across multiple threads. Meanwhile the use of the Kernel Mode Driver and the CPU time it consumed were eliminated entirely, as was some time within the Windows kernel itself. Finally, the amount of time spent within Direct3D was again reduced.

This benchmark likely leans towards a best case outcome for the use of Direct3D 12, but importantly it does show all of the benefits of a low level API at once. Some of the CPU workload has been distributed to other threads, other aspects of the CPU workload have been eliminated entirely. Yet despite all of this there’s still a clear “master” thread, showcasing the fact that not even the use of a low level graphics API can result in the workload being perfectly distributed among CPU threads. So there will still be a potential single-threaded bottleneck even with Direct3D 12, however it will be greatly diminished compared to the kinds of bottlenecking that could occur before.

Moving on, Microsoft’s other demo was a game demo, showcasing Forza Motorsport 5 running on a PC. Developer Turn 10 had ported the game from Direct3D 11.X to Direct3D 12, allowing the game to easily be run on a PC. Powered by a GeForce GTX Titan Black, Microsoft tells us the demo is capable of sustaining 60fps.

First Thoughts

Wrapping things up, it’s probably best to start with a reminder that this is a beginning rather than an end. While Microsoft has finally publically announced DirectX 12, what we’ve seen thus far is the parts that they are ready to show off to the public at large, and not what they’re telling developers in private. So although we’ve seen some technical details about the graphics API, it’s very clear that we haven’t seen everything DirectX 12 will bring. Even a far as Direct3D is concerned, it’s a reasonable bet right now that Microsoft will have some additional functionality in the works – quite possibly functionality relating to next-generation GPUs – that will be revealed as the API is closer to completion.

But even without a complete picture, Microsoft has certainly released enough high level and low level information for us to get a good look at what they have planned; and based on what we’re seeing we have every reason to be excited. A lot of this is admittedly a rehash of we’ve said several months ago when Mantle was unveiled, but then again if Direct3D 12 and Mantle are as similar as some developers are hinting, then there may not be very many differences to discuss.

The potential for improved performance in PC graphics is clear, as are the potential benefits to multi-platform developers. A strong case has been laid out by AMD, and now Microsoft, NVIDIA, and Intel that we need a low level graphics API to better map to the capabilities of today’s GPUs and CPUs. Direct3D 12 in turn will be the common API needed to bring those benefits to everyone at once, as only a common API can do.

It’s important to be exceedingly clear that at least for the first phase the greatest benefits are on the CPU side and not the GPU side – something we’ve already seen in practice with Mantle – so the benefits in GPU-bound scenarios will not be as great at first. But in the long run this means changing how the GPU itself is fed work and how that work is processed, so through features such as descriptor heaps the door to improved GPU efficiency is at least left open. But since we are facing an increasing gap between GPU performance and single-threaded CPU performance, even just the CPU bottlenecking reductions alone can be worth it as developers look to push larger and larger batches.

Finally, while I feel it’s a bit too early to say anything definitive, I do want to close with the question of what this means for AMD’s Mantle. For low level PC graphics APIs Mantle will be the only game in town for the next 18-20 months; but after that, then what? If nothing else Mantle is an incredibly important public proving ground for the benefits of low level graphics APIs, so even if Direct3D 12 were to supplant Mantle, Mantle has done its job. But I’m nowhere close to declaring Mantle’s fate yet, as we only have a handful of details on Direct3D 12 and Mantle itself is still in beta. Does Mantle continue alongside Direct3D 12, an easy target for porting since the two APIs are (apparently) so similar? Does Mantle disappear entirely? Or does AMD take Mantle and make it an open API, setting it up against Direct3D 12 in a similar manner as OpenGL sits against Direct3D 11 today? I imagine AMD already has a plan in mind, but that will be a discussion for another day…

Game Development, Consoles, and Mobile Devices
Comments Locked

105 Comments

View All Comments

  • Lerianis - Monday, March 31, 2014 - link

    Ah, but the PC with similar hardware will usually run it in a higher resolution and with more graphical candy turned on than on a console. That is the thing that a lot of people forget to mention, that the settings for the game in question are not always the same.

    I.E. the PC has AA and other settings turned on by default that make the game run 'slower'. Once you hash out what settings are not used in a console and turn those off? The numbers get a hell of a lot closer together.
  • inighthawki - Monday, March 24, 2014 - link

    "Unfortunately, off-the-shelf game engines - particularly graphics - have remained steadfastly single-threaded, and that's not something DirectX or Mantle will be able to change."

    I guess you missed the giant part of the DX12 talk where they focused heavily on ease and performance of multithreading for graphics and actually came up with a nearly linearly scaling solution.
  • tipoo - Monday, March 24, 2014 - link

    Really wondering about Mantles fate after this hits. They have a time advantage, but DirectX/Direct3D being the Windows standard that it is will be hard to compete with, particularly if the performance improvements are similar (or let alone, DX12 is better).

    Perhaps AMD should consider bringing Mantle to Linux.

    I wonder if the consoles being AMD based will be an advantage to them too, though Microsoft has the XBO also using DX12...PS4 porting may be easier to Mantle, while XBO porting is easier to DX12 perhaps?
  • ninjaquick - Monday, March 24, 2014 - link

    Mantle is a much broader low-level access API. D3D12 is limited by the scope of support, which is basically all driver level. They are putting as much as they can, while having intel/amd/nvidia/imagination/ti/arm/samsung/etc. all onboard for rapid implementation. Building new drivers for this, based on MS spec means they are less flexible than AMD with their own spec built around their hardware and driver platform.

    D3D12 will possibly be widely implemented, but that won't stop excitable rendering engineers and architects from trying out mantle anyways. I would be very surprised if any of the 'big rendering' players decide to completely forego D3D12 or Mantle. The chance to really push the boundaries as far as possible is far too tempting. Heck, low level programmability might even result in hybridization where possible, between d3d12 and mantle.
  • Dribble - Tuesday, March 25, 2014 - link

    The time advantage isn't that great - Mantle is released beta software, by the time they actually finish it DX12 will be just around the corner and that will come out fully productized and ready to go. Given that no dev is going to bother investing time in Mantle as only a few % of users can use it unlike DX where everyone in the end will be able to use it, also they have no guarantee's AMD will ever finish it off properly or continue to support it for future gens of cards - AMD have never been great at software, unlike MS.
  • jabber - Monday, March 24, 2014 - link

    I wonder also if a lot of this is coming out of all the furious work that I bet is going on to try to bridge the performance gap between the Xbox One and the PS4.
  • ninjaquick - Monday, March 24, 2014 - link

    Actually, it is because developers have been complaining about the massive step-backwards Xbone programmability took in comparison to X360.

    Like, not only is there a raw performance gap between the PS4 and X1, but there is a software-api performance black-hole on the X1 called WindowsRT/x64 hybrid, with straight PC DX11.1.
  • ninjaquick - Monday, March 24, 2014 - link

    D3D11.1**
  • Scali - Tuesday, March 25, 2014 - link

    The XBox One has its own D3D11.x API, which is D3D11-ish with special low-level features.
    The games I've seen on XBox One and PS4 so far, only seem to suffer from fillrate problems on the XBox, which means slightly lower resolutions and upscaling. In terms of detail, AI, physics and other CPU-related things, games appear to be identical on both platforms.
  • et20 - Monday, March 24, 2014 - link

    Don't forget Mantle is also cross-platform, it just crosses different platforms compared to Direct3D.

Log in

Don't have an account? Sign up now