Отключить вертикальную синхронизацию для 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>