Eu tenho dois monitores (em uma configuração "Join Displays"), uma GPU móvel NVIDIA 1070 GTX e GNOME 3 no OpenGL 4.6.
A taxa de atualização do monitor embutido do laptop está definida para o máximo de 120,02 Hz, e a taxa de atualização do segundo monitor (por VGA) está no máximo de 59,88 Hz.
Quando o 2º monitor não está conectado, glxgears
relata 20.000 FPS. Mas, quando o 2º monitor está conectado e glxgears
roda no monitor embutido, glxgears
fica travado em 60 FPS, como se a GPU integrada da Intel estivesse em uso.
O X11 ou OpenGL está bloqueando a taxa de atualização de todos os monitores para a taxa comum mais baixa?
Existe uma maneira de evitar isso e permitir que cada monitor tenha sua própria taxa de atualização ou é por design e necessário?
Você pode desabilitar a sincronização vertical usando variáveis de ambiente, isso deve funcionar.
Para drivers mesa, execute
vblank_mode=0 glxgears
.Para drivers proprietários da nvidia, é
__GL_SYNC_TO_VBLANK=0 glxgears
, consulte http://us.download.nvidia.com/XFree86/Linux-x86_64/304.43/README/openglenvvariables.html .Você também deve poder configurá-lo em
~/.nvidia-settings-rc
(SyncToVBlank=0
) e usar a GUI de configurações da nvidia (opçãoSync to VBlank
nas configurações do OpenGL).