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機能が選択できるようになります。
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つある場合は一度試してみると良いでしょう。
FreeBSD Daily Topics
- 2007年7月31日 《要注意》Python 2.4.xから2.5.xへ移行,Emacs 22/21随時対応中,Qt3/Qt4脆弱性修正,JDK15 amd64 プラグイン追加,その他更新多数
- 2007年7月30日 《注意》autotools関連の再構築,BIND 9/94脆弱性対応,JDK15 Update 12 + p6へ更新,Eric 4追加,Varnish更新,その他更新多数
- 2007年7月27日 nVIDIAドライバ+TwinView機能でデュアルディスプレイを実現する方法
- 2007年7月26日 Emacs 22.1導入,Qt 4.3へ移行,Zend Framework 1.1へ更新,日本語PostgreSQLマニュアル追加,Firebug追加,Firefox 2.0.05へ更新,Linux Flashプラグイン9.0r48へ更新他
- 2007年7月25日 SCHED_SMPをULE 3としてマージの方針―高いスケーラビリティと安定性を実現,netatmの無効化,ユーザ情報の取得を高速化する実験的パッチbsdnss.diff
- 2007年7月20日 USE_FORTRANへ移行,Vala言語追加,Qt4に注力した開発環境QDevelop追加,HTTP/HTTPSプロキシParos追加,Mesa 7.0へ更新,Clam Antivirus更新,ほか
- 2007年7月19日 915resolution更新,ZXID追加,uShare追加,Twitter4R追加,Rsyslog追加,Commons Daemon追加,Ruby JSON追加,BooKreader追加,Lisaem追加
- 2007年7月17日 Anjuta 2.2.0アップグレード,kqueue(2)ベースのWebサーバDrood追加,mod_jailでApache 2.xへ対応,The GIMP/dvd::rip更新
- 2007年7月16日 libarchive(3)のパース処理に脆弱性,wpa_supplicant(8)/hostapd(8)アップグレードとndisと併用する場合の注意
- 2007年7月13日 2007Q2 Status Report,ALi SATAコントローラにおけるAHCIモード,FAST_IPSECからIPSECへ変更

