33
\$\begingroup\$

PC GPU driver updates often cite improvements made to performance of specific, recently released games. Why is this game-specific updating needed? How do the game-specific changes interact with the game code?

\$\endgroup\$

5 Answers 5

33
\$\begingroup\$

As someone with a few years of driver development, I see this as two separate issues.

A graphics driver is a very complicated beast. To implement everything in a optimal way would be a simply impossible task; it's a big enough hurdle just to make a driver that actually follows the specs - and the specs keep getting increasingly more complex. So, you develop your driver based on the spec, and a handful of test applications (as, in many cases, there's no real software yet).

Along comes a real game (or benchmark, or some other use case for the driver, like video decoding) that exposes a bottleneck in the driver. In you go, figuring out how to smooth things out and make that use case faster. You can easily report that game XYZ is 27.3% faster, but in reality every application that has said use case (say, dynamic texture update) gets faster.

Then there's the ugly side, real per-application optimizations, wherein the driver detects what application is being run (or which shader is being compiled) and does something non-generic. There's been plenty of publicized cases of this, where, for example, renaming 3dmark executable suddenly changes the results.

I feel these kinds of optimizations are a waste of everybody's time - you lie to your customers in the case of benchmarks, and you may change the way a shader behaves from what the developer actually wants. I recall a case where a shader was changed from a texture lookup to a in-shader calculation (which only worked for said manufacturer's hardware) which was close, but not exactly the same result, and the developer balked that this wasn't a legal optimization.

\$\endgroup\$
1
  • 2
    \$\begingroup\$ +1 and this should be the accepted answer; it does a great job of describing the exact situation and from an inside perspective. I think I know that case you mentioned - specular calculation, perhaps? ;) \$\endgroup\$ Dec 5, 2012 at 10:41
14
\$\begingroup\$

In an ideal world they wouldn't.

This is not an ideal world however, so game-specific performance improvements may come from one or more of the following (not intended to be an exhaustive list):

  • The game is doing a combination of operations A, B and C with states X, Y and Z set. The driver can make assumptions based on this and push things to a more optimal code path.

  • The game never does operations I, J or K. Again, the driver may be able to choose a more optimal code path based on being able to assume that these operations are never done.

  • The game does some things in a slightly (or not so slightly) suboptimal manner. The driver knows this, intercepts the calls, and converts them to something (hopefully!) equivalent that will work better with it.

  • Game-specific tradeoffs can be made; e.g. it's OK if this combination of render states goes slow because it's more important that that combination goes faster so let's optimize accordingly.

It's important to note here that none of these should actually be "required". So long as both the driver and the game's API usage are conformant, things should work. But sometimes special-case tradeoffs to be able to extract max performance may be seen as appropriate. I'll refrain from commenting on whether or not that's a good thing.

\$\endgroup\$
3
  • 1
    \$\begingroup\$ I'm told GPU driver writers will also sometimes peek at the shaders for popular games and write their own versions optimized for their hardware, which the driver will silently substitute for the original shaders. \$\endgroup\$ Dec 4, 2012 at 18:02
  • 9
    \$\begingroup\$ @NathanReed Once upon a time, it went way further than that. Back when Anisotropic Filtering and texture-compression were expensive, the GPU companies would go out of their way to lower the visual-quality of the end product, when it ran in real-time, to make it faster without alerting anybody with a cheap monitor that the game looked much worse. They'd even intercept calls to PrintScreen, and do a full-quality render for the picture. \$\endgroup\$
    – Norguard
    Dec 4, 2012 at 18:14
  • 8
    \$\begingroup\$ GPU manufacturers also like to cheat at popular benchmarks. I remember a comparison benchmark from a PC magazine where they ran the same benchmark twice with the same settings on the same system. But one time they renamed the executable of the benchmark so that the driver wouldn't recognize it. Curiously, the score on the renamed executable was notably worse - for both ATI and nvidia cards. \$\endgroup\$
    – Philipp
    Dec 4, 2012 at 19:17
8
\$\begingroup\$

Game developers push the bounds of GPUs. We can make an analogy to a game and a game engine. The more advanced the requirements of the game, the more advanced the game engine needs to be to support it. This is the same with graphics cards.

Computer games and GPU manufactures are good bed fellows. It's in their best interest to work together to improve the GPU, thereby improving the game. This is the classic software guys working with the hardware guys relationship. Both parties have something to add when it comes to designing the interface between software and hardware. That interface is the driver.

These updates may include bug fixes that the software guys found, or improvements the hardware guys have made to support the requirements of the software guys. You'll find this relationship all over.

Likely the reasoning behind including the specific games in the driver update release notes is PR. It not only shows that card manufacturer X is going to work really well with game Y, but it shows that game Y is going to be even better than it was before.

\$\endgroup\$
6
\$\begingroup\$

It's plausible that the game development team ran into a GPU driver bug that would cause the game to not work correctly if the driver bug wasn't fixed.

It's also sometimes a marketing gimmick. For example, ATI/AMD recently bundled a copy of Dirt 3 with their newer GPUs and pushed the idea of playing with Eyefinity with 3 monitors on this game.

So it's a bit of symbiosis there.

GPU vendor: Hey! This new feature! No one's using it!

Game developer: We could use it! Bundle our game with your GPU that uses this feature?

GPU vendor: Hell ya!

\$\endgroup\$
1
\$\begingroup\$

The truth is that GPUs do not require game-specific drivers.

Game-specific drivers are part of a marketing effort by GPU manufacturers to try to get an edge over other GPU manufacturers. If they can show better performance in popular games by having custom-tuned their drivers for those specific games, then (the theory goes) they attract more players of those games.

That's pretty much all there is to it.

\$\endgroup\$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .