The forgotten API: just what is going on with DX12?

Why don’t developers love DX12?

When DX12 launched in 2015 many gamers and developers got rightly excited. Building on AMD’s innovative work with their experimental Mantle rendering API, Microsoft promised to offer unprecedented levels of GPU efficiency through DX12 under Windows 10.

At first glance, this looked like the performance boost all budget gamers would adore, encouraging the widespread purchasing of DX12-capable video cards.

18 months on from the launch of Windows 10 the reality is that there are only 16 titles with DX12 support and a couple more in the pipeline.

Which begs the obvious questions: why don’t developers love DX12, and is this becoming a significant issue?

But first, let’s review the DirectX journey.

  • The Razer Blade is a light and powerful place to start with DirectX 12

History X

For those of us old enough to remember the very early, and exciting days of 3D Hardware acceleration, DirectX came along late to the party.

Early versions didn’t support 3D hardware at all, and initially, it was more a means to connect control peripherals than a blueprint for constructing 3D environments.

At this time game developers had a stark choice between using a proprietary API, like Glide exclusively on the 3dfx Voodoo Graphics cards, or OpenGL if they wanted to support the wider range of accelerated video hardware.

Eventually, Microsoft realised the potential and through successive enhancements to the DirectX API began to provide an alternative to OpenGL that would work on any 3D accelerated video card with a compliant driver.

DirectX became the banner name for a whole slew of Direct APIs, with individual functionality proportioned out initially into Direct3D, DirectDraw, DirectMusic, DirectPlay and DirectSound.

As Direct X evolved the API was also adapted for Microsoft’s Xbox console so that some level of cross-platform development could be achieved.

Windows 98 was the first OS to ship with DirectX bolted in and it’s been a critical part of the software infrastructure of Windows ever since.

When Windows Vista came along Microsoft chose to use DirectX as a carrot to encourage users to upgrade, choosing to make DX10 unavailable to Windows XP. And, they repeated that same guillotine exercise with DX12. Restricting it to Windows 10 and the Xbox One use, and not Windows 8.1 or Windows 7 installs.

Developers were then forced to make a value judgement about the number of DX12 customers they might wish to please verses the extra development costs and time involved.

By supporting DirectX 11 instead all PC developers knew that they’re covering the vast majority of potential customers on Windows, even if that choice appears to snub Windows 10 users.

By the numbers

The generally agreed number of Windows machines in use is about 1.25 billion. And, based on figures released by StatCounter in December 2016,  40.23% of those run Windows 7, 27.15% Windows 10 and 8.43% Windows 8.1.

That’s roughly equates to 340 million potentially DX12 capable OS installs compared with 637 million of DX11 users. What this doesn’t tell us is how many of the computers in question are used for gaming or have the necessary hardware to exploit the DX12 API, even if they’ve installed Windows 10.

Some of the best data for gaming machine use comes from Steam, as they provide a complete month-by-month breakdown of its users in terms of their hardware and OS choices.As of December 2016, more than 51% of Steam gamers use Windows 10 64 bit, where the other 49% are made up of 36% using Windows 7 (64 and 32 bit), various Windows 8.x incarnations and even those still on Windows Vista.

Based on these figures it would seem a no-brainer that supporting DX12 would be worthwhile for developers, surely?

DirectX 12 has benefited from a very rapid take off. Faster than DX10 and faster than DX9.

Richard Huddy, AMD Gaming Scientist

That position is further enhanced by the statistics that show that 72.24% of gamers on Steam have DX12 supporting GPU, even if they don’t all use Windows 10.However, the situation is further complicated when you realised that DX12 can run on most DX11 capable GPUs, with a limited subset of functionality.

Under DX12 there are four levels of service available; 12_1, 12_0, 11_1 and 11_0. To get even the 12_0 experience requires the latest hardware, and very few GPUs support 12_1 modes at this point.

Therefore, while a good portion of gamers might have a GPU with some DX12 features, relatively few of them will have one that delivers all the enhancements, like Shader Model 6.0 functionality.

Is this a big problem?

To better understand the context of DX12 use, I talked to Richard Huddy, Chief Gaming Scientist at AMD. He kindly provided his view on why is DX12 proving such a hard sell to developers was enlightening.

“DirectX 12 has in fact benefited from a very rapid take off. Faster than DX10, faster than DX9, indeed it has the fastest take off in terms of titles per year than any previous version of DirectX with the possible exception of DirectX 11. 

"But interestingly that doesn’t mean that it is needed by everyone. The extra level of control brings with it a certain amount of extra complexity – and that means that some developers might be reluctant to move to DirectX 12 – indeed, a game which is not really limited by GPU horsepower, and which isn’t bottlenecked by just one CPU thread isn’t usually going to gain much from moving to DirectX 12.

"In those cases DirectX 11 or DirectX 9 likely represents a perfectly acceptable way to design titles. But titles which are highly graphically ambitious almost invariably benefit from DirectX 12.“

In short, game developers have decided that DX12 isn’t worth the extra time and effort on all but the most demanding titles at this point. This despite the general consensus that DX122 is better on many titles over DX11, especially for those with true DX12 empowered video cards.

Titles which are highly graphically ambitious almost invariably benefit from DirectX 12.

Richard Huddy, AMD Gaming Scientist

Microsoft is most certainly playing the long game with DX12, knowing that eventually, the growth of Windows 10 should resolve the issue.

Getting developers to use the exotic features that new APIs and GPU makers put into their products has always been an uphill struggle, and it remains so.

The recent announcement of ‘Game Mode’ for the Windows 10 Creators Update release does strongly suggest that Microsoft would like to enhance the OS specifically for gamers.

While DX12 will undoubtedly become the gaming API of choice in the future, but at this time few developers seem in any hurry to push DX11 into an early retirement.