NVIDIA GameWorks + code optimization

Rizen

[H]F Junkie
Joined
Jul 16, 2000
Messages
9,487
So, I thought this was interesting and wanted to share here for some discussion.

Extremetech posted an article in December about the NVIDIA GameWorks program. http://www.extremetech.com/extreme/...surps-power-from-developers-end-users-and-amd

Here's a clip for context:
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.
The article originally described these libraries as "black boxes" - meaning they could implement the libraries but not have access to the source code that drives the underlying functions. They went on to update the article later with an amendment from NVIDIA that stated "developers can, under certain licensing circumstances, gain access to (and optimize) the GameWorks code, but cannot share that code with AMD for optimization purposes."

If none of this means anything to you, I'd suggest reading the article - it's short - but the long and short of it is this - NVIDIA provides developers with libraries to implement graphical features in games as part of their GameWorks program. If you use these libraries, part of the license is that you can't share this code with anyone else. This means that if a game is using these libraries, the code will be optimized to run on NVIDIA hardware, and AMD (nor anyone else, for that matter) won't have access to the code to do their own optimizations. This means that any game that is built with these libraries will inherently run better on NVIDIA hardware and AMD won't have an easy way to close the performance gap.

I try to shy away from fanboying for either side - I have run both vendors hardware extensively - but in general I don't like these types of moves which are inherently anti-consumer. There has been some Twitter posts from various people today discussing this, basically discussing the whole "black box" versus open design documents approach.

https://twitter.com/repi/status/452812842132332544

John Kloetzli is a graphics programmer that works at Firaxis, Bart Wronski works at Ubisoft Montreal as a graphics programmer, Timothy Lottes is a former NVIDIA employee, now working at Epic and the author of TXAA, Johan Andersson is Frostbite’s Technical Director.

So what are your thoughts on this? We have seen this type of behavior before from graphics card companies, and from Intel as well, and I am not a fan. I love games - that's my primary motivation for building computers - and I'd like games to run optimally no matter whose GPU is in my computer, whether it's AMD or NVIDIA. So this type of stuff rubs me the wrong way.
 
Last edited:
This is old news, but it's a pretty shady business practice. It would be fine if AMD were able to offer their own solution, but apparently those who license the library may lock out AMD from offering their own fixes and optimizations. This happened with Batman: Arkham Origins when AMD offered a solution for the stuttering, but WB turned it down. GameWorks may in fact be purposefully gimping AMD performance to make NVIDIA hardware look better by comparison. There is no need for this when NVIDIA already controls 2/3 of the gaming market if looking at Steam's hardware survey. Fact is even though NVIDIA would never admit it, AMD has kept NVIDIA on its toes and has advanced graphics technology at a faster rate than if NVIDIA had a monopoly in the consumer space.
 
Yeah this seams very anti-consumer and anti-competitive. Very shady business practices, when Intel did something similar the courts decided that what Intel did was illegal and they got fined. I would like to see NVIDIA receive a large fine for this.

This isn't about optimising games for NVIDIA, its about making the code run slower then it should normally on other hardware.
 
Sooner or later, we might have a need for multiple EXE files and game launchers to launch games coded specifically for specific APIs and programming languages-- GameWorks, Mantle, DirectX, OpenGL, etc. This is going to be a mess in the end, and we, as consumers, are going to pay for it.
 
i doubt that, code paths can be changed directly in the game scripts.
 
i doubt that, code paths can be changed directly in the game scripts.

The problem with GameWorks is that game developers will be obligated by contract to not show the game's code to any of Nvidia's competitors such as AMD. So, having differently compiled programs might become a necessity if the main program coded using libraries from GameWorks can't be shown to AMD or anyone else for driver optimizations.

This would be another Batman: Arkham City again multiplied by the number of developers going to use GameWorks for their games.

For example, if I'm reading this correctly:
If I make a game in VSS2012 and use GameWorks libraries, I can't divulge the code to AMD for driver optimizations except for Nvidia themselves. That is what I'm understanding from this whole thing. So, if there is a driver having an issue with the game-- such as slowdowns, artifacts, graphical glitches, etc.-- that can only be fixed by driver updates, then only Nvidia can provide the fixes themselves, whether for their own benefit or not, and the detriment of others not Nvidia. Because my customers on AMD video cards are complaining of issues with a certain driver version, and I am under contract with Nvidia through their GameWorks program, I cannot divulge the source code to AMD or share it with them to allow them fix their own drivers for my own game.​
 
