Gentoo Logo
GentooJP Logo Side

ハードウエア3Dアクセラレーションガイド

Contents:

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
// /usr/src/linuxが現在のカーネルにリンクしていることを確認してください。
# 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
// agpgartをモジュールとしてコンパイルした場合、ドライバやagpgartのためにモジュールをロードする必要はありません。
// これらは自動的にロードされます。
# glxinfo | grep rendering
direct rendering: Yes
// "No"とした場合、3Dアクセラレーションなしになります。
# glxgears
// 秒間フレーム数(FPS)をデフォルトのサイズでテストしてください。できる限りCPUがアイドル状態のときに行ってください。
		

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
// (パスワードの入力を求められたらENTERキーを押してください
# cvs -z3 -d:pserver:anonymous@cvs.dri.sourceforge.net:/cvsroot/dri co xc
// -z3フラグはダウンロード時間を減らすために使われる圧縮をさせ
		る。
		

CVSソースのアップデート 

将来、あなたは、最新の変化を得るために時折DRIソース コードのローカルコピーをアップデートしたがっているでし ょう。これを次のように、処理することができます:

Code listing 5.3

# cd ~/DRI-CVS
# cvs -z3 update -dA xc
// -dフラグは、新しいサブディレクトリを作成させることになります。
// -Aフラグは、ブランチソースではなく、もっとも新しいトランクソースを取ってくることになる。
		

ビルドツリーの構築 

オブジェクトファイルとライブラリファイルを正しくソー スツリーに置くよりむしろ、それらはかわりに並行した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
// i386用:
            #define DefaultGcc2i386Opt -O2
// Alpha用:
            #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
// XF86CardDriversの行にあなたのカードのドライバが示されていることを確認しなさい。
// 3DNow!最適化をMesaとDRIドライバで可能にしたくいのなら、、以下の行を追加すべきである。
#define MesaUse3DNow YES
// AMDプロセッサを使っているなら、このオプションを可能にしなくてもよい。
// DRIは、動作時に3DNow!サポートを探し、そのときにだけ動作するようにする。
		

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
// radeonをあなたのドライバに置き換えてください
		

デフォルトのコンパイルフラグで、コンパイルの間、多 くの警告を得るのは正常です。 ビルドには時間がかかるの で、あなたがあなたの電子メールをチェックするか、または 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"
// TこれはFPSを609から618に増加させる.
     Option     "AGPFastWrite" "True"
// 観測できる効果はないが、コンピュータの不安定さを増すかもしれない。
// もちろん、BIOSで設定する必要があるだろう。
     Option     "EnablePageFlip" "True"
// これは、FPSを618から702に改善する. もちろん「危険」ではあるが、ほとんどの人は問題を報告していない。
     ...
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.参考文献

  1. http://forums.gentoo.org/viewtopic.php?t=46681
  2. http://forums.gentoo.org/viewtopic.php?t=29264
  3. http://dri.sourceforge.net/
  4. http://www.retinalburn.net/linux/dri_status.html



line
Updated June 19 2003
line
Donnie Berkholz
Author

Jorge Paulo
Editor

内藤 郁之
翻訳

line
Summary:  この文書は,XFree-DRMとXFree86を利用してGentoo Linuxで動作する3Dアクセ ラレーションを入手するためのガイドです
line
Copyright 2002-2003 Gentoo Linux Users Group Japan. Questions, Comments, Corrections? Email www@gentoo.gr.jp.