为glxgears禁用垂直同步
有时你需要检查你的Linux 3D加速是否真的在工作(除了glxinfo
输出)。 这可以通过glxgears
工具快速完成。 但是,FPS往往局限于显示垂直刷新率(即60 fps)。 所以这个工具变得或多或less是无用的,因为即使是一个软件渲染器,在现代的CPU上也可以很容易地产生60FPS的glxgears。
我发现很难得到一个快速和简单的解决scheme,我回答我自己的问题。 希望它能节省你的时间。
vblank_mode
环境variables的窍门。 您现在应该在现代硬件上获得几百个FPS。 现在您可以将结果与其他人进行比较。
$> vblank_mode=0 glxgears
如果您使用NVIDIA的闭源驱动程序,则可以使用__GL_SYNC_TO_VBLANK
环境variables即时更改垂直同步模式:
~$ __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上使用346.46 NVIDIA驱动程序。
对于英特尔graphics和AMD / ATI开源graphics驱动程序
find/etc/X11/xorg.conf
中包含以下指令之一的“Device”部分:
-
Driver "intel"
-
Driver "radeon"
-
Driver "fglrx"
并将以下行添加到该部分:
Option "SwapbuffersWait" "false"
并用vblank_mode
环境variables设置为0
运行你的应用程序:
$ vblank_mode=0 glxgears
对于使用Nvidia专有驱动程序的Nvidia显卡
$ echo "0/SyncToVBlank=0" >> ~/.nvidia-settings-rc
通过在X Screen 0 / OpenGL Settings / Sync to VBlank
取消勾选选项,可以在nvidia-settings
GUI中进行相同的更改。 或者,如果您只想在不修改~/.nvidia-settings-rc
文件的情况下testing设置,则可以执行如下操作:
$ 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的设置(OpenGL设置选项卡)中的同步到VBlankcheckbox为我做的伎俩。
我发现了一个解决scheme,在intel卡和nvidia卡上使用Bumblebee工作。
> export vblank_mode = 0
用glxgears
…
optirun glxgears
…
导出vblank_mode = 1
对于英特尔的驱动程序,也有这种方法
禁用垂直同步(VSYNC)
英特尔驱动程序使用三重缓冲进行垂直同步,这可以实现完整的性能并避免撕裂。 要closures垂直同步(例如用于基准testing),请在您的主目录中使用此.drirc:
<device screen="0" driver="dri2"> <application name="Default"> <option name="vblank_mode" value="0"/> </application> </device>