パスワードを忘れた? アカウント作成
399000 journal

Yoh2の日記: LinuxでATIグラフィックボードを使ったデュアルディスプレイ表示

日記 by Yoh2

ちと前にわが家のPC環境がデュアルディスプレイに。Windowsの方は勘まかせでも簡単に2画面構成にできたけど、Linux (xorg-x11) では結構苦労した。
何せATIだし。(注: ATIグラフィックボードのLinux用バイナリドライバは性能、安定性、開発スピードすべてにおいてすこぶる評判が悪い。一編使ってみたら分かりますよん。まあ、今回は単なる設定ミスが原因だから言い掛かりだけど)

しばらくの間、何とか動かんでもない、といった状態で使ってたけど、ようやくまともに動く環境を構築できたのでメモ。

環境:

  • OS: Gentoo Linux 2007.0 (amd64)
  • Kernel: linux-2.6.24-gentoo-r3
  • CPU: Opteron 2212 x 2
  • Graphic: ATI Radeon 3780
  • Driver: fglrx-8.471.3 (ATIのバイナリドライバ)

以前の設定は、

  • aticonfig --initial=dual-head --screen-layout=rightで生成したxorg.confがベース。
  • ServerFlagsセクションにOption "Xinerama" "true"を記述。

といったもの。
これでもきちんと横につながった画面が表示されるけど、2台目ディスプレイが激遅。AIGLXはおろか、XAA(X Acceleration Architecture)すら無効に。小さなウインドウを移動するだけでもカクカク。

aticonfigのヘルプを読んでいるうちにふと思い立って、以下のように設定を変えてみた。

  • aticonfig --initial --dtop=horizontalで生成したxorg.confがベース (dual-headではなくbig-desktopにする)。
  • ServerFlagsセクションのOption "Xinerama" "true"削除
  • DeviceセクションにOption "Mode1" "2台目ディスプレイの解像度"を記述。

ここで、Option "Xinerama" "true"を削除するのがキモ。fglrxが自前でXinerama拡張機能を持っているのだけど、Option "Xinerama" "true"を有効にするとXorgの方が優先されて挙動が怪しくなる。(以前の設定では書かないとふたつの画面が繋がらなかった)

このようにすることで、2つの画面のどちらでもAIGLXを含めた各種アクセラレーションが有効に。画面境界をまたいでマウスポインタが表示されたり、ムービー再生ができたり (mplayerでgl2ドライバ利用時)。部分的にWindowsを超えたっ。滅茶苦茶無意味な部分だけど。

ところで、ふたつの画面の解像度はそれぞれ1600x1200と1440x900なので隙間ができてしまう。
デスクトップ全体のサイズは3200x1200と認識され、2台目の画面領域の外側(1440x900の外側)にもマウスが移動できてしまう。これは以前の設定では起きなかった現象。
でも、メニュー表示やウインドウの最大化等は1440x900の枠を越えないのであまり問題なし。
まあ、この辺も何か設定があるのかもしれないので調べてみよう。("PairModes"が怪しいなぁ)

最後に、後者の設定でのxorg.confの記述(Device, Screenセクションのみ)を貼り付け。

Section "Device"
    Identifier  "aticonfig-Device[0]"
    Driver      "fglrx"
    Option        "VideoOverlay" "on"
    Option        "OpenGLOverlay" "on"
    Option        "OverlayOnCRTC2" "0"
    Option        "UseFastTLS" "on"
    Option        "Mode2" "1440x900,1024x768,800x600,640x480"
    Option        "DesktopSetup" "horizontal"
    BusID       "PCI:6:0:0"
EndSection
 
Section "Screen"
    Identifier "aticonfig-Screen[0]"
    Device     "aticonfig-Device[0]"
    Monitor    "aticonfig-Monitor[0]"
    DefaultDepth     24
    SubSection "Display"
        Viewport   0 0
        Depth     24
        Modes    "1600x1200" "1280x1024" "1024x768" "800x600" "640x480"
    EndSubSection
EndSection

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

ナニゲにアレゲなのは、ナニゲなアレゲ -- アレゲ研究家

読み込み中...