ハードウエア3Dアクセラレーションガイド
1.序文
ハードウェア3Dアクセラレーションとは何ですか、そして、私はなぜそれを欲するのですか?
3Dイメージを描くために貴重なCPUリソースを利用する代
わりに、ハードウェア3Dアクセラレーションで、立体的な表
現を描くためにあなたのビデオカードのグラフィックプロセッ
サを利用する。また、3Dアクセラレーションなしであなたの
CPUは、Mesaソフトウエア描画ライブラリを用いてCPUがすべ
てを描くことを強制することになり、かなりの処理能力を必
要とするので、それは「ソフトウエアアクセラレーション」
のかわりに「ハードウエアアクセラレーション」と呼ばれま
す。XFree86は2Dハードウェアアクセラレーションを通常サ
ポートするが、それはしばしばハードウェア3Dアクセラレー
ションが欠けています。 立体的なハードウェアアクセラレー
ションはゲーム、3D CAD、およびモデリングなどの3Dオブジェ
クトをレンダリングするのを必要とする状況で有益です。
私はどのようにハードウェア3Dアクセラレーションを得ますか?
多くの場合、バイナリーとオープンソースの両方のドラ
イバーがあります。 我々はLinuxを使用しているので、オー
プンソースのドライバーは望ましく、そして、オープンソースはその基本的な原則の1つです。時々、バイナリドライバーはnVidiaのカードなどの場合には、唯一のオプションです。
バイナリドライバーはMatroxのためのmedia-video/mgavideoとATIカードのためのmedia-video/ati-driversを含みます。 他のオープンソースのドライバーはKyroIIカードのためのmedia-video/kyro-kernelとATIカードのためのmedia-video/ati-gatosを含みます。media-video/ati-gatosは、ATIのビデオ能力をより全面的にサポートするのを目指します。
DRIとは何ですか?
DRIとしても知られているDirect Rendering Infrastructure (dri.sourceforge.net)は,安全で効率的な方法でグラフィックスハードウェアに直接アクセスを許すための枠組みです。それはXサーバと、そして、いくつかのクライアントライブラリと、そして、カーネルへの変更を含んでいます。 DRIの最初の主用途は速いOpenGL実装を作成することです。
XFree-DRMは何ですか、そして、それはどのように通常のXFree86に関連しますか?
XFree-DRMは、XFree86がアクセラレーションを提供しないカードへ3Dアクセラレーションを加えるためのXFree86の機能強化です。
目的
このガイドはダイレクト描画をまさしくXFreeで動作させることができない人々のためのものです。 XFree-DRMは3dfx、gamma、i8x0、matrox、rage128、radeon、およびsisドライバーで動作しています。 また、CVSソースにはmach64の何らかのサポートがあります。-- このサイトと howtoを調べてください。2.4カーネルのDirect Rendering Manager(DRM)がXFree 4.3をサポートしないので、xfree-drmパッケージが必要です。 あなたが2.5カーネルを使用しているならば、そのDRMはXFree 4.3をサポートします; したがって、あなたのカードが非常に新くダイレクト描画を得られないときは、このガイドを苦にしないでください。 より多くのインフォメーションとドキュメンテーションに関して DRIホームページを見てください。
フィードバック
提案,質問等はDonnie
Berkholzあてに電子メールを送ってください.
2.XFree86のインストールとカーネルの設定
XFree86のインストール
Code listing 2.1 |
# emerge x11-base/xfree
|
カーネルの構成
チップセットを調べてそれを有効にしてください
Code listing 2.2: Checking your AGP chipset |
# emerge pciutils; lspci | grep AGP
# 00:01.0 PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 03)
|
すべてではないが、多くのカーネルに、これらのオプションがあるはずです。これは、gentoo-sources-2.4.20-r5を使用することで構成されました。
Code listing 2.3 |
# ls -l /usr/src/linux
lrwxrwxrwx 1 root root 22 May 29 18:20 /usr/src/linux -> linux-2.4.20-gentoo-r5
# cd /usr/src/linux
# make menuconfig
|
Code listing 2.4: make menuconfigオプション |
Processor type and features --->
<*> MTRR (Memory Type Range Register) support
Character devices --->
<*> /dev/agpgart (AGP Support)
[*] Intel 440LX/BX/GX and I815/I820/I830M/I830MP/I840/I845/I850/I860 support
[ ] Direct Rendering Manager (XFree86 DRI support)
|
Direct Rendering Manager(DRM)がオフであることを確認してください。XFree-DRMパッケージはそれ自身のものを提供するでしょう。 カーネルのバージョンはXFree 4.2のためのものです。
カーネルのコンパイルとインストール
Code listing 2.5: カーネルのコンパイルとインストール |
# make dep && make clean bzImage modules modules_install
# mount /boot
# cp arch/i386/boot/bzImage /boot
|
あなたのカーネルがbzImage以外の何かに命名されたものが欲しい
ならば、必ず代わりに/boot/yournameにコピーしてください。
grub.confのセットアップ、またはLILOを使う場合は、
lilo.confのセットアップを行ない、/sbin/liloを実行するのを忘れないでください。
3. XFree-DRMのインストールとダイレクト描画の構成
XFree-DRMのインストール
Code listing 3.1 |
# ACCEPT_KEYWORDS="~x86" emerge xfree-drm
|
XF86Configの構成
/etc/X11/XF86Configをあなたの好きなテキストエディタで開き、それを編集して、DRIとGLXを有効にしてください。
Code listing 3.2: XF86Config |
...
Section "Module"
Load "dri"
Load "glx"
...
EndSection
...
Section "Device"
Driver "radeon"
...
EndSection
...
Section "DRI"
Mode 0666
EndSection
|
違うドライバを使用しているならば、"radeon"をあなたのものに置き換えてください。
4.3Dアクセラレーションのテスト
新しいカーネルへのリブート
新しいカーネルでコンピュータをリブー
トしてください。 ダイレクト描画があるか、それ
がどれくらい良いかを見るときです。
Code listing 4.1: Testing rendering |
# startx
# glxinfo | grep rendering
direct rendering: Yes
# glxgears
|
5.CVSソースの使用
Warning: パッケージがうまく動いたならば、この作業をしないでください。 |
Note: 本来、CVSソースはいつも変化します。 あなたの構成はちょう
ど以下のものと同様でないかもしれません。 |
CVSは必要ですか?
まず最初に、xfree-drmパッケージがうまくいくかどうかチェックしなければなりません。 そうでなく、非常に新しいカードを持っているならば、あなたは、CVSソースを考慮したがっているかもしれません。 xfree-drmパッケージは現在、少なくともRadeon9000をサポートします。
CVSソースはあなたのカードをサポートしますか?
CVSがあなたのカードをサポートするか調べるためにDRIのサポートするカードリストをチェックしてください。そうでない場合は、同様のカードのサポートをしているときには、それを試してください。
Warning: 「リナックス2.4がagp 8xをサポートしないので、私
はbackportを見つけに行かなければなりませんでした。
backportは動作するが、うまくパッチが当たらず、2.4.21を
必要とした((ebuildではなく)tarボールからのvanillaだけ
で作業)。まず、kernel.orgから2.4.20-2.4.21のパッチを手
に入れてください(次に、パッチを入手してください)。メー
リングリストのどこかにあります。きれいに、パッチはあた
りません。ひとつのファイルpci_ids.hファイルがこけます。
しかし、実際にファイルと拒絶リストを読むと、簡単に修正
できることがわかります。しかし、それは、ロードします、
xfree-drmと共にvideoで1600x1200を(dgaの不足の少し遅い
b/cであるが)を提供します。」(#gentooの上のSanityInAnarchy) |
Important: このパッチは少しトリッキーに動作するが、ここに、リンクがあります。BIOSで8XAGPを無効にすることができるならば、それを4Xに変えてください。そうすれば、このパッチを必要とすることはありません。 |
CVSソースのインストール
このガイドの「カーネルのコンパイルとインストール」に従ってください。 次に、我々は、 DRIコンパイルガイドのステップ6に移動して、ステップ8.3までそれにしたがいます。
匿名CVSダウンロード
CVSファイルを格納するためのディレクトリを作成してください:
Code listing 5.1 |
# cd ~
# mkdir DRI-CVS
|
CVSソースのチェックアウト
Code listing 5.2 |
# cd ~/DRI-CVS
# cvs -d:pserver:anonymous@cvs.dri.sourceforge.net:/cvsroot/dri login
# cvs -z3 -d:pserver:anonymous@cvs.dri.sourceforge.net:/cvsroot/dri co xc
|
CVSソースのアップデート
将来、あなたは、最新の変化を得るために時折DRIソース
コードのローカルコピーをアップデートしたがっているでし
ょう。これを次のように、処理することができます:
Code listing 5.3 |
# cd ~/DRI-CVS
# cvs -z3 update -dA xc
|
ビルドツリーの構築
オブジェクトファイルとライブラリファイルを正しくソー
スツリーに置くよりむしろ、それらはかわりに並行したebuildツリーに入れられます。ビルドツリーは、lndirコマンドで作られます:
Code listing 5.4 |
# cd ~/DRI-CVS
# ln -s xc XFree40
# mkdir build; cd build
# lndir -silent -ignorelinks ../XFree40
|
ビルドツリーはCVSソースツリーに指し戻すシンボリックなリンクで居住されるでしょう。 高度なユーザは、異なったオプションでコンパイルして、テストするために数個のビルドツリーを持つでしょう。
host.defファイルの編集
~/DRI-CVS/build/xc/config/cf/host.defファイルは、XFree86のビルドプロセスを構成するのに使用されます。 あなたは、あなたのビルドオプションをカスタマイズするか、またはあなたの特定のシステム構成のために調整をするようにそれを変更することができます。 デフォルトのhost.defファイルはこのようなものです:
Code listing 5.5 |
#define DefaultCCOptions -Wall
#define DefaultGcc2i386Opt -O2
#define DefaultGcc2AxpOpt -O2 -mcpu=ev6 (or similar)
#define LibraryCDebugFlags -O2
#define BuildServersOnly YES
#define XF86CardDrivers vga tdfx mga ati i810
#define LinuxDistribution LinuxRedHat
#define DefaultCCOptions -ansi GccWarningOptions -pipe
#define BuildXF86DRI YES
/* Optionally turn these on for debugging */
/* #define GlxBuiltInTdfx YES */
/* #define GlxBuiltInMga YES */
/* #define GlxBuiltInR128 YES */
/* #define GlxBuiltInRadeon YES */
/* #define DoLoadableServer NO */
#define SharedLibFont NO
|
ProjectRoot変数は、XFree86ファイルがどこにインストー
ルされるかを指定します。 我々は、DRIファイルをあなたの
既存のXFree86インストールの上にインストールすることを勧めます - それは、一般的には、そうするのが安全で、誤りがちではありません。この方針はわれわれが以前は推薦していたものと異なっています。
If XFree86 4.xが/usr/X11R6/にインストールされないならば、あなたは以下をhost.defファイルに追加しなければならないでしょう:
Code listing 5.6 |
#define ProjectRoot pathToYourXFree86installation
#define MesaUse3DNow YES
|
MesaとDRIドライバーでSSE最適化を可能にしたいならば、
あなたはLinux 2.4.xカーネルにアップグレードしなければ
なりません。 Mesaは、SSEがあなたのプロセッサとあなたの
オペレーティングシステムの両方によってサポートされるの
を確かめるだろうが、DRIの中にMesaをビルドするために、
あなたは、/usr/src/linuxにLinux 2.4.xカー
ネルヘッダを持つ必要があります。
/usr/src/linuxにLinuxカーネルの以前のバー
ジョンがある状態であなたがSSE最適化を可能にするならば,
Mesaはコンパイルされないでしょう。 警告されています。 2.4.xカーネルがあるならば、あなたは以下を加えるべきです:
Code listing 5.7 |
#define MesaUseKatmai YES
|
XFree86/DRIツリーのコンパイル
完全なDRIツリーをコンパイルするために:
Code listing 5.8 |
# cd ~/DRI-CVS/build/xc/
# make World >& world.log
|
1人のユーザが、また、以下をするのも必要であるかもしれないと提案します:
Code listing 5.9 |
# cd ~/DRI-CVS/build/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel
# make -f Makefile.linux radeon.o
|
デフォルトのコンパイルフラグで、コンパイルの間、多
くの警告を得るのは正常です。 ビルドには時間がかかるの
で、あなたがあなたの電子メールをチェックするか、または
slashdotを訪問しても差し支えないでしょう。
Warning: -jオプションをmakeで使用しないでください(すなわち、distccを使用しないでください)。 それは、XFree86/DRIと共に動作しないと報告されています。 |
テキストエディタを使用して、誤りがないかどうかパターン***を捜すことによって、world.logを調べてください。
ドライバのインストール
あなたのシステムのためのDRIカーネルモジュールが造られたのを確かめてください:
Code listing 5.10 |
# 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.ooを見るべきです。インテルi810に関しては、あなたはi810.oを見るべきです。DRIカーネルモジュールをビルドするのに失敗したら、あなたは、Linuxカーネルの正しいバージョンを使用しているのを確かめるべきです。最新のカーネルはいつもサポートされるというわけではありません。
あなたのXFree86インストールにあなたのドライバーファイルのすべてをコピーしてください。 あなたは、取り替えられたファイルをバックアップするのを願うかもしれません。 これはRadeonカードを使用する例です。 別のカードを持っているならば、適切なファイルをコピーしてください。 それらが何であるかを知らないならば、あなたがそこにあるものを見るためにそれらをコピーするディレクトリをチェックしてください。
Code listing 5.11 |
# cd ~/DRI-CVS/build/xc/exports/lib/modules/
# cp dri/r200_dri.so /usr/X11R6/lib/modules/dri/
# cp drivers/atimisc_drv.o /usr/X11R6/lib/modules/drivers/
# cp drivers/radeon_drv.o /usr/X11R6/lib/modules/drivers/
# cp extensions/libdri.a /usr/X11R6/lib/modules/extensions/
# cp linux/libdrm.a /usr/X11R6/lib/modules/linux/
|
「XF86Configの設定」のセクションに従ってください
あなたの動作しているカーネルにおける適切なDRMモジュールをロードするには、カーネルモジュールを/lib/modules/`uname -r`/kernel/drivers/char/drm/にコピーしてください。modules-updateを実行して、Xサーバを再起動してください。カーネルを実行していないならば、それを使って、`uname -r`,カーネルの名前を使ってください。
Warning: すでにロードされている古いDRIカーネルモジュール
をまずアンロードすることを確認してください。あなたが最
初に既にロードされるかもしれないどれより古いDRIカーネ
ルモジュールも落すのを確実にしてください。 いくつかのDRMモジュールが、agpgartモジュールが最初にロードされるのを必要とするのに注意してください。 |
6.パフォーマンスの調整
ダイレクト描画を最大限に活用してください
いくつかのオプションがデフォルトについて性能を最大30パーセント(またはそれ以上)向上させるかもしれません。/etc/X11/XF86Configにそれらを設定してください。
Code listing 6.1: XF86Config |
Section "Device"
Option "AGPMode" "4"
Option "AGPFastWrite" "True"
Option "EnablePageFlip" "True"
...
EndSection
|
さらに多くの機能を設定したいならば、DRIウェブサイトのfeatures
listingを調べてください。
7.トラブルシューティング
動作しません。 画面に何も描画されません、そして、理由がわかりません。
insmod radeon をXサーバの起動前に試してください。また、agpgartをカーネルに組み込む代わりにモジュールとしてビルドしてください。
startxを実行すると、このようなエラーになります: "[drm] failed to load kernel module agpgart"
それはあなたがモジュールではなくカーネルにagpgartをコンパイルしたからです。無視してください。
ダイレクト描画は動作していません、そして、
/var/log/XFree86.0.logでは、ドライバーバージョンが低いというエラーがあります。
xfree-drmドライバを使用していないからです。カーネルにDRMとドライバーをコンパイルしたかチェックしてください、そうなっていないはずです。
私はRadeonを持っています、そして、テレビ出力をしたいです。
ati-gatosドライバーをチェックしてください。emerge -s gatos.
動作しません。 私のカードが非常に信じられないほど新しくて、クールであるので、それは全くサポートされていません。.
バイナリのドライバーを試してください。 ati-driversにおいて、リストがhttp://www.schneider-digital.de/html/download_ati.htmlにあります。 それらがサポートしないならば、VESAを使用してください。遅いが、それは動作します。 彼らがすぐあなたのカードをサポートするので、将来、ドライバーをチェックしてください。
PCIカードを持っていますが,動きません.助けて!
"Device"セクションでForcePCIModeを有効にします.
Code listing 7.1 |
Option "ForcePCIMode" "True" |
8.参考文献
- http://forums.gentoo.org/viewtopic.php?t=46681
- http://forums.gentoo.org/viewtopic.php?t=29264
- http://dri.sourceforge.net/
- http://www.retinalburn.net/linux/dri_status.html
|