VSync stuck at 30fps in windowed mode (Windows 10)


#1

I use OpenGL with SDL, and I set VSync with SDL_GL_SetSwapInterval(1). In Windows 10 I get only 30fps in windowed mode. Fullscreen and borderless mode have no problems, 60fps. I can disable VSync in windowed mode to get as many fps I want, but it’s not a solution since the tearing is unbearable. I can also disable VSync ingame, and force VSync through AMD Catalyst Control Center, but same result: only 30fps in windowed mode.

Windows 7 has no problems with any mode, always 60fps.

Any idea how to enable 60fps VSync in windowed mode in Windows 10?


#2

Check your monitor refresh rate as it is set in Windows, VSync will cap your framerate to whatever Windows is using. More information in the link below on how to change your refresh rate, you want to change it to 59 or 60 Hertz.


#3

Thanks, though it didn’t solve the problem. It was 60Hz already, and I tried 59Hz as well, but windowed mode is still locked to 30fps.

I tested other game that I know uses OpenGL and doesn’t use SDL (Slay the Spire), and it seems to have the same problem: windowed mode is locked to 30fps, borderless and fullscreen works fine at 60fps. I also tried a DirectX game (Ultra Street Fighter IV), and it works 60fps in windowed mode.

So it seems it’s not a problem in SDL after all. Looks like Windows 10 messes up OpenGL windowed mode VSync somehow in some cases. I guess the only solution is to switch OpenGL to Direct3D.


#4

We just tested Yamagi Quake II on Win10 with SDL 2.0.9, on an AMD R7 360 with driver version 18.10.1 and 18.12.3

We got around around 50-55fps in windowed mode with vsync on - which is less than the expected 59/60, but it’s not locked to 30 at least.
In fullscreen mode we got 59FPS, as expected.