禁用 glxgears 的垂直同步

问题描述 投票:0回答:8

有时您需要检查 Linux 3D 加速是否真正起作用(除了

glxinfo
输出)。这可以通过
glxgears
工具快速完成。然而,FPS 通常受限于显示器垂直刷新率(即 60 fps)。因此,该工具或多或少变得毫无用处,因为即使是软件渲染也可以在现代 CPU 上轻松生成 60FPS glxgears。

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

linux 3d glx
8个回答
154
投票

vblank_mode
环境变量可以解决这个问题。然后,您应该在现代硬件上获得数百 FPS。现在您可以将结果与其他人进行比较。

$>   vblank_mode=0 glxgears

112
投票

如果您使用 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 上有效。


31
投票

适用于 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
GUI 中进行相同的更改。或者,如果您只想测试设置而不修改
~/.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

26
投票

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

env vblank_mode=0 __GL_SYNC_TO_VBLANK=0 glxgears

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


7
投票

在 nvidia 设置(OpenGL 设置选项卡)中禁用同步到 VBlank 复选框对我来说很有效。


5
投票

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

> 导出vblank_mode=0
GLX齿轮
...
optirun glxgears
...
导出vblank_mode=1


2
投票

对于intel驱动,也有这个方法

禁用垂直同步 (VSYNC)

英特尔驱动程序使用三重缓冲进行垂直同步,这样可以充分发挥性能并避免撕裂。要关闭垂直同步(例如用于基准测试),请在主目录中使用此 .drirc:

<device screen="0" driver="dri2">
    <application name="Default">
        <option name="vblank_mode" value="0"/>
    </application>
</device>

0
投票

nvidia 设置中有一个“同步到 VBlank”设置。这也将其锁定到垂直同步。关闭它可以修复它。给我买了 29k 的 gtx 1660s

© www.soinside.com 2019 - 2024. All rights reserved.