Reality check: What developers really think of DirectX 12

The DirectX logo in green on a white rectangle inside a matching spring-green background.

To hear Microsoft tell it, DirectX 12 is going to be a breakthrough technology when it comes out as a part of Windows 10. Microsoft has promised, and some early benchmarking has shown, that DirectX 12 can deliver performance gains in the neighborhood of 50% on DX12-capable hardware.

But it’s one thing for the people in the business of marketing the new Windows to paint an idyllic picture of the DirectX 12 landscape. The question is whether those promises will hold up in reality. To answer that, we talked to several game developers, graphics engineers, and computer scientists about what they really think of DirectX 12, and what they think will happen when it’s released into the broader PC gaming ecosystem.

The prospects for DirectX 12 turn out to be fairly complicated. While everyone seems universally agreed that it will provide some gains, it’s unlikely that those improvements will be instantaneous or dramatic. At least, not for those of us playing along at home.

There are a lot of factors that push against and huge, revelatory changes in PC graphics technology that will provide immediate, tangible results to the PC gamer.

Prof. Morgan McGuire of Williams College, an industry consultant and coauthor of “Computer Graphics: Principles & Practice", explained that, “We'll quickly see a few small improvements to a small number of games, but DX12 won't instantly make everything better — it is a developer technology, not a consumer one. Over the next two years we'll see the real impact as new PC-exclusive games designed for DX12 ship.”

That’s another important point about DirectX 12: the benefits it confers, it confers on developers. And the nature of game development, as Gaslamp Games’ programmer Nicholas Vining pointed out, is "as soon as you get a game running at 60 FPS, your designers and artists will immediately knock it back down to 30 FPS."

However, most developers agree there are real gains to be made with DirectX 12. That’s because, in many ways, the new DirectX breaks with Microsoft precedent and interacts with the computer’s hardware in new and potentially powerful ways.

An overhead view of two intersection in Cities: Skylines, with the road glowing red at the main four-way stop because of heavy congestion, while vehicles pause in the crossing.

Traffic Problems

“GPUs have been artificially slowed down for years by the CPU and operating system,” said McGuire. “The two processors run completely independently. Whenever the CPU and the GPU communicate, they have to synchronize. ...That process takes a little while and requires one of them to slow down temporarily. So, every time that the CPU tells the GPU to draw something, you slow down the GPU while it gets its instructions.”

You could almost think of the way graphics worked under previous generations of DirectX as being a four-way intersection controlled by a single traffic cop. The traffic is carrying all kinds of data. Data from system memory needs to get to the CPU’s onboard cache. The graphics card needs instructions from the CPU. The graphics card is also processing a lot of data itself that it will render and send along to your eyeballs. And, of course, the CPU is also managing an entire game that is changing, on-the-fly, what needs to be displayed, which means what it needs to pull from data and send to the graphics card is changing as well.

To top it all off, all the traffic is flowing at different speeds and, in the Windows ecosystem, you don’t know exactly that path it’s taking to get there because there are tons of different hardware configurations out there.

DirectX was the traffic cop, and all a graphics engineer had to do was fill those lanes with data traffic, set them loose, and the cop would see them all safely through the intersection.

While it’s easy to make this process work, bottlenecks occur constantly as traffic is forced to wait for the intersection to clear. All these inefficiencies add up and cost performance. Most of it came at the expense of the GPU, which was throttled by the delays incurred by the other hardware. For a long time, that was an acceptable trade-off, because it was both easy to implement and because the speeds of the various components didn’t vary so wildly. That’s no longer the case: the GPU is constantly waiting on the CPU, which is in turn waiting on memory, and the amount of performance sacrificed has increased.

This, by the way, is why consoles are able to keep up with PCs despite the often massive gap in hardware capabilities. The closed hardware environment allowed programmers to get write code that speaks directly to the hardware, without DirectX’s managerial overhead.

“Consoles can have a thinner APIs [application-program interfaces] because they are not as ‘multipurpose’ as PCs,” explained one graphics programmer. “...On console you know what that hardware, is so some API calls can be very specific. ...You know one hundred percent, down to each single chip, what to expect, and that is a huge advantage when designing an api.”

With DirectX 12, however, some of those efficiencies are coming to Windows. But at the cost of greater complexity on the development side.

A GeForce Maxwell die on a card of black silicon.

Speaking GPU

“DX12 and the next OpenGL API allow the CPU to communicate with the GPU in something much closer to its native language,” said McGuire. “They are actually SIMPLER than DX11, removing big concepts to let the game developer more directly access the underlying GPU hardware. Picture a stripped-down race car in DX12 vs. the DX11 luxury sports car. “

That allows for much greater efficiency, but it costs programmers the traffic cop that many of them have come to rely on. They no longer have an intersection promoting constant gridlock, but now they have to guide all their data through a rather confusing, high-speed roundabout.

“Instead of going through hoops and loops to do something, you have direct access to it, which is more dangerous,” explained the graphics programmer. “Because if you go through a layer [like old versions of DirectX] that checks data for you, you can make an error and something tells you. ...If you have direct access to the data (generally speaking), now you are responsible for it, and if you make a mistake you have data problems. [When you] deal with code that is lower level, it’s more delicate and allows you to cause a disaster.”

“There's no such thing as a free lunch,” said another engineer. “DX11 didn't have a lot of overhead because its authors were dumb, it had a lot of overhead because it handled a LOT of details that are now the game programmer's responsibility in DX12. In DX12, you have to manage your own memory, do your own CPU-GPU synchronization, and in general there are many more ways to shoot yourself in the foot.

That’s a shift that will take some time. This is one area where major, multiplatform developers probably enjoy a major advantage: they’ve been writing code that works like this for years, because consoles worked so differently from earlier versions of DirectX. That’s one reason why Microsoft can make this shift now: between years of console development in the game industry, and the arrival of DirectX alternatives like AMD’s Mantle (which also employs low-level, console-like APIs), this is no longer as radical a shift for developer as it would have been in the past.

However, the major roadblock for DirectX 12 is likely to be the PC gaming landscape itself.

Defragmentation needed

Let’s be clear: DirectX could do everything it says on the box, deliver massive performance increases across the board... and it would still have its work cut out for it. That’s because the PC market is, as always, deeply fragmented across many different types of hardware and operating systems.

“You will only shift resources proportional to the market size for DX12 support,” said one developer. “So let's say half your potential customers are on DX11 still — since you have to run well on DX11 anyway, you're probably not going to take advantage of everything DX12 has to offer.”

He is quick to point out that those limitations won’t mean DX12 has no benefit, But rather, those benefits won’t quite be commensurate with what is possible under DirectX. The things that are easy to scale-up for DirectX 12 (think draw distances) will be scaled-up. But a lot of other things will still be limited by what’s possible in DX 11.

But with Windows 10, Microsoft appear to be doing something very smart: they’re offering free upgrades to Windows 10 for the first year that the operating system is out. That could go a long way to bringing the critical-mass of users onboard that DirectX 12 will need. But even if Windows 10 proves to a be big hit, it won’t necessarily solve the problem, warns Gaslamp’s Vining.

“Most recently, fragmentation has been in two places: DirectX version (9 versus 10 versus 11) and ‘what does your video card actually support anyhow?’ ...A lot of the fragmentation is currently hidden from the user, [but] not from the developer, who has to go through great pains to ensure a good experience, out of the box, on a range of hardware that is between five and seven years old, with drivers that are usually broken.”

If, however, the gains are there to be had, several sources indicated that DirectX might motivate developers to adopt licensed engines. Because while the added programming workload for DirectX 12 might swamp smaller developers, who are often concerned with just getting a game to work in addition to optimizing an engine, engine licensors can put in the labor to optimize for DX 12 alongside many of the other competing standards.

So in the end, while DirectX 12 will probably bring some gains when it’s released as a part of Windows 10, the PC landscape itself is too fragmented, and there’s too much inertia with regard to current practices, to cause a swift change overnight. The most important thing that DirectX 12 signifies, then, might be the ongoing shift to leaner, lower-level APIs that more closely resemble the console’s graphics environment. With Mantle and DirectX pushing graphics programming in the same direction, the graphics processors is on track to become more efficient via these more challenging, but more efficient APIs.

