Fullscreen and Vsync

Hey everyone,

I’m currently working on some timing tests regarding SwapChain->Present() and there is some behavior regarding Vsync and fullscreen that I don’t understand.
When I enable Vsync in windowed fullscreen then Present() waits until the vblank occurs and returns. I’ve tested this in a almost empty project and measured the time right before and right after Present() [in PresenChecked()] and it took always almost the full duration of a frame. But when I switch from windowed to fullscreen (Fullscreenmode=0) then Present() resturns immediately instead of waiting for the vblank. However, it seems that the frames are still synced to the vblank, since my framerate is still identical the the refresh rate of my monitor (tested with 60 and 120Hz).

Can anyone explain why this happens and how UE4 syncs to the vblank in fullscreen?

I forgot to mention that I’m working on Windows 10 and with DirectX 11.