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

From Gentoo Wiki
< Xorg
Jump to:navigation Jump to:search
This page is a translated version of the page Xorg/Hardware 3D acceleration guide and the translation is 100% complete.
Other languages:
English • ‎español • ‎italiano • ‎русский • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어

この文書はGentooのXorgでDRMを使用して3Dアクセラレーションを動作させるためのガイドです。

はじめに

ハードウェア3Dアクセラレーションとは何ですか、またどうしてそれが必要なのですか?

ハードウェア3Dアクセラレーションにより、3Dレンダリングは、3D画像を描画する貴重なCPUリソースを使用する代わりに、ビデオカードのグラフィックプロセッサを使用します。 この3Dアクセラレーションがなければ、CPUはMesaソフトウェアレンダリングライブラリを使用してすべてを描画する必要があり、かなりの処理能力を消費するため、「ソフトウェアアクセラレーション」ではなく「ハードウェアアクセラレーション」とも呼ばれます。

Xorgは、大抵は2Dハードウェアアクセラレーションに対応していますが、しばしばハードウェア3Dアクセラレーションを欠いています。3次元のハードウェアアクセラレーションは、ゲームや3D CAD、そしてモデリングのような、3Dのオブジェクトのレンダリングが必要になる状況において役に立ちます。

ハードウェア3Dアクセラレーションを動作させる

多くの場合、バイナリとオープンソースの両方のドライバーが存在します。 我々はLinuxを使用しており、オープンソースはその基本原理の1つであるため、オープンソースドライバーが望ましいです。 場合によっては、特にグラフィックカードが新しく、その機能をサポートするオープンソースドライバーがまだ作成されていない場合は、バイナリドライバーが唯一のオプションです。 バイナリドライバーには、nVidiaカード用のx11-drivers/nvidia-driversと、古いAMD/ATIカードの場合はx11-drivers/xf86-video-ati(以前はx11-drivers/ati-driversでした)、新しいAMDカードの場合、dev-libs/amdgpu-pro-openclが含まれています。

DRIとは何ですか?

ダイレクト・レンダリング・インフラストラクチャはDRIとして知られる、グラフィックハードウェアに安全、効率的に直接アクセスすることが出来るフレームワークです。それはXサーバ、いくつかのクライアントライブラリ、カーネルへの変更を含みます。DRIの一番主要な利用法は高速なOpenGLの実装の作成です。

DRMとは何ですか?通常のXorgとどのように関連しますか?

DRM (ダイレクト・レンダリング・マネージャ)は、ダイレクトレンダリングに必要なカーネルモジュールを追加することにより、グラフィックカードのための3Dアクセラレーションを追加するXorgの付加機能です。

目的

このガイドはXorgのみでダイレクトレンダリングが動作しない人々のためのものです。DRMは以下のドライバで動作します。

より詳細な情報とドキュメントについてはDRI ホームページを見てください。

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

Xorgのインストール

Xorgを動作させるためにはXorg 設定ガイドを見てください。

カーネルの設定

あなたのチップセットを調査して、有効にしてください。

root #emerge --ask sys-apps/pciutils
root #lspci | grep AGP
# 00:01.0 PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 03)

ハードウェアが異なることにより、上記の出力は実際の出力と一致するとは限りません。

もしチップセットがカーネルによって対応されていない場合、カーネルのパラメータとしてagp=try_unsupportedを渡すと何らかの成功が得られるかもしれません。これはAGPへの対応にIntelの一般的なルーチンを使用します。このパラメータを追加するには、ブートローダの設定ファイルを編集してください。

全てではないとしても、ほとんどのカーネルはこれらのオプションを持っているはずです。以下の例は、通常のsys-kernel/gentoo-sourcesのカーネルを使用して設定しました。

root #ls -l /usr/src/linux
lrwxrwxrwx 1 root root 22 2007-02-14 20:12 /usr/src/linux -> linux-2.6.18-gentoo-r4

/usr/src/linuxが最近のカーネルにリンクするを確認してください。

user $eselect kernel list

または

root #cd /usr/src/linux
root #make menuconfig


KERNEL ハードウェア3Dアクセラレーションのオプション
Processor type and features --->
<*> MTRR (Memory Type Range Register) support
Device drivers --->
   Graphics support --->
   <M> /dev/agpgart (AGP Support) --->
      (The agpgart option is not present on 64-bit kernels;
      just choose the appropriate chipset support.)
      <M> Intel 440LX/BX/GX, I8xx and E7x05 support
      (Enable the appropriate chipset instead of the above.)
   <M> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
      <M> (Select the appropriate  graphics card from the list)

