screen tears even while vsynced on windows 7


I’m having some issues achieving vsynced rendering without screen tearing. This happens in all the project templates I’ve tried and the content examples project. Also, I tried enabling vsync in Unreal Tournament and that does fix the tearing for that game, so I’m not sure what that would be doing differently. I’m confused as to how this screen tearing can even happen if it is truly running in vsynced mode.

How to repro:

  • Load up pretty much any project, content examples project works
  • Launch the game in stand alone mode
  • maximize the window or go full screen because it makes it easier to see the tear line, which could be hidden if it is are above or below the window
  • Strafe left and right (this makes it most easy to see tearing)
  • We would expect to see some tearing since vsync is off by default
  • type r.vsync 1 in console to enable vsync
  • tearing should still be visible

What I’ve tried:

  • disabling smooth frame rate
  • setting fixed frame rate to 60
  • packaged build
  • adding r.vsync 1 to ini files
  • tried ue 4.10.0 and 4.9.2
  • checking that “Enable desktop composition” is on, and tried turning it off
  • recompiled from source and tinkered with d3d11 swap chain and preset code
  • disconnecting 1 monitor (I have a dual monitors)

More info about my setup:

  • Windows 7 & DirectX 11 - up to date
  • Intel i5-2500K CPU @ 3.3 GHz
  • 8GB Ram
  • GeForce GTX 970 - drivers are up to date

Also having same issue on my work computer:

  • Windows 7 & DirectX 11 - up to date
  • Intel Xenon CPU @ 3.5 GHz
  • 32 GB Ram
  • GeForce GTX 770 - drivers are up to date

Image of what I see:
Using the print screen button doesn’t show the issue so I used a camera. The tear line fluctuates around a bit, usually staying somewhere near the center.

I figured out what was causing the issue… I had disabled Windows Aero on my pcs. This causes desktop composition to not be enabled, even though it was still checked in advanced settings. This was causing vsync to not be respected when running in windowed mode, even full-screen borderless windowed mode. Unreal Tournament worked fine for me because it launches in true fullscreen mode, as does MGSV. This is a flag that is passed to the swap chain create that controls this.

There is s a console command that can also kick it into true fullscreen mode if you do “r.SetRes 1920x1200f” (or whatever your native monitor resolution is). The “f” part at the end is what tells it to get kicked into true fullscreen.

Anyway, I hope maybe that explanation helps someone someday.