Over the past few months, Nvidia has made a number of high-profile announcements regarding game development and new gaming technologies. One of the most significant is a new developer support program, called GameWorks. The GameWorks program offers access to Nvidia’s CUDA development tools, GPU profiling software, and other developer resources. One of the features of GameWorks is a set of optimized libraries that developers can use to implement certain effects in game. Unfortunately, these same libraries also tilt the performance landscape in Nvidia’s favor in a way that neither developers nor AMD can prevent.
Understanding libraries
Simply put, a library is a collection of implemented behaviors. They are not application specific — libraries are designed to be called by multiple programs in order to simplify development. Instead of implementing a GPU feature five times in five different games, you can just point the same five titles at one library. Game engines like Unreal Engine 3 are typically capable of integrating with third party libraries to ensure maximum compatibility and flexibility. Nvidia’s GameWorks contains libraries that tell the GPU how to render shadows, implement ambient occlusion, or illuminate objects.
In Nvidia’s GameWorks program, though, all the libraries are closed. You can see the files in games like Arkham City or Assassin’s Creed IV — the file names start with the GFSDK prefix. However, developers can’t see into those libraries to analyze or optimize the shader code. Since developers can’t see into the libraries, AMD can’t see into them either — and that makes it nearly impossible to optimize driver code.
Is GameWorks distorting problems in today’s shipping games?
To answer this question, I’ve spent several weeks testing Arkham Origins, Assassin’s Creed IV, and Splinter Cell: Blacklist. The last is not a formal GameWorks title, but Nvidia worked with Ubisoft to implement the game’s ambient occlusion, and early benchmarks showed a distinct advantage for Nvidia hardware when running in that mode. Later driver updates and a massive set of game patches appear to have resolved these issues; the R9 290X is about 16% faster than the GTX 770 at Ultra detail with FXAA enabled. Assassin’s Creed IV is more difficult to test — it’s engine is hard-locked to 63 FPS — but it showed the R9 290X as being 22% faster than the GTX 770 as well, roughly on par with expectations.
Arkham Origins’ performance is substantially different.
Like its predecessor, Arkham City, it takes place in an open-world version of Gotham, is built on the Unreal 3 engine, and uses DirectX 11. Both games are TWIMTBP titles. I’ve played both games all the way through — many of the animations, attacks, and visual effects of Arkham City carry over to Arkham Origins. Because the two games are so similar, we’re going to start with a comparison of the two games side-by-side in their respective benchmarks; first in DX11, then in DX9.
Previous Arkham titles favored Nvidia, but never to this degree. In Arkham City, the R9 290X has a 24% advantage over the GTX 770 in DX11, and a 14% improvement in DX9. InArkham Origins, they tie. Can this be traced directly back to GameWorks? Technically, no it can’t — all of our feature-specific tests showed the GTX 770 and the R9 290X taking near-identical performance hits with GameWorks features set to various detail levels. If DX11 Enhanced Ambient Occlusion costs the GTX 770 10% of its performance, it cost the R9 290X 10% of its performance.
The problem with that “no,” though, is twofold. First, because AMD can’t examine or optimize the shader code, there’s no way of knowing what performance could look like. In a situation where neither the developer nor AMD ever has access to the shader code to start with, this is a valid point. Arkham Origins offers an equal performance hit to the GTX 770 and the R9 290X, but control of AMD’s performance in these features no longer rests with AMD’s driver team — it’s sitting with Nvidia.
Via: ExtremeTech
Post a Comment