“Ironically,” said one engineer, “I think this may somewhat increase the gap between what PC games are capable of vs console.”

Paladins
Sign in to Commentlogin to comment
Jezcentral avatarMountain_Man avatarBelimawr avatarDoctor Clock Genious avatarIts Rapid Dave avatarBICPhatDIXS avatar+4
Jezcentral Avatar
515
2 Years ago

As the developing side of games becomes more complex, the engines being used will have to pick up a lot of the slack. This may have been why GameMaker got sold off to those with more money for investment.

.

*Viva the Unreal Engine!*

1
Doctor Clock Genious Avatar
1
2 Years ago

programmer Nicholas Vining pointed out, is "as soon as you get a game running at 60 FPS, your designers and artists will immediately knock it back down to 30 FPS."

Well this is something Developers need to stop doing! Stop linking the Logic of the game to the Frame rate and you'll be fine! And if you are gonna do it, stop limiting it to 30FPS! is just a horrible practice!! When will developers learn!

1
DrNemesis Avatar
1
1 Year ago

Wasn't how I interpreted that statement. The way it reads to me is that the moment they get the game running smoothly at 60fps artists and designers will see the opportunity to push harder to make the game look better and you end up with performance dropping once more.

1
Its Rapid Dave Avatar
1
1 Year ago

With the rise of DirectX 12, game designers will really have to pull their finger out their ass. From what I've read, Bethesda especially, they'll have to be more cautious of errors and bugs that could potentially be more game breaking than ever, i see it as games will take longer to develop but the outcome will be more powerful than you can possibly imagine.

1
BICPhatDIXS Avatar
1
1 Year ago

listen... If i'm going to let my obsessive ficsations of high resolution, sturdy frame rate gaming go to rest with these lame "ohhh its not 30FPS" I beg you good night sir. You have to be stupid to think you need more than 30 FPS, the human eye only needs 25 come back to reality... That's why game developers use the same game engines and you cry babies can't even notice!!! Look at MAD MAX, part Tomb Raider action effects, part far cry wtf??!?!? You should be complaining about un-original game engines, that high resolution shit is for us old fellas that saw CS 1.6 as the prime key stone of gaming. F off with you kids that have college educations and can't even realize the human limits, why not just say: "I want to be fooled this is real, and I want to be immersed soo much I forget where I am. " You lil Bittcjjhess

1
Sikobae Avatar
1
1 Year ago

You are truly an idiot.

https://boallen.com/fps-compare.html

https://www.youtube.com/watch?v=IR32GGrZT24

https://www.youtube.com/watch?v=SzpDEsqFYas

1
Honest Bobcat™ Avatar
1
1 Year ago

He's probably just mad because his PC hardware doesn't hold up and now he wants to defend Ubisofts 30 cinematic fps statement lmao.

1
Mountain_Man Avatar
729
2 Years ago

The sooner developers abandon proprietary, platform specific middleware like DirectX, the better.

-3
Belimawr Avatar
1234
2 Years ago

the reason they won't is because as it stands it is the best solution, if the new OpenGL manages to beat out DX then you may get your wish, but without a good alternative they will always stick with DX.

.

this is the biggest failing of Linux, sure it is open and free, but it also means you lose the standardised nature of the software and the firms pushing to develop software, meaning you will nearly always end up with a lesser experience until a firm finds someway to make money while pushing hard to advance but making sure the vast majority of users have the same software.

0
Mountain_Man Avatar
729
2 Years ago

O.K., let's just go ahead and assume that you really don't know what you're talking about. OpenGL already has DirectX beat in terms of performance and features, and OpenGL is a standardised library that has the added advantage of not being platform dependent. For example, both Unreal and Unity, two popular cross-platformgraphics engines, are designed for OpenGL.

1
benualdinho Avatar
1
1 Year ago

Maybe it has changed very recently but OpenGL drivers used to be really worse than DirectX on Windows (inconsistent behavious between different machines or driver versions). Also, I think that crossplatforms engine like Unreal are not specifically designed for OpenGL but they are designed for maximum performance on consoles, with an interface than has to be the common denominator between the various graphics API.

1