ハードウェア3Dアクセラレーションとは何ですか?なぜ私はそれが必要なのですか?
ハードウェア3Dアクセラレーションを使うと、3次元表現をする際に、貴重なCPUリソースを使う代わりにビデオカードの上のグラフィックスプロセッサーを使うようになります。 これはまた、このハードウェア3Dアクセラレーションがない場合には、MesaソフトウェアレンダリングライブラリというCPUをかなり使用するソフトウェアを使用するので、「ソフトウェアアクセラレーション」に対して「ハードウェアアクセラレーション」と呼ばれます。 Xorgは一般に2Dハードウェアアクセラレーションをサポートしていますが、しばしばハードウェア3Dアクセラレーションを欠いています。 ハードウェア3Dアクセラレーションは、ゲーム、3D CAD、そしてモデリングのような3Dオブジェクトのレンダリングが要求される状況に役立ちます。
どうすればハードウェア3Dアクセラレーションを得ることができますか?
多くの場合、バイナリで提供されるドライバーと、オープンソースのドライバーがあります。 私たちがLinuxを使っていて、その根底にある原理の1つがオープンソースであるので、オープンソースドライバーが好ましいです。 時々、nVidiaカードの様にバイナリドライバーが唯一の選択であることがあります。 バイナリドライバーにはnVidiaカード用のmedia-video/nvidia-kernelとmedia-video/nvidia-glx、Matroxカード用のmedia-video/mgavideo、そしてATIカード用のmedia-video/ati-driversが含まれています。 その他のオープンソースドライバーにはKyroIIカード用のmedia-video/kyro-kernel、そしてより完全にATIのビデオ能力をサポートするmedia-video/ati-gatosが含まれています。
DRIとも言われるDirect Rendering Infrastructureは、グラフィックハードウェアに安全で効率的な方法で直接アクセスできるようにする構成です。 それはXサーバ、いくつかのクライアントライブラリ、そしてカーネルの変更を含みます。 DRIのための最初の主な使用は高速なOpenGLの実装を作成することです。
X11-DRMとは何で、どのようにXorgに関連しているのですか?
X11-DRMはダイレクトレンダリングに必要なカーネルモジュールを追加することによってカードのための3Dアクセラレーションを加えるXorgへの機能強化です。
このガイドはXorgだけではダイレクトレンダリングが動作しない人のための物です。 X11-DRMは3dfx、gamma、intel、matrox、rage128、radeon、mach64、そしてsis300シリーズのドライバーで動作します。 より多くの情報とドキュメントはDRI homepageを見てください。
提案、質問等がありましたら、Donnie Berkholzまでメールしてください。
Xorgの導入方法はXorg Configuration Guide(日本語訳)を参照してください。
あなたのチップセットを詳しく調査して、正しいものを有効にしてください。
コード表示 2.1: AGPチップセットを選択 |
# emerge pciutils; lspci | grep AGP # 00:01.0 PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 03) (ハードウェアが異なるためあなたの出力は上の物と異なるかもしれません) |
チップセットがカーネルによってサポートされていない場合には、カーネル変数にagp=try_unsupportedを渡すことによってうまくいくかもしれません。 これはAGPサポートのためにインテルの包括的なルーチンを使います。 このパラメーターを加えるために、ブートローダー設定ファイルを編集してください。
すべてでないにしろ、ほとんどのカーネルでこれらのオプションが使えるはずです。 ここではgentoo-sources-2.4.20-r5を使用して設定を行いました。
コード表示 2.2: カーネルの設定 |
# ls -l /usr/src/linux lrwxrwxrwx 1 root root 22 May 29 18:20 /usr/src/linux -> linux-2.4.20-gentoo-r5 (/usr/src/linuxが現在のカーネルにリンクするようにしてください) # cd /usr/src/linux # make menuconfig |
コード表示 2.3: make menuconfigオプション |
Processor type and features --->
<*> MTRR (Memory Type Range Register) support
Character devices --->
<M> /dev/agpgart (AGP Support)
[M] Intel 440LX/BX/GX and I815/I820/I830M/I830MP/I840/I845/I850/I860 support
(上の代わりにあなたのチップセットを有効にすること)
< > Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)
|
ダイレクトレンダリングマネージャー(DRM)をoffにしてください。 X11-DRMパッケージ自身が提供してくれます。
コード表示 2.4: カーネルのコンパイルとインストール |
(これは2.4カーネルでの例です) # make dep && make clean bzImage modules modules_install # mount /boot # cp arch/i386/boot/bzImage /boot |
カーネルにbzImage以外の名前を付けたい場合は、/boot/yournameに置き換えてコピーするようにしてください。 grub.confかlilo.confの設定と、LILOを使っているのなら/sbin/liloの実行を忘れずに行ってください。
3. X11-DRMのインストールとダイレクトレンダリングの設定
コード表示 3.1: X11-DRMのインストール |
# emerge x11-drm
|
いくつかのチップセットではUSE="insecure-drivers"を使ったxorg-x11の再ビルドが必要です。 これはxorg-x11-6.8.2ではmach64、unichrome、savageチップセットに、xorg-x11-6.8.99.xではmach64とunichromeに適応されます。 savageユーザはxorg-x11-6.8.99.xを使用すべきではありません。これらはsavageサポートが壊れています。
コード表示 3.2: xorg-x11の再ビルド |
(上記チップセットを使用しているのならUSEフラグにinsecure-driversを追加) # echo "x11-base/xorg-x11 insecure-drivers" >> /etc/portage/package.use # emerge xorg-x11 |
/etc/X11/xorg.confをあなたの好みのエディタで開いてDRIとGLXを有効にするよう編集してください。
コード表示 3.3: xorg.conf |
... Section "Module" Load "dri" Load "glx" ... EndSection ... Section "Device" Driver "radeon" ... EndSection ... Section "dri" Mode 0666 EndSection |
もし違うドライバーを使っているのなら、"radeon"をあなたの物に置き換えてください。
あなたのカードが使用するモジュール名を/etc/modules.autoload.d/kernel-2.6に追加する必要があります。 こうすることで、システムの起動時にモジュールが自動的にロードされることを確実にします。
コード表示 3.4: /etc/modules.autoload.d/kernel-2.6の編集 |
(モジュール名は必要に応じて変更)
intel-agp
|
コンピューターを新しいカーネルでリブートしてください。 あなたがダイレクレンダリングを利用しているかどうかと、それがどれほど良いものか見る時です。
コード表示 4.1: レンダリングのテスト |
# startx (もしagpgartをモジュールとしてコンパイルしていても、ドライバーやagpgartを読み込む必要はありません) (それらは自動的に読み込まれます) # glxinfo | grep rendering direct rendering: Yes (もし"No"といわれたら、3Dアクセラレーションが機能していません) # glxgears (デフォルトサイズで1秒間のフレーム数(FPS)をテストしてください) (x11-drmをインストールする前よりもかなり高い数値が得られるはずです) (CPUができるだけアイドル状態になっているときに実行してください) |
警告: パッケージが動作するならこれは行わないでください。 |
第一にあなたはx11-drmパッケージが作動するかどうか調べなければなりません。 それが動作せずに、またそれが設定ミスによる問題でないことをログで確認済であるなら、あなたはCVSソースを利用したいと考えるでしょう。 CVSのものを完全にビルドしたくない場合には、毎日作成されるのドライバースナップショットも利用できます。
CVSのソースがあなたのカードをサポートしているか確かめるために、DRIがサポートしているカードのリストを確認してください。 もし存在しなくても、似たカードがサポートされているなら、それを試してみてください。
DRIプロジェクトにはCVSソースのコンパイルに関するドキュメントがあります。 ドキュメントを読んで、X.orgのインストールもしくはX.orgのインストールまで進んでください。
システムのためのDRIカーネルモジュールがビルドされたかどうか確認します。
コード表示 5.1: 確認 |
# cd ~/DRI-CVS/build/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel; ls
|
3dfx Voodooならtdfx.oを、Matrox G200/G400ならmga.oを、ATI Rage 128ならr128.oを、ATI Radeonならradeon.oを、Intel i810ならi810.oをそれぞれ見るべきです。 もしDRIカーネルモジュールがビルドに失敗していたなら、正しいバージョンのLinuxカーネルを使っているか確認するべきです。 最新のカーネルでは必ずしもサポートされているとは限りません。
あなたのX.orgインストールの上にインストールします。 xorg-x11をバックアップした方がいいでしょう。
コード表示 5.2: Xorgのバックアップ |
# quickpkg xorg-x11 (これはあなたのXorg-X11パッケージをバックアップします) # make install |
この後は、上記"Xorgの設定"セクションに従ってください。
起動中のカーネルに適当なDRMモジュールを読み込ませるために、カーネルモジュールを/lib/modules/`uname -r`/kernel/drivers/char/drm/にコピーし、modules-updateを実行してXサーバを再起動してください。 このモジュールを使用する予定のカーネルを現在使用中でない場合には、`uname -r`のかわりにカーネルの名前を使用してください。
警告: 最初に既に読み込まれている古いDRIカーネルモジュールをアンロードするようにしてください。 いくらかのDRMモジュールはagpgartモジュールが先に読み込まれている必要があることに注意してください。 |
2~3のオプションはパフォーマンスをデフォルトより30パーセント(もしくはそれ以上)増加させるかもしれません。 /etc/X11/xorg.confでそれらを設定します。
コード表示 6.1: xorg.conf |
Section "Device" Option "AGPMode" "4" (これはFPSを609から618へと増加させました) Option "AGPFastWrite" "True" (これは計測できる効果は得られませんが、コンピュータの安定性を増加させるかもしれません) (BIOSでも設定する必要があります) Option "EnablePageFlip" "True" (これはFPSを618から702へと改善させました。これは"リスクを伴います"が、問題を報告した人はほとんどいません) ... EndSection |
より多くの機能を設定したいなら、DRI Webサイトの機能一覧か、Sourceforgeの機能のリストを確認してください。
動作しません。私はカーネルを再コンパイルもしくは新しい物へと置き換えただけです。
カーネルを再コンパイルしたり新しい物へと置き換えたときはいつでも、カーネルモジュールを再ビルドする必要があります。 xorg-x11を再mergeする必要はありませんが、x11-drmを再mergeする必要があるということに注意してください。
動作しません。レンダリングを得ることができず、なぜなのか伝えることができません。
Xサーバを起動させる前にinsmod radeonを試してみてください。 また、agpgartをモジュールの代わりにカーネル内部にビルドしてみてください。
startxをすると、こんなエラーが出ました: "[drm] failed to load kernel module agpgart"
これはagpgartをモジュールの代わりにカーネル内部にコンパイルしたためです。 問題がないのなら無視してください。
ダイレクトレンダリングが動作せず、/var/log/Xorg.0.logにドライバーのバージョンが低すぎるというエラーがありました
x11-drmドライバーを使っていません。 DRMとドライバーをカーネル内部にコンパイルしたかどうか確認してください。それをするべきではありません。
ati-gatosドライバーを見てください。emerge -s gatos。
動作しません。私のカードはとても新しくてすごいので、少しもサポートされていません。
バイナリドライバーを試してみてください。 atiドライバーなら、リストがhttp://www.schneider-digital.de/html/download_ati.phpにあります。 それらがサポートしていないなら、fbdevを使ってください。 遅いですが、動作はします。
"Device"セクションでForcePCIModeを有効にしてください。
コード表示 7.1: ForcePCIModeを有効にする |
Option "ForcePCIMode" "True" |
このドキュメントの内容は Creative Commons - Attribution / Share Alikeライセンスです。