Отключить вертикальную синхронизацию для glxgears

62 willsteel [2013-06-19 19:09:00]

Иногда вам нужно проверить, действительно ли вы работаете на Linux 3D-ускорении (кроме вывода glxinfo). Это можно быстро выполнить с помощью инструмента glxgears. Однако FPS часто ограничиваются показателями вертикальной частоты обновления (то есть 60 кадров в секунду). Таким образом, инструмент становится более или менее бесполезным, поскольку даже программный рендеринг может легко производить 60FPS glxgears на современных процессорах.

Мне было довольно сложно получить быстрое и простое решение для этого, я отвечаю на собственный вопрос. Надеюсь, это сэкономит ваше время.

linux 3d glx


6 ответов


82 Решение willsteel [2013-06-19 19:09:00]

Переменная среды vblank_mode делает трюк. Затем вы должны получить несколько сотен FPS на современном оборудовании. И теперь вы можете сравнивать результаты с другими.

$>   vblank_mode=0 glxgears

41 ali_m [2015-03-29 15:45:00]

Если вы используете драйверы с закрытым исходным кодом NVIDIA, вы можете изменить режим вертикальной синхронизации на лету, используя переменную среды __GL_SYNC_TO_VBLANK:

~$ __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

Это работает для меня на Ubuntu 14.04 с использованием драйверов NVIDIA 346.46.


21 nocnokneo [2013-08-05 18:53:00]

Для графики Intel и графических драйверов с открытым исходным кодом AMD/ATI

Найдите раздел "Устройство" /etc/X11/xorg.conf, который содержит одну из следующих директив:

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

И добавьте следующую строку в этот раздел:

Option     "SwapbuffersWait"       "false"

И запустите приложение с переменной окружения vblank_mode, установленной на 0:

$ vblank_mode=0 glxgears

Для графики Nvidia с проприетарным драйвером Nvidia

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

Такое же изменение можно сделать в графическом интерфейсе nvidia-settings, сняв опцию в X Screen 0 / OpenGL Settings / Sync to VBlank. Или, если вы хотите просто протестировать параметр без изменения вашего файла ~/.nvidia-settings-rc, вы можете сделать что-то вроде:

$ 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

6 neutro [2013-07-11 06:24:00]

Отключение флажка Sync to VBlank в настройках nvidia (вкладка "Настройки OpenGL" ) делает трюк для меня.


4 olmerg [2015-08-14 03:21:00]

Я нашел решение, которое работает на карте Intel и на карте nvidia с помощью Bumblebee.

<Р → export vblank_mode = 0
glxgears
...
optirun glxgears
...
export vblank_mode = 1

2 kevinf [2013-11-29 01:12:00]

Для драйверов Intel существует также этот метод

Отключить вертикальную синхронизацию (VSYNC)

Интеллектуальный драйвер использует Triple Buffering для вертикальной синхронизации, что обеспечивает полную производительность и позволяет избежать разрыва. Чтобы отключить вертикальную синхронизацию (например, для бенчмаркинга), используйте этот .drirc в своем домашнем каталоге:

<device screen="0" driver="dri2">
    <application name="Default">
        <option name="vblank_mode" value="0"/>
    </application>
</device>