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.

Index The Driver Enabled AA Question
Comments Locked

50 Comments

View All Comments

  • drayzen - Wednesday, July 11, 2007 - link

    Reading the article it occurred to me that basically what Nvidia are trying to achieve is to simplify the process for the und user.

    I thought that you could have an ordered list of driver features that would be progressively turned off based upon a target FPS rating. As for most people, when all is said and done they want a reasonable FPS with as much eye candy as is possible.

    It would basically function as a dynamic fallback system. Similar to the way that modern CPU's adjust their settings based upon load only here we are talking about rendering features rather than speed.

    It would be possible to have a basic and advanced version.

    The Basic version might look like:
    1> MipMap Detail Level
    2> Anisotropic Filtering
    3> Anti-Aliasing *Possibly with: (Method 'a'/'b')
    4> Vertical Sync

    While an Advanced version would be like:
    1> MipMap Low
    2> MipMap Medium
    3> Anisotropic Filtering 2X
    4> MipMap High
    5> Anisotropic Filtering 4X
    6> Anti-Aliasing 2X Method 'a'
    7> Anisotropic Filtering 8X
    6> Anti-Aliasing 2X Method 'b'
    8> .....

    - For both Basic and Advanced the user is able to change the order of the items in the list to keep the features they deem most iportant.
    - In the Basic version the driver would automatically fallback through the levels of a feature. e.g. for Anti-Aliasing: 4x('a') -> 4x('b') -> 2x('a') -> 2x('b')
    - In the Advanced settings the user is specifying the order of each individual setting so no fallback is required.

    The ability to log events would enable users to analyse their results and better tailor their settings.

    As far as notifications go, I guess you could have a tick box on each row as to whether a notification will appear for a status change on that feature.

    I'm not sure how well this would work as a system with current API's, maybe with DX10 where there are no more API's (correct?) it would be better, as some of the changes are not high speed dynamic changes and seem to require a restart of the video system.
    With some changes to programming I'm sure it could be achieved.
  • instant - Wednesday, April 4, 2007 - link

    Coolbits + the normal display properties is all you need.

    Hopefully Nvidia will let those of us who hate their new display properties manager use the old one...

  • Gherault - Monday, March 26, 2007 - link

    Why not initialize a profile dialog box when a program tries to go to use DirectX/OpenGL? You could use checkboxes for every time, first time, etc. located in driver settings- probably first time as a default. I hate opening the Nvidia profiles, but it if automatically popped up, and integrated the warning boxes/list of programs known not to function with MSAA (better if integrated directly into a profile) then I would love it. Manually wading through the profiles as-is stinks, therefore I do not use them AT ALL. If you wanted to experiment with performance by tweaking profiles you could set the checkbox to open the profile every time a program tried to go to use DirectX/OpenGL and play with the settings each time, until you found what you wanted, then "lock" the profile with a checkbox or whatnot that would cause it not to re-open automatically. Also... please don't force me to use the bloated interface that came about in the 90/100 series of drivers. I like the old control panel, and being able to see my GPU temp without having to load Ntune (which is incompatible with my PC- causes bluescreens constantly).
  • DasFox - Monday, March 26, 2007 - link

    I don't see why this seems so complicated.

    I personally leave all Nvidia driver settings on default, and I use nHancer to enable game profiles, and when AnandTech said;

    "Profiles don't seem like the right fit"

    I guess they haven't used nHancer, because life in gaming with it, can't get any easier.

  • mindless1 - Wednesday, March 21, 2007 - link

    I think I speak for a lot of users in that I am not wanting the popup box solution mentioned in the article, many people are so incredibly tired of popup messages. This is not a fault of nVidia, there are other companies that have worn out the popup box already.
  • neofit26 - Tuesday, March 20, 2007 - link

    I am usually changing the AA setting from the driver's panel, since very few games have them in the interface. Now with nHancer it's even easier. I wish NVidia copied that interface into their drivers.

    And, unlike a previous poster said, nowadays more and more games do not allow AA to be used and even forced in the driver's panel. I am talking about Gothic 3, Vanguard, Silent Hunter 4 and Stalker apparently. And they don't give anything in exchange. Why would I choose a "David Thompson erotic photography" blurry bloom-like effect in a combat game, instead of non-jaggy lines?

    Anyway, for me the choice is simple: if forums say that the game has no AA and it cannot be forced through the driver panel - I don't buy it.
  • AnnonymousCoward - Sunday, March 18, 2007 - link

    Obviously one of the concerns here is maintaining good support for older games: "...driver AA settings are a necessity for enabling the functionality on older games or current games..."

    Currently the 4:3 scaling option for widescreen monitors is broken for the Geforce 8 on WinXP. In the Nvidia control panel the option is called "Change flat panel scaling", and it simply doesn't work. Here's a forum post of others with the problem: http://forums.nvidia.com/lofiversion/index.php?t23...">http://forums.nvidia.com/lofiversion/index.php?t23...

    What is more important for image quality in games: AA settings, or not stretching 4:3 images to 16:10? Clearly the latter. Fix the basics first.

    Additionally, the Nvidia's nTune program is also broken, since it forgets your settings every time you reboot.
  • chizow - Monday, March 19, 2007 - link

    The latest 100+ series beta drivers fix 1:1 scaling along with a host of other problems in XP. They're beta, but a helluva lot better than the 2 month+ old 97.92 WHQL. Pretty sure 100.65 WHQL fixed 1:1 in Vista, but not totally sure since I haven't made the move yet.
  • AnnonymousCoward - Monday, March 19, 2007 - link

    Oh, one other thing. You said 100-series drivers fixed 1:1 scaling in XP. Do they have 100-series for XP? http://www.nzone.com/object/nzone_downloads_rel70b...">http://www.nzone.com/object/nzone_downloads_rel70b...
  • AnnonymousCoward - Monday, March 19, 2007 - link

    Oh really, 100.65 fixes the scaling? Poster "thredge" on my link said "Was hoping the 100.65 newest driver I just got would solve it, but was again dissapointed." I haven't tried it since I assumed he was right.

Log in

Don't have an account? Sign up now