You dont need access to the code to optimize, just the libraries/dlls.

They are pre-compiled.

The developers are bitching because thats a black-box, it goes in, it comes out, and no ones knows what happens in between, so there is no way of knowing wether the perameters you passed are optimal.

The NDA and Licencing comes into play if you WANT to see the code.

And then you have to pay for it.
 
Last edited:
No where does it say AMD is prevented from making their own optimizations to the game. They just can't take the work that NVIDIA has done. Just like Mantle only works on AMD chips. NVIDIA is still free to optimize BF4.

Just another flame bait thread.
 
not sure id call it flame bait since the developers are the ones bitching.
 
No where does it say AMD is prevented from making their own optimizations to the game. They just can't take the work that NVIDIA has done. Just like Mantle only works on AMD chips. NVIDIA is still free to optimize BF4.

Just another flame bait thread.
This is correct, but the point of providing access to these libraries is so developers don't have to spend time creating and recreating graphical features in a game engine; precompiled libraries cut their work. If they have to recreate the same effects for AMD they are doubling their work instead of saving time, so that's unlikely to happen. I don't disagree that NVIDIA is within their rights to do this, but it's a practice that will inevitably lead to problems for consumers. If I buy a game I don't really want to worry about which GPU vendor sponsored the game and hope things aren't broken if it's the competitors title.

Mantle is not intended to be "closed" in the same fashion as GameWorks. It's not opened up yet because the SDK isn't final, but my understanding is that NVIDIA can implement Mantle if they choose to. If AMD goes back on their word or changes their stance I would criticize them for that behavior as well.

Ultimately the game industry is a worse place for gamers with these type of actions.
 
And my intention was not to troll. I posted this because of the developer commentary on Twitter relating to GameWorks which is from the last two days.
 
Be that as it may, it's still valid criticism, and it's coming from more than just Johan.

What valid criticism? If you read the article you linked

According to Nvidia, developers can, under certain licensing circumstances, gain access to (and optimize) the GameWorks code,

So no black box.
 
"under certain conditions" being the operative phrase.

As in you have to pay for it, and you cant reuse the code for AMD optimization.

Black-Box stands. as no ones wants to pay for it.

PRIME1, your continued dismissal as unimportant, valid complaints by established developers, continues to make you look like nothing but an nvdia pr shill.

Every single thread you post in is the same thing....dismiss complaints, nvidia rules.
 
But they can't let AMD see that code, so AMD can't write optimisations for it.

No different from Mantle. Why would any company give the competition something for free?

Let's be clear Gameworks does not make the game run worse on AMD hardware it just optimizes it for NVIDIA hardware. AMD can do the work and provide optimizations.

I know people will look for any reason to burn NVIDIA but this is more a knock against AMD for not doing the work.
 
if you read the tweets you would see they prefer CGN because they have access for free to alll the things NVIDIA is hiding behind a pay/NDA wall.
 
No different from Mantle. Why would any company give the competition something for free?

Let's be clear Gameworks does not make the game run worse on AMD hardware it just optimizes it for NVIDIA hardware. AMD can do the work and provide optimizations.

I know people will look for any reason to burn NVIDIA but this is more a knock against AMD for not doing the work.
The article I linked in the very first post of this thread shows that the games using GameWorks do, in fact, run worse on AMD hardware.

And Mantle is free. Any developer is free to implement Mantle - there are no licensing costs for using their API.
 
You mean the frostbite developer who got $8,000,000 from AMD to use Mantle.

:rolleyes:

It was rumored (not substantiated by any of the parties involved or any documentation) that EA got $5mil - $8mil from AMD for the rights to exclusive marketing of BF4. Neither the "Frostbite developer" (Johan) nor Dice were mentioned as receiving payment for anything. Neither was it said that the money was to develop or implement Mantle. Add to that Johan (Repi) wasn't even the protagonist in the conversation and wasn't the one who made any negative comments about nVidia and their Gameworks program.


Here's the article in it's entirety before all the Chinese whispering. Note the Source, Fudzilla. One of the biggest tech rumor sites on the web and even they never said AMD paid for Mantle.
$5m or more we are hearing
Multiple sources have told us that AMD spent between $5 and $8 million to secure the Battlefield 4 deal.

