With roughly no AAA games being released in a completely working order, it’s becoming disillusioning – and easy to believe that very nearly every game ships broken in some way, especially on PC, where the nearly infinite number of different system configurations adds an extra layer of difficulty in getting things working. If you think that most games ship broken, you’d probably be right. According to former Nvidia driver developer, that’s indeed the case. But it’s going to get better.
User Promit, speaking on a game development forum, said that pretty much all big games ship in a broken state, and it’s often up to the driver teams to get them working.
“Nearly every game ships broken.” He says. “We’re talking major AAA titles from vendors who are everyday names in the industry. In some cases, we’re talking about blatant violations of API rules – one D3D9 game never even called BeginFrame/EndFrame. Some are mistakes or oversights – one shipped bad shaders that heavily impacted performance on NV drivers. These things were day-to-day occurrences that went into a bug tracker. Then somebody would go in, find out what the game screwed up, and patch the driver to deal with it.”
“There are lots of optional patches already in the driver that are simply toggled on or off as per-game settings, and then hacks that are more specific to games – up to and including total replacement of the shipping shaders with custom versions by the driver team. Ever wondered why nearly every major game release is accompanied by a matching driver release from AMD and/or NVIDIA? There you go.”
It gets even more complicated where multiple GPU’s are concerned.
“You cannot begin to conceive of the number of failure cases that are involved until you see them in person. I suspect that more than half of the total software effort within the IHVs is dedicated strictly to making multi-GPU setups work with existing games. (And I don’t even know what the hardware side looks like.) If you’ve ever tried to independently build an app that uses multi GPU – especially if, god help you, you tried to do it in OpenGL – you may have discovered this insane rabbit hole. There is ONE fast path, and it’s the narrowest path of all.”
That said, the new APIs – Like DirectX 12 and Vulkan – should in many ways help alleviate the problems, if not make them go away altogether. It’s these four problems, he says, that are the root causes.
- Why are games broken? Because the APIs are complex, and validation varies from decent (D3D 11) to poor (D3D 9) to catastrophic (OpenGL). There are lots of ways to hit slow paths without knowing anything has gone awry, and often the driver writers already know what mistakes you’re going to make and are dynamically patching in workarounds for the common cases.
- Maintaining the drivers with the current wide surface area is tricky. Although AMD and NV have the resources to do it, the smaller IHVs (Intel, PowerVR, Qualcomm, etc) simply cannot keep up with the necessary investment. More importantly, explaining to devs the correct way to write their render pipelines has become borderline impossible. There’s too many failure cases. it’s been understood for quite a few years now that you cannot max out the performance of any given GPU without having someone from NVIDIA or AMD physically grab your game source code, load it on a dev driver, and do a hands-on analysis. These are the vanishingly few people who have actually seen the source to a game, the driver it’s running on, and the Windows kernel it’s running on, and the full specs for the hardware. Nobody else has that kind of access or engineering ability.
- Threading is just a catastrophe and is being rethought from the ground up. This requires a lot of the abstractions to be stripped away or retooled, because the old ones required too much driver intervention to be properly threadable in the first place.
- Multi-GPU is becoming explicit. For the last ten years, it has been AMD and NV’s goal to make multi-GPU setups completely transparent to everybody, and it’s become clear that for some subset of developers, this is just making our jobs harder. The driver has to apply imperfect heuristics to guess what the game is doing, and the game in turn has to do peculiar things in order to trigger the right heuristics. Again, for the big games somebody sits down and matches the two manually.
So yes, all your games, especially on PC, launch broken. But that should – should – soon be a thing of the past.
Last Updated: March 11, 2015