Earlier this week, AMD's Robert Hallock told Forbes that Nvidia's GameWorks represents a "clear and present threat to gamers." Why? Because Nvidia is allegedly crippling performance on AMD products with this middleware suite "to widen the margin in favor of Nvidia products." That's a pretty serious accusation.
Naturally, Nvidia had something to say in response. Last night, we spoke with Nvidia's Cem Cebenoyan, director of engineering, developer technology, who heads a team of engineers that works with game developers to make their games run better. Part of the team also works on GameWorks modules.
As a recap, GameWorks (opens in new tab) is a set of libraries and tools (middleware) for adding effects to games such as graphical (HBAO+, TXAA), physical (PhysX, Clothing), and so on. "We provide technologies which are easy to integrate into games as well as tutorials and tools to quickly generate game content," reads the GameWorks website. This is different than Nvidia's "The Way It's Meant to be Played" program, which basically points out that games with this label were developed on and created for Nvidia GPUs, and are best experienced on said hardware.
"The #1 goal here is to build technology that makes things better for Nvidia customers. In many cases that ends up actually helping AMD customers," Cebenoyan told Tom's. "For example, HBAO+, which is in Watch_Dogs, runs on AMD and runs really well on AMD, and certainly doesn't cripple anything on AMD. And that's not uncommon for GameWorks modules. Some of them are Nvidia specific because they use specific hardware functionality, like TXAA. By and large we built GameWorks not for AMD and not against AMD. It's more for Nvidia customers, for the company to enhance the experience of these games on the PC platform and make them awesome and enhance them any way we can."
"The positioning from other folks seems to be that [creating GameWorks] was a deliberate attempt to make something harder for AMD, or make it worse for them," he added. "It's certainly not the motivation at all. Actually we have this model of middleware for game developers in PhysX, which we have been shipping for five years, and that actually works really well. It just requires a different level of diligence and attention to building a real product than you do when just running sample code."
GameWorks came about because the company didn't want to build a bag of code to throw at developers. Instead, Nvidia wanted to provide a piece of middleware that just works, and built for integration. It's built like a piece of middleware would be built, he says, with the primary goal of seamless integration into video game titles. One thing that hasn't really been clear up until now is that GameWorks is licensed software.
"You can't take that source code and then give it to someone else that doesn't have a license. You have to keep it inside your company," he explained. "But [game developers] are allowed to make changes to it. In fact, what would be the purpose of the source code if they couldn't change it? They can change it, if they want they can optimize for someone else's hardware or put in changes that improve the performance on AMD or something like that, and that's totally fine; that's within the rules of the source license."
"We do give out source code under a license to the GameWorks modules. The only ones we don't are Nvidia specific, that only run on Nvidia. Most of them don't fall into that bucket. That's not what AMD is complaining about anyway, because those things are not possibly crippling AMD because they don't run on AMD, things like TXAA. For all the other modules that run everywhere, things like HBAO+ and HairWorks, we do offer that under a source license agreement. In addition to that, we have this separate thing that doesn't require any kind of licensing agreement; these samples we have for OpenGL and DirectX, and we also have samples for Android and all the stuff on our GameWorks website right now."
I said that in our testing, we've seen that a GameWorks-optimized title like Assassin's Creed IV does in fact run poorly on AMD hardware. If AMD is unable to optimize as completely for a GameWorks-based title, how can this be seen as an asset for the gaming community?
"It's interesting that these interviews, these things have come out in the last few days on the Watch_Dogs launch," he said. "I think it's a perfect example of what commonly happens in a GameWorks title where there's some hubbub about performance not being great... they see that it's a GameWorks title and it's just sort of guilt by association. A lot of the numbers that came out of the original article that I saw where they were complaining that it's an example of GameWorks screwing up the performance for AMD. The only GameWorks feature that runs on AMD in this title is HBAO+. That wasn't even on in those tests."
Cebenoyan said that a lot of the reported low-performance cases have nothing to do with GameWorks. These features can be turned off. "If AMD's performance is poor, I don't see how you can point the finger at GameWorks. That doesn't make any sense," he said. He added that Nvidia has lots of titles that the company optimizes the experience for customers, and typically without game source code.
"There seems to be this thing that people are saying now -- maybe folks who haven't actually worked with drivers -- don't realize that you can actually do in most cases game optimization without having any access to the source code. We do this all the time. Every time you see a new driver that boosts 10 percent performance in this title, 99 times out of 100 the driver engineer that did that improvement never looked at a line of the game's source code."
We eventually began talking about AMD's Mantle low-level API. I asked if Nvidia sees this as a threat or as a competitor. The answer? Not really.
"GameWorks is about encapsulating some cool effect and doing a kind of turnkey solution to that effect. We want to give you a simple thing to integrate -- show me water here in the world and it will just work, it will work with the whole scene," he said. "[GameWorks] is kinda in the other direction [than Mantle]. It's in providing a solution to a problem. The way Mantle works, which is providing a lower level access to the graphics processor, but it puts a heavy burden on the team doing the work. To integrate a new low level renderer into your game is very challenging. There's a lot of engineering and re-engineering of the renderer and things like that. Integrating HBAO+ can be done in a couple of days by one person."
"In that sense, I don't think they're competitors," he added. "We've been making a lot of investments in both OpenGL and DirectX -- DirectX 12 is going in the low level direction as well. So we're working closely with Microsoft to make sure that's going to be awesome. And we've done similar things on the OpenGL side to give developers ways to do both low level access and just really fast submission of information to the GPU for developers who want that. And I don't think that's the solution for everyone."
One thing that was pointed out to me was that AMD seems to focus a lot of their effort on Mantle and has de-emphasized support for Direct3D, which may be partly why we're seeing all these performance differences on both Nvidia and AMD titles. I also noticed a level of agitation in the interview, which is understandable given the allocations flying at Nvidia this week.
Nvidia points to this example of HBAO+ (opens in new tab), which the company says works great on both AMD and Nvidia hardware. There's also a sample of the GeForce-only TXAA feature here (opens in new tab) (4x TSAA vs 8x MSAA). Both samples are taken from the just-released PC version of Watch_Dogs.
Finally, the company provides a direct link to the SDK that is supposedly hidden on Nvidia's developer website (NVIDIA_SDK11_Direct3D_11.00.0328.2105.exe (opens in new tab)), and a link to new samples the company uploaded back in March here (opens in new tab), which are open source.