The part of the deal was to make Battlefield 4 as a part of AMD exclusive bundle, only available to select AMD partners, as well as to make sure that showcases of the game are done on AMD hardware.

This is a big commitment for EA, AMD and Dice, but all sides will benefit from it. AMD will also gave the exclusive right to Dice to play with Mantle, a new AMD API that is set to become a third player in gaming APIs next to OpenGL and DirectX.

Dice has promised to bring a Mantle update to BF4 in December 2013 and we will have to wait and see if this brings any performance increase on the existing game. Mantle is supposed to talk to "metal" directly on the transistor level, potentially making everything faster and delivering some new effects that are outside DirectX 11.2 specification.

The deal that is said to be worth between $5 million and $8 million will give AMD a new "face" in the eyes of gamers and with very good Hawaii R9 and R7 cards to launch just in time for the game, this has a chance to become quite successful PR stunt for AMD.

The question if you can really make that money on the Battlefield 4 deal and justify and a sizable investment remains to be seen, but new way of doing marketing and PR for AMD is a refreshing and brings about some much needed change.

To link this to the subject of the thread, because I realize you are attempting to derail it, notice how BF4 and Thief the 2 Mantle games, run absolutely fine on nVidia hardware. nVidia doesn't play fair the same way and that's what the concern is. If it simply made nVidia hardware have improved performance like Mantle does for AMD, nobody, from the consumers side, would be concerned. The devs are pissed because their code goes in and if what comes out is screwed they don't know why. In order to find out they have to sign up to some secret fraternity.
 
Last edited:
What valid criticism? If you read the article you linked



So no black box.

Serious?? Why didn't you use the hole sentence?

"According to Nvidia, developers can, under certain licensing circumstances, gain access to (and optimize) the GameWorks code, but cannot share that code with AMD for optimization purposes."
 
No different from Mantle. Why would any company give the competition something for free?

Let's be clear Gameworks does not make the game run worse on AMD hardware it just optimizes it for NVIDIA hardware. AMD can do the work and provide optimizations.

I know people will look for any reason to burn NVIDIA but this is more a knock against AMD for not doing the work.

Mantle and dx are in not the same and cannot be compared. A closer comparison would be mantle and physx.

Nvidia is trying to take a standard, dx11, and turn it into a closed standard.
 
The article I linked in the very first post of this thread shows that the games using GameWorks do, in fact, run worse on AMD hardware.

They run worse because AMD did not optimize for them. Blame AMD. It's why I don't buy their cards.

And Mantle is free. Any developer is free to implement Mantle - there are no licensing costs for using their API.

If you could link to where NVIDIA is charging for Gameworks I would appreciate it.
 
They run worse because AMD did not optimize for them. Blame AMD. It's why I don't buy their cards.
False.
AMD attempted to provide Warner Bros. Montreal with code to improve Arkham Origins performance in tessellation, as well as to fix certain multi-GPU problems with the game. The studio turned down both. Is this explicitly the fault of GameWorks? No, but it’s a splendid illustration of how developer bias, combined with unfair treatment, creates a sub-optimal consumer experience.
 
If you could link to where NVIDIA is charging for Gameworks I would appreciate it.

If you could link to where NVIDIA is allowing free, open, and unfettered access to Gameworks i would appreciate it
 
They run worse because AMD did not optimize for them. Blame AMD. It's why I don't buy their cards.

Really dude? They is a difference between "don't" and "can't".

Read the quote.

"According to Nvidia, developers can, under certain licensing circumstances, gain access to (and optimize) the GameWorks code, but cannot share that code with AMD for optimization purposes."

Do you understand that sentence?

Okay, here are the questions for you, I just want to know if you understand the sentence.

1) where did extreme tech get that statement from?

2) without special licensing circumstances can developers gain access to the code to optimize it?

3) under what circumstances can amd access the code for optimization?
 
If you could link to where NVIDIA is allowing free, open, and unfettered access to Gameworks i would appreciate it

Are you saying that any developer can share the source code for Mantle with Intel or NVIDIA? The difference between Mantle and Gameworks is that Mantle tries to replace DirectX completely with its own proprietary API.

I know some of you want to think AMD is the wounded party here, but they are just as bad or worse than any other corporation out there.
 
