Vsync and Screen Tearing


A typical video tearing artifact (simulated image)
A typical video tearing artifact (simulated image)

Screen tearing is a visual artifact in video where information from two or more different frames is shown in a display device in a single screen draw. The artifact occurs when the video feed sent to the device isn’t in sync with the display’s refresh, be it due to non-matching refresh rates, or simply lack of sync between the two. During video motion, screen tearing creates a torn look as edges of objects (such as a wall or a tree) fail to line up. Tearing can occur with most common display technologies and video cards, and is most noticeable on situations where horizontally moving visuals are commonly found, such as in slow camera pans in a movie, or classic side-scrolling video games. The ways to prevent video tearing are dependent on the technology of the display device and video card, the software in use, and the nature of the material being shown. The most common solution is to use multiple buffering. Most systems will use this function along with one or both of these two methods:

V-sync

Vertical synchronization is an option found in most systems, wherein the video card is prevented from doing anything visible to the display memory until after the monitor has finished its current refresh cycle. During the vertical blanking interval, the driver would order the video card to either rapidly copy the off-screen graphics area into the active display area (double buffering), or treat both memory areas as display-able, and simply switch back and forth between them (page flipping).

Complications

When vertical synchronization is in use, the frame rate of the rendering engine will exactly equal the monitor’s refresh rate, if it was higher. Although this feature normally results in improved video quality, it is not without trade-offs in some cases.

Judder

Vertical synchronization can also lead to artifacts in video and movie presentations, as they are generally recorded at frame rates significantly lower than the typical monitor frame rates (24–30 frame/s). When such a movie is played on a monitor set for a typical 60 Hz refresh rate, the video player will miss the monitor’s deadline fairly frequently, in addition to the interceding frames being displayed at a slightly higher rate than they were intended for, resulting in an effect similar to judder – see Telecine: Frame rate differences.

Input lag

Video games, which have a wide variety of rendering engines, tend to benefit well visually from vertical synchronization, as a rendering engine is normally expected to build each frame in real time, based on whatever the engine’s variables specify at the moment a frame is requested. However, because vertical synchronization causes input lag, it interferes with the interactive nature of games, and particularly interferes with games which require precise timing or fast reaction times.

Benchmarking

Lastly, when one wishes to benchmark a video card or rendering engine, it is generally implied that the hardware and software render the display as fast as possible, without regard to monitor’s capabilities or the resultant video tearing. Otherwise, the monitor and video card will throttle the benchmarking program, causing it to generate invalid results.

Many games have internal limits that prevent them rendering faster than a certain frame rate. In some cases this can mean they are locked at a maximum frame rate of only 20 fps. The maximum frame rate you can obtain is equal to the refresh rate of your display.

When you have Vsync enabled: Vsync is used to synchronize the output of your graphics card with the display of your monitor. When your graphics card has finished rendering the next frame it waits for the monitor to finish displaying the current one before switching to the new one. This means that the maximum frame rate you can obtain will be equal to the refresh rate of your monitor (which is usually 60 Hz, 75 Hz, 85 Hz, or  100 Hz).

If you disable Vsync, then your graphics card will continuously render without waiting for the last frame to be displayed in its entirety. With fast graphics cards this means that your monitor may switch to a new frame halfway down the screen. This effect is known as tearing as there appears to be a visible line separating two different halves. Due to this, you should generally leave Vsync enabled except when benchmarking.

Resources used: wikipedia