为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>