Gentoo Logo

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

目次:

1.  始めに

ハードウェア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とは何ですか?

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までメールしてください。

2.  Xorgのインストールとカーネルの設定

Xorgのインストール

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のインストールとダイレクトレンダリングの設定

X11-DRMのインストール

コード表示 3.1: X11-DRMのインストール

# emerge x11-drm

Xorg.confの設定

いくつかのチップセットでは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"をあなたの物に置き換えてください。

modules.autoload.dの変更

あなたのカードが使用するモジュール名を/etc/modules.autoload.d/kernel-2.6に追加する必要があります。 こうすることで、システムの起動時にモジュールが自動的にロードされることを確実にします。

コード表示 3.4: /etc/modules.autoload.d/kernel-2.6の編集

(モジュール名は必要に応じて変更)
intel-agp

4.  3Dアクセラレーションのテスト

新しいカーネルのリブート

コンピューターを新しいカーネルでリブートしてください。 あなたがダイレクレンダリングを利用しているかどうかと、それがどれほど良いものか見る時です。

コード表示 4.1: レンダリングのテスト

# startx
(もしagpgartをモジュールとしてコンパイルしていても、ドライバーやagpgartを読み込む必要はありません)
(それらは自動的に読み込まれます)
# glxinfo | grep rendering
direct rendering: Yes
(もし"No"といわれたら、3Dアクセラレーションが機能していません)
# glxgears
(デフォルトサイズで1秒間のフレーム数(FPS)をテストしてください)
(x11-drmをインストールする前よりもかなり高い数値が得られるはずです)
(CPUができるだけアイドル状態になっているときに実行してください)

5.  CVSソースを利用

警告: パッケージが動作するならこれは行わないでください。

CVSが必要ですか?

第一にあなたはx11-drmパッケージが作動するかどうか調べなければなりません。 それが動作せずに、またそれが設定ミスによる問題でないことをログで確認済であるなら、あなたはCVSソースを利用したいと考えるでしょう。 CVSのものを完全にビルドしたくない場合には、毎日作成されるのドライバースナップショットも利用できます。

CVSソースはあなたのカードをサポートしていますか?

CVSのソースがあなたのカードをサポートしているか確かめるために、DRIがサポートしているカードのリストを確認してください。 もし存在しなくても、似たカードがサポートされているなら、それを試してみてください。

CVSの指示に従う

DRIプロジェクトにはCVSソースのコンパイルに関するドキュメントがあります。 ドキュメントを読んで、X.orgのインストールもしくはX.orgのインストールまで進んでください。

CVSのインストール

システムのための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モジュールが先に読み込まれている必要があることに注意してください。

6.  パフォーマンスの調整

より多くのダイレクトレンダリングを得る

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の機能のリストを確認してください。

7.  トラブルシューティング

動作しません。私はカーネルを再コンパイルもしくは新しい物へと置き換えただけです。

カーネルを再コンパイルしたり新しい物へと置き換えたときはいつでも、カーネルモジュールを再ビルドする必要があります。 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とドライバーをカーネル内部にコンパイルしたかどうか確認してください。それをするべきではありません。

Radeonを使っていて、TV-Outが必要です

ati-gatosドライバーを見てください。emerge -s gatos

動作しません。私のカードはとても新しくてすごいので、少しもサポートされていません。

バイナリドライバーを試してみてください。 atiドライバーなら、リストがhttp://www.schneider-digital.de/html/download_ati.phpにあります。 それらがサポートしていないなら、fbdevを使ってください。 遅いですが、動作はします。

PCIカードを使っていて動作しません。助けて!

"Device"セクションでForcePCIModeを有効にしてください。

コード表示 7.1: ForcePCIModeを有効にする

Option "ForcePCIMode" "True"

8.  感謝

  1. カーネルの変更や再コンパイルに関するトラブルシューティングを提案してくれたChristopher Webber氏
  2. XF86ConfigのdriとDRI間の一貫性を提案してくれたSteve氏

9.  参考文献

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


印刷

ページの更新日 2006年 2月 1日

この翻訳はすでにメンテナンスされていません。

要約: このドキュメントはGentoo LinuxでXorgとX11-DRMを利用して3Dアクセラレーションを行うためのガイドです。

Donnie Berkholz
Author

Jorge Paulo
Editor

小林弘樹
翻訳

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.