FreeBSD Daily Topics

2007年7月27日nVIDIAドライバ+TwinView機能でデュアルディスプレイを実現する方法

X.Org 7.2.0+nVIDIAドライバ+TwinView機能=デュアルディスプレイ

最近のグラフィックアクセラレータは出力ポートを3つ持っているものが増えてきました。TV出力+アナログ出力+デジタル出力の組み合わせであったり、TV出力+デジタル出力+デジタル出力の組み合わせであったりするわけですが、こうしたボードでは同時に2出力を扱うことができるのでいわゆる「デュアルディスプレイ」を実現できます。ワイド液晶を購入したため以前の液晶も同時に活用したいなどの理由でデュアルディスプレイを使いたくなることもあれば、17/19インチ液晶ディスプレイが廉価で販売されている状況なのでこれを機にデュアルディスプレイを使ってみたいという場合もあります。

X.Orgでデュアルディスプレイを実現する方法は、X.Orgの拡張であるXineramaを使う方法と、デバイスドライバの提供している機能を使う2つの方法があります。Xineramaは対応していないウィンドウマネージャも多いため、確実に動作する方法を狙うならデバイスドライバの提供している機能を使います。

とくにお勧めなのはX.Org+nVIDIAドライバを使ってデュアルディスプレイを実現する方法です。nVIDIAグラフィックアクセラレータはFreeBSD向けにデバイスドライバを提供していますので、同ドライバを使うことでデュアルディスプレイを実現できます。

x11/nvidia-driverからnVIDAドライバをインストールして/boot/loader.confに「nvidia_load="YES"」を追加しておきます。/etc/X11/xorg.confでドライバとして"nv"ではなく"nvidia"を指定するのも忘れないように。最新のドライバを使う場合は7月2日の記事7月3日の記事を参考にしてインストールすると良いでしょう。

nVIDIAでは「TwinView」という名称でデュアルディスプレイの機能が提供されています。一番簡単な方法はx11/nvidia-settingsをインストールしてnvidia-settings(1)設定ツールを使ってTwinViewの機能を有効にした設定ファイルを生成することです。あらかじめ2ディスプレイ接続した状態でX.Orgを起動しnvidia-settings(1)を実行すれば、両ディスプレイは自動的にnvidia-settings(1)に認識されTwinView機能が選択できるようになります。

図1 nvidia-settings(1)でTwinViewを設定
図1 nvidia-settings(1)でTwinViewを設定

nVIDIAドライバを使ってデュアルディスプレイ(TwinView)を有効にする場合の/etc/X11/xorg.confの設定の要点を次に挙げておきます(リスト1、2⁠⁠。

リスト1 Xinerama機能は無効にしておく
Section "ServerFlags"
    Option         "Xinerama" "0"
EndSection
リスト2 TwinViewが有効になっていること、metamodesでデュアルモニタの設定をしていることに注目
Section "Screen"
    Identifier     "Screen0"
    Device         "Videocard0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "TwinView" "1"
    Option         "metamodes" "CRT-0: 1920x1440 +1280+0, CRT-1: 1280x1024_60 +0+0; CRT-0: 1600x1200 +0+0, CRT-1: nvidia-auto-select +1600+0; CRT-0: 1024x768 +0+0, CRT-1: nvidia-auto-select +1024+0; CRT-0: 800x600 +0+0, CRT-1: nvidia-auto-select +800+0; CRT-0: 640x480 +0+0, CRT-1: nvidia-auto-select +640+0"
    SubSection     "Display"
        Depth       24
        Modes      "1600x1200" "1280x1024" "1024x768" "800x600" "640x480"
    EndSubSection
EndSection

Option "TwinView" "1"でTwinViewを有効にしていること、Option "metamodes" "..."でデュアルモニタの設定をしていることに注目してください。metamodesでは「;」ごとに設定が区切られています。

たとえば「"CRT-0: 1920x1440 +1280+0, CRT-1: 1280x1024_60 +0+0"」だとCRT-1が左側にあることがわかります。指定されている座標がそのままディスプレイ座標になっているため、前後左右のポジションを変更する場合はこの座標値を書き換えればいいわけです。

デュアルディスプレイ(TwinView機能)で最大どの解像度まで描画が可能かどうかは、Beryl(x11-wm/beryl)をインストールしてBerylが動作するように設定してから、次のようにberyl(1)コマンドを実行してみるとわかります。次の場合は4096×4096ピクセルまで対応しているようです。

図2 beryl(1)コマンドを使って最大描画サイズをチェック
% beryl --test-only
**************************************************************
* Beryl system compatiblity check                            *
**************************************************************

Detected xserver                                : NVIDIA

Checking Display :0.0 ...

Checking for XComposite extension               : passed (v0.3)
Checking for XDamage extension                  : passed
Checking for RandR extension                    : passed
Checking for XSync extension                    : passed

Checking Screen 0 ...

Checking for GLX_SGIX_fbconfig                  : passed
Checking for GLX_EXT_texture_from_pixmap        : passed
Checking for non power of two texture support   : passed
Checking maximum texture size                   : passed (4096x4096)

%

nVIDIAドライバでTwinView機能を使っている場合は違う解像度でデュアルディスプレイを実現した場合でもBerylが動作します。nVidiaのグラフィックアクセラレータを使っておりディスプレイが2つある場合は一度試してみると良いでしょう。

おすすめ記事

記事・ニュース一覧