vsync broken when blitting to back buffer


I have some code that does this:

  1. render to a FBO
  2. blit the result to the back buffer
  3. swap buffers

This basically works but controlling VSYNC from code by wlgSwapInterval/glxSwapIntervalSGI doesn’t work anymore as it did before when rendering was done directly to the back buffer.

Forcing vsync on/off in the driver control panel still works though. The hardware is nvidia in all cases.

Is there something about FBOs and blitting between them that could cause this? It seems like a driver bug to me but I want to be sure I’m not making a silly mistake myself. Any ideas?


It seems like the driver doesn’t like it when I leave the FBO active all the time. When I switch back to the default FBO before swapping buffers SwapInterval seems to be effective again. Is this expected behaviour?