NVIDIA Accelerated Graphics Driver for Linux の tips

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_SYNC_TO_VBLANK

1を設定するとOpenGLフレームバッファの切り替えが、ディスプレイの垂直同期と同期するようになります。

__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
__GL_SHADER_DISK_CACHE_PATH

GLSLで書かれた shader のコンパイルキャッシュを使うかどうか、およびキャッシュデータを保存するディレクトリを指定します。

デフォルトではコンパイルキャッシュは有効で、データは  $HOME/.nv/GLCache に保存されています。

GLSLで開発を行なっていると、残念なことに時々コンパイルキャッシュがミスヒットするので、そのOpenGLを使ったプログラムをする人は ~/.bashrc あたりで

export __GL_SHADER_DISK_CACHE=0

としておいたほうが幸せになります。

環境変数(正常に動作しない場合のworkaround的な変数達)

__GL_SINGLE_THREADED

OpenGLを使うアプリケーションが起動時にSeg-Vで落ちる場合は、 環境変数 __GL_SINGLE_THREADED を 1  に設定するとクラッシュを回避できる場合があります。

__GL_NO_DSO_FINALIZER

OpenGLを使うアプリケーションが終了時にSeg-Vで落ちる場合は、 環境変数 __GL_NO_DSO_FINALIZER を 1  に設定するとクラッシュを回避できる場合があります。

__GL_ExtensionStringVersion

OpenGLのバージョンを一時的に下げて使いたい場合は、環境変数 __GL_ExtensionStringVersion を使います

インストールに関する Tips (debianの場合)

debian の場合は apt-get でインストールできます。

NVidia のドライバは、基本的に最新版の方が安定しています。debian の場合、最新版のドライバはまずexperimental に配置されるので、apt-get は -t experimental をつけるのがオススメです。

$ apt-get install nvidia-kernel-dkms -t experimental

NVIDIA純正のインストーラに関する Tips

インストーラのファイルを展開する
$ cd /tmp
$ sh ./NVIDIA-Linux-x86_64-304.51.run -x
カーネルのバージョンを指定して、モジュール nvidia.ko だけコンパイル

たとえば /lib/modules/2.6.32.3/ 用に module だけビルドしてインストールする場合

# sh ./NVIDIA-Linux-x86-173.14.22-pkg1.run --no-x-check -k 2.6.32.3 --kernel-module-only

workaroud 的なTips

youtube の動画の色が変

nvidiaのドライバと flash player の組み合わせによっては、RGBが入れ替わった動画が再生される場合があります。
同様に mplayer やxineなどでも色が変になる場合があります。

この場合はとりあえず VDPAU_DRIVER 環境変数を使うと問題が回避できます。

たとえば firefox を使っている場合は、一度すべての firefox を終了させて、それから

$ env VDPAU_DRIVER=trace  firefox

としてfirefoxを起動しなおしてみましょう。