16

When Windows Aero is on, there isn't any screen tearing, as opposed to when using the Basic theme without Aero.

Why, though, do games with vertical sync seem to have a much greater input lag than when doing something on the desktop? It even seems to sync windowed games with V-sync off, better than they would be if they were using whatever method is built into the game.

Why and how does this happen, or appear to happen?

4 Answers 4

10

Actually, the reason Aero can prevent tearing without having to force VSYNC on in an application is because it is a compositing window manager. It draws the desktop and all windows asynchronously with respect to any running application.

That is to say, when you enable compositing in Windows Vista / 7 (it is always enabled in Windows 8), it will draw all of the windows using a copy of the last image that was swapped from back to front. The compositor (Microsoft calls it DWM, Desktop Window Manager) composites everything with VSYNC enabled, and because it draws using a copy of the last fully-swapped front buffer image for each window it never displays partially drawn frames. It does, however, have an unfortunate side effect of preventing really old software that was designed to draw into the front buffer exclusively from working correctly - but modern software does not do this.

In a nutshell, the DWM adds an additional layer of protection against tearing. One that will allow any application running on the system to draw at a rate irrespective of the display's refresh rate and still prevent tearing. On such a system, in windowed mode the only thing enabling VSYNC in OpenGL or Direct3D is good for is actually throttling back CPU/GPU utilization.

This is why adaptive VSYNC was created, the idea there is not to penalize applications that cannot sustain the display's refresh rate by forcing them into a lower factor of the refresh rate (e.g. 60 Hz --> 30, 20, 15, 10, 12, 6, 5, 4, 3, 2, 1) but to limit applications that are drawing faster than the monitor can display images from using an excessive amount of CPU / GPU power.

5

With Aero enabled, the Desktop Window Manager uses double buffering:

The Windows Aero feature makes extensive use of double buffering to draw on the screen.

Source

Wikipedia has this to say on how this is used with V-sync to prevent screen tearing:

During the vertical blanking interval, the driver orders 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 displayable, and simply switch back and forth between them (page flipping).

2
  • 6
    Double buffering doesn't prevent tearing, it prevents the user from seeing things in the process of being rendered. If you're double-buffered and you do a page flip in the middle of a screen refresh, you still get tearing.
    – Wyzard
    Feb 27, 2013 at 4:26
  • Of course you can still get tearing if you do the double buffering wrong, but the point is that DB can be used to prevent tearing.
    – nitro2k01
    Dec 4, 2013 at 23:25
4

Double buffering + V-sync on results in no tearing. Aero happens to use that configuration.

3

DWM (the technology that enable Aero effect) render everything in your screen as a D3D surface (which make it possible for video to keep playing on Flip). This rendering technique automatically prevent tearing, although the game method should be better than the generic DWM method (it's their own engine, after all). So it's likely the game method either isn't that good in the first place, or it wasn't optimized for your configuration.

1
  • 2
    By itself, the use of Direct3D does not prevent screen tearing. It's double buffering.
    – bwDraco
    Feb 27, 2013 at 3:24

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .