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.


この文書は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 -Ei "VGA|AGP|3D"
# 00:01.0 PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 03)

ハードウェアが異なることにより上記の出力は実際の出力と一致するとは限りませんが、何が返ってきたとしても、どのカーネルオプションを考慮すべきかの情報を与えてくれるでしょう。

カーネルオプションには必要なものもあれば、逆に問題を起こすものもあるでしょう。どのハードウェアにどのカーネルオプションが必要か、ハードウェアごとの資料はこの、wiki 内を含む様々な箇所にあります。

しかしながら、上のコマンドが何も返さないことも稀にですが考えられます。その場合は lspci -nnk の完全な出力内容が、状況を再確認するために、そして助けを求めるためのいい情報源です。

上の例では、チップセットは AGP チップセットですが、カーネルによって対応されていません。この場合、カーネルのパラメータとして agp=try_unsupported を渡すと何らかの成功が得られるかもしれません。これはAGPへの対応にIntelの一般的なルーチンを使用します。このパラメータを追加するには、ブートローダの設定ファイルを編集してください。繰り返しになりますが、必要なカーネルコンフィグオプションと利用可能なブートローダパラメータは、ハードウェアの詳細によって異なるでしょう。

カーネルオプションの変更に進む前に、必要であれば、/usr/src/linux が意図したカーネルにリンクしているか確認してください:

root #ls -dl /usr/src/linux*
lrwxrwxrwx  1 root root   19 Feb 16 16:30 /usr/src/linux -> linux-5.4.18-gentoo
drwxr-xr-x 27 root root 4096 Feb 16 21:27 /usr/src/linux-4.19.103-gentoo

シンボリックリンクを別のターゲットに更新するためには、これらのコマンドを使用してください。2 番目のコマンドは、1 番目の出力に表示された選択肢のうちから引数を受け取ります:

user $eselect kernel list

そして

user $eselect kernel set

シンボリックリンクが確認できたら、カーネルオプションを修正するには:

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

全てではないとしても、ほとんどのカーネルはこれらのオプションを持っているはずです。いずれにせよ、<M> が付けられたオプションはモジュールとしてコンパイルされ、必要に応じてロードされるので、不要だったとしても何かを壊すことはほとんどないでしょう。

以下の例は、通常のsys-kernel/gentoo-sourcesのカーネルを使用して設定しました。

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

外部の情報