104 votes

Désactiver la synchronisation verticale pour les glxgears

Parfois, vous avez besoin de vérifier si l'accélération 3D de Linux fonctionne vraiment (en plus de la glxinfo sortie). Cela peut être fait rapidement par la fonction glxgears outil. Cependant, les images par seconde sont souvent limitées au taux de rafraîchissement vertical de l'écran (c'est-à-dire 60 images par seconde). Ainsi, l'outil devient plus ou moins inutile puisque même un logiciel de rendu peut produire des glxgears de 60FPS facilement sur les CPUs modernes.

J'ai trouvé qu'il était plutôt difficile d'obtenir une solution rapide et facile pour cela, je réponds à ma propre question. J'espère que cela vous fera gagner du temps.

144voto

willsteel Points 2318

En vblank_mode fait l'affaire. Vous devriez alors obtenir plusieurs centaines de FPS sur du matériel moderne. Et vous êtes maintenant en mesure de comparer les résultats avec d'autres.

$>   vblank_mode=0 glxgears

101voto

ali_m Points 7185

Si vous utilisez les pilotes fermés NVIDIA, vous pouvez modifier le mode de synchronisation verticale à la volée à l'aide de la commande __GL_SYNC_TO_VBLANK variable d'environnement :

~$ __GL_SYNC_TO_VBLANK=1 glxgears
Running synchronized to the vertical refresh.  The framerate should be
approximately the same as the monitor refresh rate.
299 frames in 5.0 seconds = 59.631 FPS

~$ __GL_SYNC_TO_VBLANK=0 glxgears
123259 frames in 5.0 seconds = 24651.678 FPS

Cela fonctionne pour moi sur Ubuntu 14.04 en utilisant les pilotes NVIDIA 346.46.

31voto

nocnokneo Points 142

Pour les pilotes graphiques Intel et les pilotes graphiques opensource AMD/ATI

Trouvez la section "Appareil" de /etc/X11/xorg.conf qui contient l'une des directives suivantes :

  • Driver "intel"
  • Driver "radeon"
  • Driver "fglrx"

Et ajoutez la ligne suivante à cette section :

Option     "SwapbuffersWait"       "false"

Et exécutez votre application avec vblank_mode variable d'environnement définie comme 0 :

$ vblank_mode=0 glxgears

Pour les graphiques Nvidia avec le pilote Nvidia propriétaire

$ echo "0/SyncToVBlank=0" >> ~/.nvidia-settings-rc

La même modification peut être apportée dans le nvidia-settings GUI en décochant l'option à l'adresse suivante X Screen 0 / OpenGL Settings / Sync to VBlank . Ou, si vous souhaitez simplement tester le paramètre sans modifier votre système d'information. ~/.nvidia-settings-rc vous pouvez faire quelque chose comme :

$ nvidia-settings --load-config-only --assign="SyncToVBlank=0"  # disable vertical sync
$ glxgears  # test it out
$ nvidia-settings --load-config-only  # restore your original vertical sync setting

22voto

Krellan Points 11

En mettant les autres réponses ensemble, voici une ligne de commande qui fonctionnera :

env vblank_mode=0 __GL_SYNC_TO_VBLANK=0 glxgears

Cela a l'avantage de fonctionner pour les pilotes Mesa et NVidia, et de ne pas nécessiter de modification des fichiers de configuration.

7voto

neutro Points 31

La désactivation de la case Sync to VBlank dans nvidia-settings (onglet OpenGL Settings) fait l'affaire pour moi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X