カーネルのコンパイルとインストール

root #make && make install && make modules_install

grub.conflilo.conf かの設定してください。

LILOを使用する場合は、次のコマンドを発行します:

root #lilo

もしGRUB2を使用している場合、実行してください:

root #grub-mkconfig -o /boot/grub/grub.cfg

videoグループへ適切なユーザを追加する

次に、適切なユーザをvideoグループに追加します:

root #gpasswd -a $USER video

ダイレクトレンダリングの設定

Xorgの設定

幸運にも、単に適切なユーザをvideoグループに追加するだけで、ダイレクトレンダリングを有効にするには十分です。しかしながら、Xorgは/etc/X11/xorg.conf.d/ディレクトリを通していくつか追加の設定が必要になるかもしれません。このディレクトリ内に作られる新しい設定ファイルは、最後が.confで終わるのなら、名前は英数字を使ったどのような名前でも構いません。お好きなテキストエディタを開き、中にこれらを含むファイルを作成してください:

FILE /etc/X11/xorg.conf.d/10-dri.conf
Section "Device"
  Driver "radeon"
EndSection
Section "dri"
  Mode 0666
EndSection

radeonを適切なドライバ名で書き換えてください。

自動的にモジュールを読み込むように変更する

システムが起動したときにモジュールが確実に自動的に読み込まれるよう、/etc/modules-load.d/video.confにグラフィックカードが使用しているモジュールの名前を追加する必要があるでしょう。

FILE /etc/modules-load.d/video.conf
intel-agp # あなたのドライバの名前に書き換えてください
Note
もしagpgartをモジュールとしてコンパイルした場合、これを/etc/modules-load.d/video.confにも追加する必要があります。

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

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

コンピュータを新しいカーネルで再起動して、通常のユーザとしてログインしてください。ダイレクトレンダリングがどんなにいいかを確認するときです。gixinfogixgearsx11-apps/mesa-progsパッケージの一部ですので、これらのコマンドを実行する前に必ずインストールしてください。

user $startx

たとえモジュールとしてコンパイルしたとしても、ドライバやagpgart用にモジュールを読み込む必要はありません。これらは自動的に読み込まれます。

user $glxinfo | grep rendering
direct rendering: Yes

もし出力が"No"なら、3Dアクセラレーションが有効になっていません。

user $glxgears

デフォルトの大きさでフレーム毎秒(frames per second, FPS)を試してください。DRMを設定する前よりもかなり大きな数値になっているはずです。CPUがなるべくアイドル状態の時に行なってください。

Note
FPSはスクリーンのリフレッシュレートによって制限されるかもしれません。そのためもしglxgearsがたったの70から100FPSとしか報告しない場合、これを気に留めておいてください。games-fps/xonoticや他の3Dゲームのほうが、実際のパフォーマンスがわかる分、より良いベンチマークツールとなります。

ダイレクトレンダリングを最大限に活用する

もしパフォーマンスや他の理由でもっと多くの機能を設定したい場合、DRIのウェブサイトにある機能表、あるいはSourceforgeにある機能一覧を確認してください。

トラブルシューティング

レンダリングに関する問題

Xサーバを開始する前に、modprobe radeonradeonをあなたのドライバ名に置き換えてください)を実行してみてください。また、agpgartをモジュールとしてではなく、カーネルの一部分としてビルドしてみてください。

startxを実行中の"Failed to load kernel module agpgart"

`startx`を実行後にerror: "[drm] failed to load kernel module agpgart"が出るのは、agpgartがモジュールとしてではなく、カーネルの一部分としてビルドされているためです。問題が発生しない限り無視してください。

Radeon GPU上でのテレビ出力

元々GATOSプロジェクトによって開発されたドライバはXorgのコードベースに統合されました。テレビ出力に関して特別なことをする必要はありません。x11-drivers/xf86-video-atiで上手く行きます。

新しくリリースされたGPUとの互換性

バイナリドライバを試してください。AMDカードに関しては、ati-driversを使用してください。もしバイナリドライバがこれをサポートしていない場合、fbdevを使用してください。遅いですが、それでも動作します。

PCIカードが適切に動作しない

/etc/X11/xorg.conf.d/に設定ファイルを作成し、.confで終わる任意の名前にしてください。以下の内容を追加してください:

FILE /etc/X11/xorg.conf.x/10-pcimode.confForcePCIモードを追加する
Section "Device"
  Option "ForcePCIMode" "True"
EndSection

外部の情報