I have got two monitors (in a "Join Displays" setup), an NVIDIA 1070 GTX mobile GPU, and GNOME 3 on OpenGL 4.6.

The refresh rate of the laptop's built-in monitor is set to its maximum 120.02 Hz, and the refresh rate of the 2nd monitor (over VGA) is at its maximum 59.88 Hz.

When the 2nd monitor is not connected, glxgears reports 20,000 FPS. But, when the 2nd monitor is connected and glxgears runs on the built-in monitor, glxgears is locked at 60 FPS, as if the Intel integrated GPU was in use.

Is X11 or OpenGL locking the refresh rate of all monitors to the lowest common rate?

Is there a way to prevent this and allow each monitor to have its own refresh rate, or is it by design and necessary?

  • Perhaps this will be helpful: stackoverflow.com/questions/17196117/… – wwerner Oct 19 '18 at 14:45
  • @wwerner extremely helpful especially with the answer for NVIDIA's proprietary driver, if you add it as an answer with explanation i'll accept and award the bounty – cat Oct 19 '18 at 15:42

You can disable vertical sync using environment variables, this should do the trick.

For mesa drivers, run vblank_mode=0 glxgears.

For nvidia proprietary drivers, it's __GL_SYNC_TO_VBLANK=0 glxgears, see http://us.download.nvidia.com/XFree86/Linux-x86_64/304.43/README/openglenvvariables.html.

You should also be able to set it in ~/.nvidia-settings-rc (SyncToVBlank=0 ) and using the nvidia settings GUI (option Sync to VBlank in OpenGL settings) as well.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.