nvidia用ドライバに関するインストール方法、チューニング方法、workaround をまとめます。
環境変数(画質関連の設定)
__GL_FSAA_MODE
FSAA(full screen anti alias) の初期設置値を変えたい時は
export __GL_FSAA_MODE=5
などとします。FSAAを使うと画質が向上しますが、描画速度は低下します。
__GL_LOG_MAX_ANISO
Anisotropic Texture filtering の設定を行います。値が0の場合は off、1の場合は 2x、2の場合は4x、と 2^nでfiltering が行われます。
__GL_YIELD
libGL.so内部の busy loop 中の動作を切り替えます。
描画速度とCPU負荷にはトレードオフがありますが、その優先順位を設定する際に使えます。
実際の動作はkernelの設定や、マシンのスペックに大きく依存しますが、設定値と動作の関係はおおよそ次のようになります。
- __GL_YIELD未設定時 sched_yeild()をコールする。CPU負荷を下げることを優先します。
- __GL_YIELD=NOTHING sched_yeild()をコールしない。CPU負荷はあがりますが描画速度は向上します。
- __GL_YIELD=USLEEP usleep(0) をコールする。NOTHINGよりはCPU負荷は低いですが、それなりに描画速度が向上します。
環境にもよりますが(例外がたくさんあるので注意してください)、一般に
- 描画速度(というか応答速度)は、速い順に NOTHING > USLEEP >= 未設定
- CPU負荷は、負荷が低い順に 未設定 <= USLEEP < NOTHING
となる筈です。
__GL_ALLOW_UNOFFICIAL_PROTOCO
裏コマンドを有効にします。
__GL_HEAP_ALLOC_LIMIT
libGL.so が使うメモリ量に制限をかけます。
たとえば 20MB に制限したい場合は
$ export __GL_HEAP_ALLOC_LIMIT="20 MB"
とします。デバッグに便利ですね。
__GL_SHADER_DISK_CACHE
環境変数(正常に動作しない場合のworkaround的な変数達)
__GL_SINGLE_THREADED
OpenGLを使うアプリケーションが起動時にSeg-Vで落ちる場合は、 環境変数 __GL_SINGLE_THREADED を 1 に設定するとクラッシュを回避できる場合があります。
インストールに関する Tips (debianの場合)
debian の場合は apt-get でインストールできます。
NVidia のドライバは、基本的に最新版の方が安定しています。debian の場合、最新版のドライバはまずexperimental に配置されるので、apt-get は -t experimental をつけるのがオススメです。
$ apt-get install nvidia-kernel-dkms -t experimental