有时,您需要检查Linux 3D加速是否确实有效(除了glxinfo
输出)。该glxgears
工具可以快速完成此操作。但是,FPS通常限于显示器的垂直刷新率(即60 fps)。因此该工具或多或少变得无用,因为即使是软件渲染也可以在现代CPU上轻松生成60FPS glxgear。
我发现很难快速而轻松地解决此问题,我回答了我自己的问题。希望它可以节省您的时间。
Answers:
该vblank_mode
环境变量的伎俩。然后,您应该在现代硬件上获得数百FPS。现在,您可以将结果与其他人进行比较。
$> vblank_mode=0 glxgears
如果您使用的是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
这适用于我使用346.46 NVIDIA驱动程序的Ubuntu 14.04。
查找“设备”部分,/etc/X11/xorg.conf
其中包含以下指令之一:
Driver "intel"
Driver "radeon"
Driver "fglrx"
并将以下行添加到该部分:
Option "SwapbuffersWait" "false"
并在vblank_mode
环境变量设置为的情况下运行您的应用程序0
:
$ vblank_mode=0 glxgears
$ echo "0/SyncToVBlank=0" >> ~/.nvidia-settings-rc
nvidia-settings
通过取消选中的选项,可以在GUI中进行相同的更改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
nvidia-settings --load-config-only --assign="SyncToVBlank=0"
以仅更改X显示器的设置(并避免修改配置文件或运行GUI)。运行后,glxgears
您可以运行nvidia-settings --load-config-only
以恢复配置设置-您可能要这样做,因为它是运行X显示器的持久设置(即,不仅限于外壳)。
对于英特尔驱动程序,也有这种方法
禁用垂直同步(VSYNC)
英特尔驱动程序使用三重缓冲进行垂直同步,这可以实现完整的性能并避免撕裂。要关闭垂直同步(例如,进行基准测试),请在主目录中使用此.drirc:
<device screen="0" driver="dri2">
<application name="Default">
<option name="vblank_mode" value="0"/>
</application>
</device>
vblank_mode=0
我现在在运行OpenBSD 5.6的旧Intel i965视频驱动程序上获得了1375.257 FPS。