Original Link: https://www.anandtech.com/show/2191



Performance and compatibility are always at the top of the list of topics addressed in each new graphics driver release, and our articles usually focus on performance. Over the past couple years we've seen user interface change quite a bit as well. Drivers have been growing in size and complexity a while now, and sometimes it is worthwhile to stop and take a look at where things are headed.

We haven't been hugely impressed with the UI direction either AMD or NVIDIA have taken. We've had quite a few conversations at AnandTech lamenting the loss of the simple driver interface embedded in the advanced display properties panel. It is desirable to enable novice users or the less technically inclined to understand and benefit from driver settings, but decisions on how best to enhance the graphics driver experience can't be taken lightly. It is in this spirit that NVIDIA contacted us about some options it is considering for the future direction of its driver.

For the past few years, the driver setting that has had the single heaviest impact on performance has been antialiasing. In the beginning, applications didn't include AA settings in games, but users were still able to benefit from the feature by enabling the option through the driver control panel. More recently, games have enabled users to set their desired level of antialiasing with in-game graphics settings. But sometimes a game will include a feature that won't allow traditional MSAA (multi-sample antialiasing) to work properly. We saw this very early in Halo, one of the first DX9 games. Later, titles that made use of floating point surfaces (often useful in HDR rendering) also excluded the option for MSAA. Today, while both NVIDIA and AMD have hardware out that can support MSAA on floating point surfaces, some developers are taking entirely different approaches to rendering which get in the way of the very concept of MSAA.

The questions we are going to ask are: how do/should we set AA, how should game developers handle AA, and how should graphics hardware makers address AA in their drivers? Before we get there, let's take a deeper look at some of the complexity associated with AA, in particular with NVIDIA hardware.



The Increasing Complexity of AA

As we mentioned, the first major difficulty with antialiasing is compatibility. Generally the burden is on the game developer to assess the capabilities of the hardware on which it is running and make options available to users based on what is available. Problems arise in that game developers aren't able to look into the future and program for hardware that isn't available. For example, X1000 Series and GeForce 8 Series hardware can run Oblivion with both HDR and AA enabled, but at least GeForce 8 hardware wasn't available when Oblivion launched, so the developers don't test for the capability to antialias floating point surfaces and simply disable the AA option when HDR is enabled.

When games that could benefit from AA on current hardware don't offer the option, we have no choice but to look to the driver for support. Of course, we do have bigger problems on the horizon. Some developers are currently choosing options such as deferred rendering for their games. Current techniques make use of multiple render targets (MRTs) to render objects or effects which are later combined to form a final image. MSAA does not play well with this technique, as one of the basic requirements is knowing what surfaces overlap a single pixel on the screen. Forcing AA on in the driver can cause problems in games where MSAA simply will not work. Current examples of this can be seen in these games:

  • Ghost Recon: Advanced Warfighter
  • Rainbow Six: Vegas
  • S.T.A.L.K.E.R.

With the functionality of driver enabled AA dependent on the game being run, graphics hardware makers are not able to guarantee that the user will get the results he or she desires. This means that the driver setting is more like asking the hardware to enable AA if possible. This uncertainty as to the behavior of the feature can cause problems for end users of both AMD and NVIDIA hardware.

As for NVIDIA specifically, its new CSAA (Coverage Sample Antialiasing) technology adds another layer to the complexity of antialiasing settings in the driver. Now, rather than just selecting a desired level of antialiasing, we need to decide to what degree we want to either enhance or override the application. Enhancing only works when AA is enabled in-game as well, and override won't override games that make use of technology that is incompatible with MSAA. While the features function as they should, even some hardcore gamers out there may not know what they are getting when they enable AA in the control panel.

At AnandTech, we have avoided using driver AA settings as much as possible since the initial release of Far Cry which produced inconsistent results between graphics hardware manufacturers when set through their respective control panels. These specific problems were worked out in later driver and game updates, but we find it more effective to rely on the game developer for consistency between common hardware features. Where there is an in-game setting, we use it. For us, other than disabling vsync, driver settings are a last resort.

It is safe to say that AMD and NVIDIA feel the same way. The only way they currently have to inform their users about the lack of support for AA in specific games is though their release notes. No one wants the end user to have a bad experience through glitchy performance.

One of the best ways to make sure gamers stick with in-game settings is to make sure developers offer clearly defined, well documented, and complete settings for features such as AA. In order to better enable this, NVIDIA has been working with Microsoft to enable CSAA through DirectX. With the in-game option for CSAA, users won't have to wade through the driver options and can directly select the type and degree of AA they want applied to their game.

In DirectX 9 and 10, requesting AA on a surface involves determining the level (number of subsamples) of AA and the quality of AA. Most games just set quality to 0, as hardware previous hardware didn't really do anything with this field. The method developers can use to set CSAA in-game is to set the level of AA to either 4 or 8 and then set the quality to 8 or 16 (2 or 4 in DX9, as quality levels are limited to 7 or less). This functionality is exposed in NVIDIA's 100 series driver.

