Nvidia GeForce Tweak Guide

[Page 8] Nvidia Control Panel (Pt.4)



Threaded Optimization: This setting controls the use of multithreaded optimization for games on systems with multi-core/HyperThreaded CPUs. In theory, by allowing the driver to offload certain GPU-related processing tasks as separate thread(s) on available CPU cores, performance can be improved.


The available settings are Auto, On and Off. Auto allows the GeForce driver to determine if it applies threaded optimization, On forcibly enables it, and Off disables it. In testing this setting in several games, I saw no performance impact. It should be noted however that none of the games I tested were old enough to have been developed before multi-core CPUs became available to consumers (around 2005). User feedback indicates that some older games, as well as some OpenGL games, will exhibit problems if Threaded Optimization is set to On.


It is recommended that Threaded Optimization be set to Auto under Global Settings. This will allow the driver to determine if and how to use threaded optimization for various games. You can turn this setting Off under the Program Settings tab for particular (typically old) games which have problems at the Auto or On setting.



Triple Buffering: In normal rendering, the GPU uses a technique known as Double Buffering to store two graphics frames in the Video RAM - one frame of graphics which the GPU is currently working on, and one frame which has been completed and is sent to the display. When Vertical Synchronization (See the Vertical Sync setting further below) is enabled in a game, your GPU will become synchronized to your monitor's refresh rate. In this environment, if double buffering is used, and your framerate falls below the refresh rate, the GPU may fill both frame buffers and become temporarily idle while it waits for the display's next refresh cycle so it can free up one of the buffers. The end result is a reduction in performance, sometimes by quite a significant amount (e.g. 50%), as the GPU is underutilized. Triple Buffering adds a third frame buffer to the process, specifically aimed at preventing the GPU from becoming idle due to waiting for the display to refresh, thus maintaining maximum performance when VSync is enabled. Triple Buffering is covered in more detail on this page of the Gamer's Graphics & Display Settings Guide.


The available options for this setting are Off and On. However, although not clearly indicated by Nvidia in the NVCP, this setting only applies to OpenGL games. Since the vast majority of games are based on DirectX, this setting won't have any impact on them. An Nvidia Engineer confirms this in this article by noting that there is no driver override functionality for Triple Buffering under DirectX. This has been done for compatibility purposes, since DirectX games use internally controlled frame buffering, and forcing Triple Buffering via the graphics driver can break this internal buffer management. If you wish to use Triple Buffering in a DirectX game, check the in-game settings for buffer-related options. Many games don't have any such options, in which case, to force Triple Buffering in DirectX games, you can use the D3DOverrider utility covered under the Advanced Tweaking section later in the guide.


