One of the most anticipated announcements of GDC this year has been Microsoft's unveiling of DirectX 12. The event today was light on some details, but didn't disappoint -- DirectX 12 looks like a huge step forward for gaming. The problem DX12 wants to solve is the same issue that drove Mantle. DirectX 11 isn't very good at allocating resources efficiently, the API's performance is often choked by single-threaded CPU performance. GPUs are already far faster than CPUs (as shown below), so limiting the graphics card's performance by choking it with a single-threaded CPU is a major problem.
What's New In DX12
Microsoft and Nvidia have both posted blog posts talking about the new features of the API. Nvidia states:
"DX12’s focus is on enabling a dramatic increase in visual richness through a significant decrease in API-related CPU overhead. Historically, drivers and OS software have managed memory, state, and synchronization on behalf of developers. However, inefficiencies result from the imperfect understanding of an application’s needs. DX12 gives the application the ability to directly manage resources and state, and perform necessary synchronization. As a result, developers of advanced applications can efficiently control the GPU, taking advantage of their intimate knowledge of the game’s behavior."
Here's what that looks like in context.
The first set of lines at the top show a game thread running on DX11, the second graph is running DX12. In the first graph, there's one thread doing almost all the work with little helper threads doing very little. The game engine can't send much work to the other threads, so performance is mostly dependent on single-threaded efficiency. The second graph shows how a great deal of driver overhead has been removed, allowing for much faster performance.
Here's a set of screenshots from 3DMark
that further make the point. CPU usage in the DX11 shot is nearly twice as high as CPU usage in the second picture.
These are big improvements though Nvidia's blog post notes that new features will also be unveiled. Microsoft's blog posts are here.
Forza 5 - As Rendered On A GeForce Titan Black
Which GPUs and Operating Systems Are Supported?
This one is a doozy. In the past, GPU
support has always been fragmented, you needed a new DX11 capable card for DX11, a new DX10 card for DX10, etc. This is the first time we can ever remember Microsoft announcing a new DirectX version that most previous gen cards can just run. DirectX 12
will be supported on all Nvidia Fermi, Kepler, and Maxwell GPUs. If you bought a modern Nvidia card after 2010, chances are you'll be covered.
We're still waiting for details of AMD's GPU support but we expect GCN will be fully supported. Past that point, AMD may or may not include support for older gamers running HD 5000 and HD 6000 cards. OS support isn't clear yet. Microsoft acknowledged that users are very interested in a Windows 7
version but did not commit to bringing the API to the most popular OS. One slide shown at the reveal said that DX12 would run on 50 percent of gaming PCs, implying users would have to upgrade to Windows 8 or a future version of Windows to gain access.
This is a huge step forward for gaming. There's questions about whether Mantle and DirectX are kissing cousins or not but the end result for gamers will be better game play and a more flexible experience.