This has had some unwanted side effects though. In the past it hasn't mattered, but some developers would detect the highest quality setting available and select it when enabling AA in-game. These games when paired with NVIDIA's 100 series driver will inadvertently enable 16x CSAA when 4x AA is selected. Currently the games that exhibit this behavior are:

  • Battlefield 2
  • Battlefield 2142
  • Sin Episodes
  • Half-Life 2
  • Half-Life 2: Lost Coast
  • Dark Messiah of Might and Magic

This is only an issue on Vista for now, but 100 series drivers will be coming to XP soon. It isn't that either NVIDIA or these game developers are doing anything wrong, it's just how things ended up working out. The ability to enable CSAA in games does outweigh these minor issues in our minds though. We hope to see this number rise, but currently there are only two games that support enabling CSAA in-game:

  • Half-Life 2: Episode 1
  • Supreme Commander

So with the 100 series driver, future games will be able to enable all of NVIDIA's AA modes in-game. Setting AA levels in-game is safer than using the hardware makers' driver overrides and more convenient than game specific profiles. Aside from heavily encouraging developers to enable in-game AA settings when possible, NVIDIA is exploring other options to make the gamer aware of the caveats associated with driver settings and encourage the use of override AA as a last resort.



The Driver Enabled AA Question

Currently driver AA settings are very complex, especially for NVIDIA hardware. In-game settings are more compatible with each game on an individual basis, and future games will be able to support AA with floating point textures and enable CSAA in-game on NVIDIA hardware. So wouldn't the world be a better place if we could just throw out driver AA settings and rely on games?

Such a theory might work well for future games, but the reality is that driver AA settings are a necessity for enabling the functionality on older games or current games that neglected to include AA support in favor of floating point surfaces. In order to allow gamers to continue to benefit from these features while avoiding compatibility issues inherent in current an future games, NVIDIA is considering altering the presentation of AA in its driver.

We would like to make it clear that NVIDIA hasn't taken any steps in any particular direction at this point. In fact, any feedback we can get from our readers on these options would be of particular interest to their driver team. If any of these ideas stands out as a winner, please let us know on this article's comments.

One direction NVIDIA may go is to remove the override AA options from the general settings while keeping the enhance options on the main screen. This will allow gamers to enable CSAA in games that don't support the option in-game yet while encouraging the use of in-game settings for MSAA. For applications that don't have in-game settings, NVIDIA would still allow override AA to be set in the game profiles. This would allow older applications the ability to benefit from AA, and NVIDIA could disable the option in profiles for games that are fundamentally incompatible with MSAA.

We aren't sold on the idea of profiles, but it was also suggested that a coolbits like feature could be used to expose override AA modes. This would allow gamers who really know what they want to still have access to the feature in a traditional way after setting a specific registry key.

Another less complicated approach being considered is the addition of a warning box that pops up when AA settings are changed. This would be an informational approach to explain the possible complications of enabling override AA on an application that doesn't support it. This would have added benefit if NVIDIA included a list of games known not to support MSAA in this warning box (as these games should already be noted in their release notes).

The bottom line is that NVIDIA wants to provide the "... best default settings for the broadest set of users for the most likely scenarios." We certainly know what we as reviewers would like to see, but we would love to hear from our readers on the subject.



Final Words

Driver AA settings are getting too complicated and unpredictable. It would be terrific if all game developers could support AA settings in-game or through the driver, but that just isn't a reality. Moving forward, as programmable techniques mature standard MSAA may prove more and more difficult to force on across the board through a driver. For NVIDIA, the complications of maintaining driver controlled CSAA and MSAA are numerous. The impact on the end user is that AA may or may not function in the expected way, causing headaches for the gamer, hardware maker and software designer.

From our perspective, the informational approach through a warning when AA settings are changed is great, but could be subject to the Windows user "just click OK" mentality. Educating the average gamer on the possibilities is something we can get behind, but we just aren't sure that this approach would work. Even so, we wouldn't mind seeing this implemented, especially if we have an option to avoid seeing the pop-up once its been shown once.

Profiles don't seem like the right fit, as it can be cumbersome to manage settings for each game on a computer both in the game and in the driver. Perhaps if profiles gain in popularity this could be the way to go, but we feel there is a better solution.

Implementing a coolbits-like feature to enable override AA in general driver settings seems like the best way to go. This could even be combined with the warning box idea without a problem. This would both encourage the use of in-game settings through the removal of the driver option from the default install and provide the possibility of educating users who discover how to enable the option.

In addition to providing feedback on what NVIDIA should do, we are interested in the way our readers currently tackle AA. In testing, we use in-game settings exclusively when available. What method do you use to set AA?

As we mentioned, NVIDIA has not decided that any of these actions are necessary at this point. This article is meant to open a discussion on the best possible way to proceed, and your feedback is important. If we all have the goal of maximizing customizability and accessibility without causing problems for the majority of users, we will be in a very good place indeed.

Log in

Don't have an account? Sign up now