DRI ユーザガイド : 一般的な問題の解決
Previous: 3D アクセラレーションの利用
Next: ハードウェア固有の情報と問題の解決方法

7. 一般的な問題の解決

この節では一般的な問題の原因を調べるのに役立つ情報を示します。 特定のハードウェアに関する追加情報は後述します。

7.1. X サーバの起動

  1. X サーバを起動する前には、適切な 3D カーネルモジュールがインストールされ ているかどうかを確認してください。lsmod を実行し、適切な カーネルモジュールがあるかどうかを見ます。例えば 3dfx ハードウェアの場合 は tdfx があるはずです。
  2. 実行している XFree86 のバージョンが以前のものでなく 4.0 であることを確認 してください。xdpyinfo コマンドの出力結果の最初の方に
                vendor release number:    4000
            
    
    があるかどうかを調べてください。
  3. XF86Config ファイル(普通は /etc/X11/XF86Config にあります)を調べ、 glx, dri モジュールがロードされていることと DRI セクションがあることを確 認してください。

    Software Resources の節で紹介している XF86Config ファイルの例を参考にし てください。

  4. X サーバが起動時に出力するメッセージを調べ、DRM モジュールがロードされて いることを確認してください。Voodoo3 を使っていると以下の例のようになると 思います:
            (==) TDFX(0): Write-combining range (0xf0000000,0x2000000)
            (II) TDFX(0): Textures Memory 7.93 MB
            (0): [drm] created "tdfx" driver at busid "PCI:1:0:0"
            (0): [drm] added 4096 byte SAREA at 0xc65dd000
            (0): [drm] mapped SAREA 0xc65dd000 to 0x40013000
            (0): [drm] framebuffer handle = 0xf0000000
            (0): [drm] added 1 reserved context for kernel
            (II) TDFX(0): [drm] Registers = 0xfc000000
            (II) TDFX(0): visual configs initialized
            (II) TDFX(0): Using XFree86 Acceleration Architecture (XAA)
                    Screen to screen bit blits
                    Solid filled rectangles
                    8x8 mono pattern filled rectangles
                    Indirect CPU to Screen color expansion
                    Solid Lines
                    Dashed Lines
                    Offscreen Pixmaps
                    Driver provided NonTEGlyphRenderer replacement
                    Setting up tile and stipple cache:
                            10 128x128 slots
            (==) TDFX(0): Backing store disabled
            (==) TDFX(0): Silken mouse enabled
            (0): X context handle = 0x00000001
            (0): [drm] installed DRM signal handler
            (0): [DRI] installation complete
            (II) TDFX(0): direct rendering enabled
            
    
  5. X サーバが起動したら、必要な X サーバの機能拡張がロードされていることを 確認してください。xdpyinfo を実行し、機能拡張のリストに
    	  GLX
    	  SGI-GLX
    	  XFree86-DRI
            
    
    というエントリがあることを確認してください。

7.2. 3D アクセラレーションのリンク、実行、確認

X サーバと DRI が正しく起動したことが確認できたら、次は GL ライブラリと ハードウェアドライバが正しく動作することを確認します。

  1. 正しい libGL.so ライブラリが使われることを ldd コマンドで確認します。 /usr/lib か /usr/X11R6/lib ディレクトリに libGL.so があると思います。

    例:

            % ldd /usr/local/bin/glxinfo
                    libglut.so.3 => /usr/local/lib/libglut.so.3 (0x40019000)
                    libGLU.so.1 => /usr/local/lib/libGLU.so.1 (0x40051000)
                    libGL.so.1 => /usr/lib/libGL.so.1 (0x40076000)
                    libXmu.so.6 => /usr/X11R6/lib/libXmu.so.6 (0x402ee000)
                    libXi.so.6 => /usr/X11R6/lib/libXi.so.6 (0x40301000)
                    libm.so.6 => /lib/libm.so.6 (0x40309000)
                    libc.so.6 => /lib/libc.so.6 (0x40325000)
                    libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x40419000)
                    libXt.so.6 => /usr/X11R6/lib/libXt.so.6 (0x404bd000)
                    libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x40509000)
                    libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x40512000)
                    libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x40529000)
                    libvga.so.1 => /usr/lib/libvga.so.1 (0x40537000)
                    libpthread.so.0 => /lib/libpthread.so.0 (0x4057d000)
                    /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
            
    

  2. libGL.so が DRI 機能に対応していることを再確認してもよいでしょう。 "strings libGL.so.1.2 | grep DRI" を実行し、 "XF86DRI" で始めるシンボルを探します。例えば "XF86DRIQueryExtension" 等です。
  3. 安全のため、libGL.so をインストールした後には ldconfig を実行し、 ランタイムローダが適切なライブラリを探せるようにすべきです。
  4. 適切な 3D ドライバが /usr/X11R6/lib/modules/dri/ にあることを確認します。 例えば、3dfx ドライバは tdfx_dri.so という名前であるはずです。
  5. LIBGL_DEBUG 環境変数を設定します。すると libGL.so は DRI ドライバの ロードに失敗するとエラーメッセージを出力するようになります。 どのエラーメッセージも、単独で見ても何が起こっているかわかるはずです。
  6. glxinfo を実行します。"OpenGL renderer string" という行に注意してく ださい。"Mesa DRI" で始まり、これにお使いのハードウェアの名前が続くよう な値があるはずです。
  7. Linux の古い OpenGL アプリケーションの場合は、Mesa の GL ライブラリに リンクされていてそのままでは libGL.so を使わないかもしれません。 場合によっては Mesa の GL ライブラリから libGL.so.1 にリンクを張れば 問題が解決するかもしれません。
            ln -s libGL.so.1 libMesaGL.so.3
            
    
    また、アプリケーションは XFree86 の新しい libGL.so にリンクし直してやら なければならない場合もあるでしょう。

    問題の一端は ldconfig を実行するとライブラリの SONAME フィールド に基づいてリンクの書き直しがこっそり行われることだと報告されています。

これでも問題が解決しなければ、次の節を見てお使いのグラフィックス カードに固有の情報を調べてください。


DRI ユーザガイド : 一般的な問題の解決
Previous: 3D アクセラレーションの利用
Next: ハードウェア固有の情報と問題の解決方法