Linux 3Dアクセラレーションが本当に機能しているかどうかを確認する必要がある場合があります(glxinfo
出力に加えて)。これは、glxgears
ツールによってすばやく実行できます。ただし、FPSは多くの場合、ディスプレイの垂直リフレッシュレート(60 fps)に制限されます。ソフトウェアレンダーでさえ、最新のCPUで60FPS glxgearsを簡単に生成できるため、ツールは多かれ少なかれ役に立たなくなります。
このための迅速で簡単な解決策を得るのはかなり難しいと思いました、私は自分の質問に答えます。うまくいけば時間の節約になります。
vblank_mode
環境変数がトリックを行います。その後、最新のハードウェアで数百のFPSを取得する必要があります。そして、結果を他の人と比較することができます。
$> vblank_mode=0 glxgears
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で動作します。
次のディレクティブのいずれかを含む/etc/X11/xorg.conf
の「デバイス」セクションを見つけます。
Driver "intel"
Driver "radeon"
Driver "fglrx"
そして、そのセクションに次の行を追加します。
Option "SwapbuffersWait" "false"
そして、vblank_mode
環境変数を0
に設定してアプリケーションを実行します。
$ vblank_mode=0 glxgears
$ 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
他の回答をすべてまとめると、機能するコマンドラインがあります。
env vblank_mode=0 __GL_SYNC_TO_VBLANK=0 glxgears
これには、MesaドライバーとNVidiaドライバーの両方で動作し、構成ファイルを変更する必要がないという利点があります。
Nvidia-settings([OpenGL設定]タブ)の[VBlankに同期]チェックボックスを無効にすると、うまくいきます。
Bumblebeeを使用して、Intelカードとnvidiaカードで機能するソリューションを見つけました。
> vblank_mode = 0をエクスポート
glxgears
...
optirun glxgears
...
export vblank_mode = 1
Intelドライバーの場合、 この方法 もあります
垂直同期を無効にする(VSYNC)
Intelドライバーは、垂直同期にトリプルバッファリングを使用します。これにより、完全なパフォーマンスが得られ、破損が回避されます。垂直同期をオフにするには(ベンチマークなど)、ホームディレクトリでこの.drircを使用します。
<device screen="0" driver="dri2">
<application name="Default">
<option name="vblank_mode" value="0"/>
</application>
</device>