Some important things to keep in mind regarding Triple Buffering:


  • It only works to improve performance if enabled when Vertical Sync is On.
  • It only improves performance whenever your framerate falls below your refresh rate.
  • It increases the amount of Video RAM used.
  • It can increase input lag because frames are buffered slightly longer.

  • It is recommended that Triple Buffering be set to Off under Global Settings, and only enabled under Program Settings for OpenGL games in which Vertical Sync is also enabled. In games which have a built-in Triple Buffering setting, it is recommended that it be enabled if VSync is On. Forcing Triple Buffering on with a third party utility is an option best used only if there are no other alternatives.



    Vertical Sync: Vertical Synchronization, often referred to as Vertical Sync, or VSync for short, is the synchronization of your graphics card with your monitor's capability to display a certain number of whole graphics frames per second on the screen. This is known as a monitor's Refresh Rate, measured in Hz. For example, a 60Hz monitor refreshes the screen fast enough to display 60 whole frames per second (60 FPS). When VSync is enabled, the GPU becomes locked to the monitor's refresh rate, passing one whole frame to the monitor at a time, and only when it is ready to refresh. VSync is covered in detail on this page of the Gamer's Graphics & Display Settings Guide.



    Click to enlarge

    The main reason VSync exists is to prevent a phenomenon called Tearing. This occurs any time your GPU and monitor go out of sync, and the GPU is providing more frames than the monitor can display in a refresh cycle. What winds up being displayed is two or more overlapping partial frames. If the scene is in motion, these partial frames will be slightly different from each other, and thus the scene will look like it's been horizontally torn in two and the top and bottom portions will look misaligned. A screenshot is provided above to demonstrate the effect, but it is only a simulation, because capturing tearing using software tools is not possible.


    Enabling VSync results in several effects:


  • All tearing is eliminated, as the GPU can only send one whole frame to the monitor at a time, and the monitor in turn only displays a single whole frame at each refresh.
  • The maximum possible framerate becomes capped to the same value as the refresh rate. E.g. on a 60Hz monitor, the maximum possible framerate with VSync on is 60 FPS.
  • Whenever the framerate is lower than the refresh rate, overall performance can drop, sometimes significantly, due to a timing quirk whereby the GPU is underutilized. This can be countered with Triple Buffering, as covered in more detail under the Triple Buffering setting further above.
  • Framerates may be less consistent.
  • There may be noticeable input lag, due to slight delays between when a frame is rendered and when it is displayed.

  • As you can see, there are positive and negative impacts from enabling VSync on its own. Disabling VSync is the easiest way to remove the framerate cap, prevent any reductions in performance, and reduce the chance of input lag, but it comes at the cost of tearing and larger fluctuations in framerates (FPS spikes). Disabling VSync can also unnecessarily raise GPU temperatures, and can result in a coil whine (high pitched buzzing) noise emanating from your GPU when framerates are extremely high, such as when viewing in-game intro and menu screens. Fortunately there are several variations of VSync possible, as well as other options, to help achieve a better outcome.


    The available options for this setting are Use the 3D Application Setting, On, Off, Adaptive, and Adaptive (half refresh rate). The Use the 3D Application Setting allows each game to use its own VSync setting, which most games have available in their in-game settings. On forces VSync on in games, regardless of their own VSync setting. Off disables VSync in games regardless of their own VSync setting. Selecting Adaptive enables Adaptive Vsync, a hybrid form of VSync which dynamically switches VSync on or off depending upon your framerate: it automatically enables VSync whenever your framerate exceeds the refresh rate, and disables it whenever your framerate falls below the refresh rate. This caps your framerate to the refresh rate, prevents the performance drop usually associated with VSync, provides smoother framerates, and reduces input lag and tearing. However, Adaptive VSync can't completely eliminate tearing or input lag, so it is a compromise solution. The Adaptive (half refresh rate) option functions in exactly the same manner as regular Adaptive VSync as described above, except that it uses half your refresh rate as the framerate target for switching VSync on or off (e.g. 30 FPS on a 60Hz monitor instead of 60 FPS).


    It is recommended that Vertical Sync be set to Use the 3D Application Setting under Global Settings. Then for each game, use the game's own VSync in-game setting. If the game doesn't have any VSync setting, or it doesn't function correctly, then set VSync On or Off in the NVCP under the Program Settings profile for that game. For any game where you wish to use Adaptive VSync, it is best to first disable the in-game VSync before forcing Adaptive on the game via the NVCP under Program Settings. All of the NVCP VSync options should override the in-game VSync setting and work correctly, but for compatibility purposes it's best to ensure that the NVCP and in-game VSync settings don't conflict.


    There is one more no-compromise option related to VSync called G-Sync. This requires a monitor with a special G-Sync module, which synchronizes the monitor to your GPU's framerate, and not your GPU to your monitor's refresh rate as with traditional VSync. So G-Sync eliminates tearing but doesn't have any of the negative impacts of VSync, such as a potential performance drop or input lag.


    As for which VSync method is best, it depends on your tastes and system capabilities. A basic summary of which options to use under particular circumstances is as follows:


    VSync On or Adaptive VSync: In games where your framerate is guaranteed to remain above your refresh rate (e.g. old games) then enabling VSync or Adaptive VSync is usually fine, because it will eliminate unsightly tearing, prevent framerate spikes, prevent unnecessary GPU power usage and reduce temperatures, without reducing performance. It also gives a consistent framerate due to the FPS cap, with the only real concern being whether you notice any input lag.


    VSync Off or Adaptive VSync: In more strenuous games where your framerate often falls below your refresh rate, and as long as you don't mind some tearing, then disabling VSync or enabling Adaptive VSync is usually best, as this prevents any performance drops and minimizes input lag.


    VSync On and Triple Buffering or G-Sync: If you absolutely can't stand tearing, then regardless of whether your framerate is above or below your refresh rate, you need to either always enable VSync, or purchase a G-Sync capable monitor - these are the only two ways to completely eliminate tearing. However, if you always enable VSync then it is strongly recommended that you force/enable Triple Buffering in games wherever possible to counteract its potential performance issues, and note that enabling VSync almost always results in some input lag regardless. For this reason, if you really can't stand tearing, you should look into purchasing a G-Sync capable monitor.


    Adaptive (half refresh rate): In extremely strenuous games where your framerate often falls to a level at or below half your refresh rate, and as long as you don't mind some tearing, then enabling Adaptive (half refresh rate) is usually best, as it provides a smoother experience.


    FPS Limit: In games where your framerate often jumps around and is generally inconsistent, and you've been using VSync or Adaptive VSync in order to cap the FPS, there is a better alternative: set an FPS limit to cap the game's framerate to a specific maximum framerate. This results in smoother framerates, less tearing, lower GPU temperatures and no coil whine, with none of the performance drops or input lag associated with VSync. Note that you can combine VSync or Adaptive VSync with an FPS Limit to help reduce input lag by setting an FPS limit just below your refresh rate (e.g. 58 FPS Limit on a 60Hz monitor) when VSync is in effect. To set an FPS limit for any game you will need to use the Frame Rate Limiter functionality of the Nvidia Inspector utility as covered under the Advanced Tweaking section.


    Update:


    Fast Sync: As of the 368.22 GeForce drivers, Nvidia has introduced a new form of VSync called Fast Sync. This VSync method is similar to Triple Buffering in that it uses three frame buffers. However, the behavior is slightly different: the GPU is not held back in any way by the display's refresh cycle. With Fast Sync enabled, the game engine will behave as though VSync is Off, hence the GPU can render as many frames as it possibly can at all times, which results in the highest performance, no framerate cap, and minimal input lag. Whenever the display needs to refresh, the GPU determines which latest available whole completed frame to send to the display, which in turn prevents tearing. Thus Fast Sync can provide the best aspects of both VSync Off and VSync On, without the negatives of either.


    The major downside of Fast Sync is that (as a senior Nvidia engineer explains here) it is only truly beneficial in very high FPS situations, typically when your framerate is at least 2-3x your display's refresh rate (e.g. 120-180 FPS and above on a 60Hz monitor). At lower framerates, because of the way Fast Sync essentially samples/drops frames, you may notice similar sorts of latency issues as traditional VSync On, as well as stuttering. So in practical terms you should only consider enabling Fast Sync in older games, or newer games where the settings have been turned right down; basically only in games where you can guarantee very high framerates.


    The Fast option is currently only available under the Vertical Sync setting in the Nvidia Control Panel for GTX 1080 and 1070 GPUs, but can also be enabled for the GTX 600 series and above using Nvidia Inspector as covered here.



    There is no simple solution when it comes to VSync. Whether you enable it, disable it, use Adaptive VSync, or set an FPS limit, there are always some compromises involved. The only no-compromises solution is to purchase a G-Sync capable monitor, which is worth considering the next time you want to replace your display.



    Virtual Reality Pre-rendered Frames: This setting only affects those who have Virtual Reality hardware, and as such is irrelevant to most users, and beyond the scope of this guide.



    That covers the key Nvidia Control Panel settings found under the Manage 3D Settings section. Make sure to click Apply after changing any setting, and always quit and restart any active game to see the impact of your changes. Note that the default for any setting has a green Nvidia logo next to it, and if you want to restore all settings back to default in one go, click the Restore button, then click Apply.



    Configure Surround, PhysX


    In this section of the NVCP, you can configure PhysX, as well as Surround multi-display setups which will not be covered in this guide as noted earlier.


    PhysX is Nvidia's GPU-accelerated physics simulation feature. If a game supports PhysX, and you are running a GeForce 8 or higher Nvidia GPU, then you will have the option of enabling various advanced physics-based special effects. See for example this article which details the PhysX-based effects in the game Borderlands 2.


    The PhysX Settings drop-down box in this section allows you to select whether the GPU or CPU handles PhysX, and on multi-GPU configurations, also allows you to allocate PhysX processing to a specific GPU. The available options are:


  • Auto-Select - This allows the driver to automatically determine whether to select your GPU or CPU for processing PhysX effects. This is the recommended setting, as in most cases the driver should be able to determine based on your GPU model(s) and detected CPU capabilities which hardware to use for processing PhysX for optimal performance.

  • [GPU Name] - If selected, this option allows you to force PhysX processing onto a specific Nvidia GPU on your system. Use this if you want to experiment to see if shifting PhysX load to a particular GPU on a multi-GPU system can improve your performance.

  • CPU - If selected, this option forces all PhysX processing to occur on your CPU, which is the default for systems which don't have an Nvidia GPU, and essentially turns GPU-based PhysX off. This generally turns off advanced PhysX effects and/or causes a significant performance drop. But it may help performance if you have a low-end GPU and a high-end CPU for example, or for particular games which are so strenuous on your GPU that offloading the PhysX processing to the CPU can improve overall performance.

  • It is recommended that PhysX Settings be set to Auto-Select, as this will allow the driver to determine the best processing hardware on your system to use for any supported PhysX effects. You can experiment on a game-by-game basis to see if forcing PhysX onto a specific GPU or even shifting the load to the CPU improves overall performance. Also keep in mind that the CUDA - GPUs setting in the Manage 3D Settings section of the Nvidia Control Panel (as covered earlier) determines whether PhysX is allowed to run on a particular GPU on your system, as PhysX is a CUDA-reliant process.


    To see if PhysX is correctly enabled and being used in a game, you can enable an on-screen indicator by selecting Show PhysX Visual Indicator under the 3D Settings menu at the top of the Nvidia Control Panel. When PhysX is available in a game, a simple indicator will appear, showing you whether it is running on the CPU or GPU while playing that game.



    On the next page we start our look at more advanced methods of tweaking.