Yes, when the SDK is released to the public.

No one is talking about a wounded party, its about locked down access to the hardware and proprietary libraries.
 
Are you saying that any developer can share the source code for Mantle with Intel or NVIDIA? The difference between Mantle and Gameworks is that Mantle tries to replace DirectX completely with its own proprietary API.

I know some of you want to think AMD is the wounded party here, but they are just as bad or worse than any other corporation out there.

It is harder and harder to post replies to your posts.

Also I see you failed to answer the questions in my previous post.
 
Is Prime1 a master troll or just being ignorant to valid arguments against his views?
 
PRIME1 is avoiding the topic and trying to make it about AMD. Ask him anything about nVidia and you won't get a response that doesn't attempt to turn it around to AMD. "smoke and mirrors"
 
Whether you believe AMD is guilty of the same thing in some fashion or not is irrelevant. This is a bad precedent regardless of AMD's actions. Keeping software and standards as open as possible is the best situation for consumers. Locking down titles through software licensing restrictions hurts consumers, period.
 
No different from Mantle. Why would any company give the competition something for free?

Let's be clear Gameworks does not make the game run worse on AMD hardware it just optimizes it for NVIDIA hardware. AMD can do the work and provide optimizations.

I know people will look for any reason to burn NVIDIA but this is more a knock against AMD for not doing the work.

That's the thing: The game will solely be optimized for Nvidia graphics cards.

Developers can have access to all the libraries and Nvidia engineers the company provides them, but those libraries-- all graphic assets, graphical effects and physics-based effects-- will only be optimized for Nvidia cards. If a developer does not choose to use two separate assets-- one using Nvidia libraries and another using DirectX libraries-- the one using the Nvidia libraries will run better on Nvidia hardware.

It would be the equivalent of games using PhysX which only work on Nvidia and defaulting to a CPU-run version of it if no Nvidia card is detected. I highly doubt any developer would opt to have two different kinds of physics-based effects coded-- one that uses PhysX and another using something like Havoc-- and spend the resources to do so.

Nvidia is providing the tools and the means necessary to make game development easy, but at the same time make it run more optimally on their own hardware. If a developer solely chooses to use these libraries, the DirectX code-path will not be optimized for non-Nvidia hardware unless the developer chooses to do so. Let's be realistic here: When things come easy and cheaply to a developer, they would sooner choose that over other alternatives. We've seen this happen with games ported between PC and the Xbox 360. Having a console using a modified version of DirectX 9 and similar code to Windows-based games made porting easier. At the same time, however, it also meant many games were developed for the lowest common denominator due to a) Costs and b) Market availability-- more 360 users than PC gamers.

If there is an incentive for game developers to do things easily and cheaply, faster and give them a higher ROI, then they will do so. It will not make sense for a developer to spend the extra resources and man hours to develop a game to work optimally on two different kinds of hardware unless there was an incentive to do so.

Nvidia is giving them that incentive, but for their cards only. It will be up to the developer then to provide optimizations for non-Nvidia cards, and we've historically seen that happen in a lot of PC games lately that developers almost always do not spend the extra resources to optimize a game that was heavily promoted to run better on one company's graphics card brands over another company's. More often than not, it is the Nvidia-promoted games with "The Way It's Meant to be Played" mumbo-jumbo that tend to end up this way for gamers.

How about this:

How do you optimize drivers for a game if you do not know what is causing the performance issue or graphical problems?

The best a company like AMD or Intel can do is work backwards. However, since they are locked out of seeing what part of the code is causing the performance issue, they will have to go in blindly or rely on the game developer to provide the optimization themselves.

As in the case of Batman AC, AMD provided a suggested optimization and fix for tessellation, but Warner Brothers turned them down. Now, we get into developer bias at this point.

Do you really want to see PC gaming solely work just on one company's brand of video cards? Or, do you want to see competition and innovation pushing game development forward?

Clearly, your replies have shown you favor the former over the latter.
 
Last edited:
People here have said mantle is fragmenting the pc. This right there is fragmenting pc development hardcore.

It's like having to code twice for the same api. Strong proponent of Directx against mental said directx was meant to prevent this kind fragmentation.
Here we are on the flip side of the coin, but it's alright when the other does it... makes no sense.

This isn't even close to the metal optimization bs either(dx12) etc ...
 
Back
Top