Mach64

提供: ArchWiki
2020年9月28日 (月) 10:03時点におけるHiromi-mi (トーク | 投稿記録)による版 (英語版に追従)
ナビゲーションに移動 検索に移動

Mach 64 チップは ATI により開発されていた旧式のグラフィックアクセラレータです。基本的な 3D 機能も備えています。Linux におけるサポートは貧弱ですが全くないわけではありません。このページでは Mach 64 グラフィックチップセット (ATI Rage Pro を含む) を設定してダイレクトレンダリングを使う方法を説明します。

インストール

X の 2D や Xv アクセラレーションは xf86-video-mach64AUR パッケージをインストールすることで得られます。

3D アクセラレーションとダイレクトレンダリング

警告: Mach 64 の DRM モジュールを使用するとクラッシュすることがあります。Mach 64 のダイレクトレンダリングは信頼性が低くサポートが十分行き届いていません。

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 での議論を参照してください。