PDA

View Full Version : nVidia's drivers: Oddities, inconsistencies and bugs


Grestorn
07-25-05, 01:45 AM
I've been busy creating a new version of nHancer and while testing all of the features, I came accross some strange inconsistencies with the driver. That was the reason I started to investigate the driver's behaviour further and realized that all is not too well in nVidia driverland...

For each global setting there is a corresponding value stored in the registry e.g. "D3D_QualityEnhancements" which is used for the "Quality", "Highquality" etc settings. Whenever an application is opening the Direct3D library or the OpenGL library, these values are read from the registry by the driver.

In addition, application specific values of these settings can be stored by prefixing the registry entry with the name of the executable, like "_farcry.exe:D3D_QualityEnhancements". If an application called "farcry.exe" is opening the Direct3D library, these settings will also be read and used.

nVidia's own control panel uses that feature to store application dependent settings. So far the theory. Now to reality...

The behaviour of the driver is very different if the game uses Direct3D or OpenGL. Therefor I'll describe the problems each of those driver has seperately:

Direct3D

Currently, only the following settings are actually application dependent:
Anti-Aliasing, Anisotropic Filter, Color Scheme, SLI Settings (including Dynamic Tiling and Stereo mode flags), Performance (Quality, High Quality etc.) and VSync.
The following settings are not application dependent, even though they can be set seperately for each application in the control panel. If you do that, the setting will be ignored! They only work if defined as global settings:
Anisotropic Filter Optimization, Anisotropic Sample Optimization, Trilinear Optimization, Neg. LOD BIAS Clamp, Force MipMap creation, LOD BIAS and the new SLI Anti-Aliasing feature.
Since these settings are also stored in nVidia's nvapps.xml, the file that is used by nVidia to store all application profiles, I'm pretty sure that this behaviour is not really intended and qualifies as a serious bug. Especially the fact that the SLI Anti-Aliasing mode can only be defined globally right now makes this new feature quite useless...

Additionally, nVidia has introduced a feature, that enables the driver to differentiate between different games that use the same executable file name, since there are some games out there using clever names like "game.exe" for their executable file. To make their profile mechanism work, the driver will also look for up to two path parts of the executable. So if the game executable is stored in "c:\program files\a great game\bin\game.exe" the driver will check for registry values prefixed by "game.exe", "bin\game.exe" and "a great game\bin\game.exe".

This feature is quite usefull. But now comes the great BUT: Only very few settings are actually using it, all of them SLI options.

So this makes the profile management extremely inconsistent. You can create SLI profiles for games with generic exe names, but you can't define any other option like Anti-Aliasing or Anisotropic Filtering in the same profiles. Argh!

OpenGL

The situation in OpenGL is actually much much better. All options the OpenGL driver recognizes (which is quite a lot, there are many many OpenGL exclusive options) are also application aware, as explained above. So everything is fine here...

... except that the OpenGL driver also doesn't use any portions of the path for identifying the correct executable, not even for the SLI settings. So we've got another inconsistency there.


Most of these inconsistencies could be fixed very easly. In fact, I'd say that any decent programmer could fix that in a day or two.

Either nVidia is not aware of those problems or they don't care. But the fact is that because of those problems, their unique feature of having application aware profiles is becoming more and more a farce.

I'm not a registered developer with nVidia, and since I'm not a game or 3D-application developer, I don't think that I'd have much luck registering with them much less being heard by the people in charge for the driver.

But I've got the impression that some people here on the board do have the neccessary connections to the inner circle at nVidia or at least know how a way that the right people learn of those problems. If so, I'd be delighted if this person(s) could forward these findings, please...

anzak
07-25-05, 02:55 AM
I know this is off topic, but I have a question about the next version of nHancer. Are you going to include support for 4x-9Tap Anti-Aliasing (http://www.nvnews.net/vbulletin/showthread.php?t=54086)? I really like this mode and think it would make a great addition to nHancer. Thanks and keep up the good work. :thumbsup:

gram_vaz
07-25-05, 03:09 AM
oh well, not like i use any of the 'not application dependant' settings for different game profiles.

tho this still pisses me off a little about nvidia.

Grestorn
07-25-05, 03:24 AM
I know this is off topic, but I have a question about the next version of nHancer. Are you going to include support for 4x-9Tap Anti-Aliasing (http://www.nvnews.net/vbulletin/showthread.php?t=54086)? I really like this mode and think it would make a great addition to nHancer. Thanks and keep up the good work. :thumbsup:
I'm going to create another thread where I'll ask for suggestions for several issues with nHancer. Your suggestion would fit in there perfectly. So please watch out for that thread and make sure to add your point there :)