Mach64
Mach 64 チップは ATI により開発されていた旧式のグラフィックアクセラレータです。基本的な 3D 機能も備えています。Linux におけるサポートは貧弱ですが全くないわけではありません。このページでは Mach 64 グラフィックチップセット (ATI Rage Pro を含む) を設定してダイレクトレンダリングを使う方法を説明します。
インストール
X の 2D や Xv アクセラレーションは xf86-video-mach64AUR パッケージをインストールすることで得られます。
3D アクセラレーションとダイレクトレンダリング
Linux では、Mach 64 チップは DRI/DRM システムを使ってダイレクトレンダリングを行います。DRM モジュールはメインラインカーネルに含まれていません。別々にビルドする必要があります。mach64drmAUR パッケージをインストールしてください。
DRM モジュールをビルド・インストールしたら、DRI の mach64-dri パッケージをインストールしてください。
設定
以下は Mach 64 チップの X の設定例です:
Section "Device" Identifier "Card0" Driver "mach64" Card "ATI Rage Pro - Mach64" Option "DMAMode" "async" Option "ForcePCIMode" "false" Option "AgpMode" "2" Option "AgpSize" "32" Option "BufferSize" "2" Option "LocalTextures" "true" # Uncomment the following option if X segfaults as soon as anything using acceleration is called. # Option "ExaNoComposite" "true" # The following line will also prevent segmentation faults, but is not recommended since # it will disable all acceleration. # Option "NoAccel" "true" # The following enables the shadow framebuffer, which improves non-accelerated performance. # Use only with the "NoAccel" option. # Option "ShadowFB" "true" EndSection
オプションの説明:
- Driver: mach64 ドライバーを使用します。
- DMAMode: async - デフォルト, sync (同期 DMA), mmio (PIO/MMIO) - バッファをディスパッチ。
- ForcePCIMode: AGP アパーチャを無効化。PCI カードを使用する場合は true にしてください。
- AgpMode (AGP 1x または 2x): 1 または 2。設定しなかった場合、デフォルトでは agpgart のモードが使われます。
- AgpSize: AGP アパーチャを MB 単位で設定。AGP を使って設定した容量分のシステムメモリにビデオカードからアクセスできるようになり、テクスチャを多く保存できるようになります。
- BufferSize: DMA バッファメモリサイズを MB 単位で設定。デフォルトは 2 MB です。1 あるいは 2 に設定してください。
- LocalTextures: デフォルトでは AGP カードはテクスチャを格納するのに AGP メモリしか使いません。AGP に加えてローカルカードメモリも使用したい場合、true に設定してください。
AgpSize オプションは AGP アパーチャ用に使用するシステムメモリのサイズを変更するため、カードに載っているビデオメモリのサイズに縛られません。AGP カードで ForcePCIMode が有効になっている場合、あるいは PCI カードでは AgpMode/AgpSize オプションは無視されます。ただし、PCI あるいは AGP カードどちらでも BufferSize オプションを使ってシステムメモリの DMA バッファのサイズを変更することは可能です (システムメモリが不足しているわけではないのであればバッファサイズを減らすことは推奨されません)。
- ExaNoComposite - EXA ハンドラのセグメンテーション違反を防ぐのに必須。
Module セクション:
Section "Module" <Your modules> Load "glx" Load "dri" Load "vgahw" Load "fb" Load "int10" Load "vbe" Load "shadowfb" Load "fbdevhw" Load "exa" Load "glamoregl" EndSection
DRI セクション:
Section "DRI" Mode 0666 #allows anybody to use DRI EndSection
DRI セクション (セキュリティが重要なマシンの場合):
Section "DRI" Group "video" #change to any desired group to restrict access Mode 0660 EndSection
ダイレクトレンダリングのテスト
X を再起動して、以下のコマンドを実行:
$ glxinfo | egrep "direct rendering|OpenGL renderer"
以下のように出力されます:
Direct rendering: Yes OpenGL renderer string: Mesa DRI Mach64 [Rage Pro] 20051019 AGP 2x x86/MMX/SSE
OpenGL レンダラの文字列が "Software Rasterizer" の場合、例えばダイレクトレンダリングが "yes" でも DRI が機能していません。
カーネルの設定
2019年6月時点では、デフォルトのカーネルでは Mach64 ドライバーが正常に読み込まれず Xorg でエラーが発生します:
$ MACH64(0): Unable to map linear aperture. Invalid argument
Mach64 ドライバーは CONFIG_IO_STRICT_DEVMEM
オプション [1] を無効にしてカーネルをコンパイルすると動作するものの、ドライバーの使用中のメモリにユーザースペースからアクセスできるようになるため [2]、システムが脆弱になります。
詳しくは Archlinux32 forum および linux.debian.ports.powerpc での議論を参照してください。