web-dev-qa-db-ja.com

glxgearsの垂直同期を無効にします

Linux 3Dアクセラレーションが本当に機能しているかどうかを確認する必要がある場合があります(glxinfo出力に加えて)。これは、glxgearsツールによってすばやく実行できます。ただし、FPSは多くの場合、ディスプレイの垂直リフレッシュレート(60 fps)に制限されます。ソフトウェアレンダーでさえ、最新のCPUで60FPS glxgearsを簡単に生成できるため、ツールは多かれ少なかれ役に立たなくなります。

このための迅速で簡単な解決策を得るのはかなり難しいと思いました、私は自分の質問に答えます。うまくいけば時間の節約になります。

75
mschmoock

vblank_mode環境変数がトリックを行います。その後、最新のハードウェアで数百のFPSを取得する必要があります。そして、結果を他の人と比較することができます。

$>   vblank_mode=0 glxgears
102
mschmoock

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で動作します。

62
ali_m

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
nocnokneo

他の回答をすべてまとめると、機能するコマンドラインがあります。

env vblank_mode=0 __GL_SYNC_TO_VBLANK=0 glxgears

これには、MesaドライバーとNVidiaドライバーの両方で動作し、構成ファイルを変更する必要がないという利点があります。

6
Krellan

Nvidia-settings([OpenGL設定]タブ)の[VBlankに同期]チェックボックスを無効にすると、うまくいきます。

6
neutro

Bumblebeeを使用して、Intelカードとnvidiaカードで機能するソリューションを見つけました。

> vblank_mode = 0をエクスポート
glxgears
...
optirun glxgears
...
export vblank_mode = 1

4
olmerg

Intelドライバーの場合、 この方法 もあります

垂直同期を無効にする(VSYNC)

Intelドライバーは、垂直同期にトリプルバッファリングを使用します。これにより、完全なパフォーマンスが得られ、破損が回避されます。垂直同期をオフにするには(ベンチマークなど)、ホームディレクトリでこの.drircを使用します。

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