It should surprise no one that NVIDIA thinks most of the above claims from AMD are…false. While I talked with NVIDIA’s Cem Cebenoyan, Director of Engineering, Developer Technology it became pretty clear over the course of an hour that he seemed personally offended that someone would take the work his team and done with GameWorks and, in his view, distort it for evil. He stated to me that the point of GameWorks was to “put cool new technology into games” and address a plaguing issue that NVIDIA fell victim to over many years.
While the development team had built some really cool technologies in the form of source code, very few of these were ever actually implemented into games or game engines. By moving from “big, scary blocks of code” to a middleware style application with API access, NVIDIA believes they are enabling game developers to add improved features like hair, water, faces, turbulence and more, to the benefit of gamers at a faster pace.
NVIDIA’s stance is that everything I wrote in the AMD section on the previous page is FUD (fear, uncertainty and doubt) and that NVIDIA has never deliberately written code or de-optimized software to hurt AMD performance. There is nothing in GameWorks that would preclude AMD or developers from optimizing GameWorks titles for Radeon hardware.
Pretty divergent viewpoints. I guess this is no surprise.
Some of the features offered in NVIDIA's GameWorks software.
NVIDIA was very blunt in stating that AMD’s claim that GameWorks was a “black box” is incorrect by telling me that developers can absolutely get a license for the libraries that includes source code. With that, they are free to make any change to improve performance or stability on NVIDIA or other hardware platforms. NVIDIA offers this option for exactly these reasons, though not all licensors choose to get the “with source code” option. The other difference between the binary-only and source code options of GameWorks is cost, though NVIDIA declined to say by how much.
I even asked NVIDIA for a specific example of a time when a licensor of GameWorks had used the source code to modify a feature to the benefit of a non-NVIDIA hardware. Unequivocally I was told, yes. Though they didn’t want to divulge which developer or which game for corporate disclosure purposes.
NVIDIA also seemed confused as to why AMD would be on the war path with this story now, with Watch_Dogs. According to NVIDIA, the only feature of GameWorks the game uses that is forced to run on AMD hardware is HBAO+ (Horizon Based Ambient Occlusion), and that feature doesn’t have to be enabled in the game’s settings. Even further, NVIDIA claims that AMD’s hardware performs nearly identically to NVIDIA’s in that specific feature, to “within a fraction of a millisecond.”
The four current shipping titles using GameWorks.
NVIDIA also pointed me towards pages on its development website showing where all of the source code for DX11 (as well as DX10 and DX9) was located. It definitely was moved, but was still available for people that wanted to access the code-only style of examples. Cem also claimed that his team continues to work on further examples and implementation offerings that don’t require GameWorks licensing.
After coming to AMD with the statement from NVIDIA about offering source code to developers, of which many of AMD’s complaints were based on, AMD directed me towards several public statements from major developers on public outlets like Twitter.
These remarks from respected developers definitely put NVIDIA’s statements of source code availability in question. When confronted with these posts NVIDIA did admit that the availability of the source code did not start until mid-April.
We've continually evolved our source licensing approach based on feedback from developers, and we fairly recently made a source license for our developer partners available for *all* GameWorks technologies, other than those which run exclusively on NVIDIA
All a developer needs to do is contact us for a source license.
UPDATE: There is some confusion of when GameWorks source code was available. With some segments of GameWorks being release versions and some being Beta, not all source code was available. As those features exit beta, that source code is made available.
The claims made in early April by the quoted game developers seem completely accurate now, and it took the pressure of the community to push NVIDIA to open up GameWorks. That also means it is likely that Watch_Dogs was completed before this change in policy was made by NVIDIA. But, even if it was later rather than sooner, NVIDIA has properly opened up the GameWorks program for developers to accelerate and optimize specific features for AMD hardware should they choose to do so. Only NVIDIA-only features like PhysX and TXAA remained in the "black box" form.
To me, it appears the central problem from which all of these viewpoints stem is that NVIDIA has moved from providing example code to providing a true middleware application. Other middleware tools operating within game engines provide a similar “black box”, but because NVIDIA is one of two primary hardware vendors for the high end graphics and gaming market, it definitely creates a unique tension. Should NVIDIA be in the business of creating a mostly-closed middleware tool set? Depends on your point of view but clearly AMD doesn’t think so and continues to wave the “open and fair” flag for the community to rally behind. NVIDIA on the other hand claims that creating GameWorks allows them to push the PC gaming community forward and improve visual quality at a faster pace that would otherwise be possible (or likely).
My biggest concern is really more on the developer in this case. If even half of what AMD is claiming to be true was in fact the case, why would a developer, especially one at the size and experience level of Ubisoft, choose to integrate GameWorks? Even though the PC is just a portion of the game’s target audience (Xbox One and Playstation 4), if GameWorks was ever as anti-competitive as the claims make it out to be, why would a publisher or developer potentially damage the experience of 35-40% of the PC gaming audience? Only three options come to mind: money, apathy or value. The money option would indicate that NVIDIA has worked out a financial deal on the business side to integrate GameWorks. An apathetic developer might care so little about the PC version of their game they just want to get through development as quickly as possible and GameWorks helps facilitate that. Finally, the value option would mean that the features offered by GameWorks provide actual, tangible value and technological advantages that the developer wants to harness.
In the case of Watch_Dogs, only HBAO+ was integrated from GameWorks and runs on both AMD and NVIDIA hardware and as we have mentioned before, the performance difference between the two GPU vendors in that feature is close to zero. Thus, we can state that the performance differences between AMD and NVIDIA hardware on Watch_Dogs today is not due to the implementation of GameWorks technology.
So if Watch_Dogs isn't actually a cause for immediate alarm, why is AMD raising all the flags now? The company is clearly afraid that further integration of GameWorks middleware will mean bad news for AMD Radeon GPU owners. If major engines continue to add features like FaceWorks and FlameWorks, where does that leave AMD? They will have to work with game developers to optimze for it, without a doubt, but now that we know the source code is being made available to licensed developers, it is able to happen. I also think that AMD may be in a better position against GameWorks than they think. As we know the major profits lie with console game releases and every developer needs to make sure their titles run well on the Xbox One and Playstation 4. Because both of those platforms are based on AMD GPU technology, it would seem rather unlikely that a developer would really decimate a game or game engine with anti-AMD technology.
Both AMD and NVIDIA agree that the option for “after the fact” fixes for these performance issues with GameWorks titles will still work for AMD. Though they are definitely a slower and more difficult fix to implement, both GPU vendors have been doing it as long as I can remember. When developers are either unwillingly or unable to change aspects of their gaming engines with updates after launch, driver updates are frequently used to scale performance and fix bugs. AMD may have to work harder to make sure GameWorks titles are working great with its GPUs, but it can and should do it.
AMD’s Mantle API also makes for an interesting analogy in this story. Mantle is a closed API (code only available to approved beta developers), but AMD claims that optimizing for or integrating it does not negatively impact the performance of NVIDIA hardware on the DirectX 11 code path. While true, is it possible that for each hour a development team spends on Mantle is indirectly impacting DX11 performance? That might be a stretch but so much of this argument seems to be based on them. Mantle was created to move the industry forward and act as a catalyst for further technological enhancements. NVIDIA sees GameWorks in the same light; if this pushes engine and game developers to find more general purpose ways to integrate similar levels of graphics effects, then everyone would benefit over time.
In my opinion, after talking with a bunch of different people on the matter, I think there was probably some merit to AMD’s claims of a “lock out” with NVIDIA’s GameWorks toolset at the outset of the program. Gamers using AMD hardware might eventually be at a direct disadvantage when a game developer uses it but in reality it is the developer’s decision to integrate and correct any issues. NVIDIA is in no way required to make sure that AMD gets equal optimization with GameWorks. AMD was not required to build Mantle in a way to help out NVIDIA gamers. And NVIDIA never needed to apologize for developing CUDA.