禁用glxgears的垂直同步

msc*_*ock 78 linux 3d glx

有时您需要检查Linux 3D加速是否真的有效(除了glxinfo输出).这可以通过该glxgears工具快速完成.但是,FPS通常限于显示器垂直刷新率(即60 fps).因此,该工具或多或少变得无用,因为即使是软件渲染也可以在现代CPU上轻松生成60FPS的glxgears.

我发现很难找到一个快速简单的解决方案,我回答了我自己的问题.希望它可以节省您的时间.

msc*_*ock 104

vblank_mode环境变量的伎俩.然后,您应该在现代硬件上获得数百FPS.而且您现在可以将结果与其他人进行比较.

$>   vblank_mode=0 glxgears
Run Code Online (Sandbox Code Playgroud)

  • 值得一提的是,这仅适用于Mesa开源视频驱动程序 (28认同)
  • 正是我在寻找什么.我得到59.984 FPS,这是刷新率.设置`vblank_mode = 0`我现在在运行OpenBSD 5.6的旧版Intel i965视频驱动程序上获得1375.257 FPS. (2认同)

ali*_*i_m 66

如果您使用的是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
Run Code Online (Sandbox Code Playgroud)

这对我来说在Ubuntu 14.04上使用346.46 NVIDIA驱动程序.


noc*_*neo 26

适用于英特尔显卡和AMD/ATI开源图形驱动程序

找到"设备"部分/etc/X11/xorg.conf包含以下指令之一:

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

并将以下行添加到该部分:

Option     "SwapbuffersWait"       "false"
Run Code Online (Sandbox Code Playgroud)

并使用vblank_mode设置为的环境变量运行应用程序0:

$ vblank_mode=0 glxgears
Run Code Online (Sandbox Code Playgroud)

对于Nvidia图形与专有的Nvidia驱动程序

$ echo "0/SyncToVBlank=0" >> ~/.nvidia-settings-rc
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)


小智 8

将其他所有答案放在一起,下面是一个可以使用的命令行:

env vblank_mode=0 __GL_SYNC_TO_VBLANK=0 glxgears
Run Code Online (Sandbox Code Playgroud)

这具有可同时用于Mesa和NVidia驱动程序的优点,并且不需要对配置文件进行任何更改。


小智 6

在nvidia-settings(OpenGL设置选项卡)中禁用"同步到VBlank"复选框对我来说非常有用.


小智 5

我找到了一个适用于英特尔卡和使用 Bumblebee 的 nvidia 卡的解决方案。

> 导出 vblank_mode=0
glxgears
...
optirun glxgears
...
导出 vblank_mode=1