日付を越えました。昨日の続きです。 Let's Note Y2 に FreeBSD 4.9-RELEASE や 5.2.1-RELEASE と XFree86-4.3.0 を導入してみるも、 どちらのバージョンでも、
agp_generic_allog_memory: unsupported type 2 agp0: binding memory at bad offset 0x7df000
のように怒られてしまい、xf86cfg(1) が使えないと…。
ここでふと、おかしなことに気が付きました。 5.2.1-RELEASE の devfs 上にある /dev/agpgart が、 なんと 2 つあるのです (後で send-pr しようか…)。 dmesg を見ると、チップ内蔵の VGA が agp0 ではなく、 agp1 として認識されています。
これはもしかして、XFree86 が、 最初に発見された agp0 の AGP-PCI ブリッジを叩こうとして死んでいるのではないか、 という仮定に基づき、 とりあえずカーネルの config ファイルから device agp の行を消して再構築し、 再起動して xf86cfg に挑戦してみると…。
ありゃ?
SXGA で xf86cfg が起動してきました。 どうやらログを見ると、fb ドライバが頑張っているようです。 ただ、やはり /dev/agpgart がオープンできないとログで怒られているので、 ためしに
# kldload apg
してみました。すると、内蔵ビデオがなぜか agp0 ときちんと認識され、 /dev/agpgart に関するエラーが発生しなくなりました (あらら?)。
まあ、そこそこ使えるようです。
CD-ROM から gnome2 を入れて、 キャプチャしてみるとこんな感じ (テスト目的なので日本語は入れていません)。 いいねぇ〜。 1280x1024 ピクセルで、 24bpp もきちんと使えます。 さすがに XGA (1024x768) 比 166% の画面は広い…。 ただ、SXGA+ (1400x1050) はあと 12% だけ広いので、 そこを何とかしたい…。 この時点での XF86Config はこんな感じ (1400x1050 に挑戦した悪あがきつき)。
XFree86 のログを見ると次のようなメッセージが出ているので、 VESA BIOS を使って何かやっていることは明らかなのだけれども、 この辺りが 1400x1050 出ない理由になっているのかな?
(II) I810(0): VESA BIOS detected (II) I810(0): VESA VBE Version 3.0 (II) I810(0): VESA VBE Total Mem: 8000 kB (II) I810(0): VESA VBE OEM: Intel(r)852GM/852GME/855GM/855GME Graphics Chip Accelerated VGA BIOS (II) I810(0): VESA VBE OEM Software Rev: 1.0 (II) I810(0): VESA VBE OEM Vendor: Intel Corporation (II) I810(0): VESA VBE OEM Product: Intel(r)852GM/852GME/855GM/855GME Graphics Controller (II) I810(0): VESA VBE OEM Product Rev: Hardware Version 0.0
ちなみに一応、モニタ自体は 1400x1050 で識別しているらしい。
(II) I810(0): 2 display pipes available. (II) I810(0): Display Info: CRT: attached: FALSE, present: TRUE, size: (720,400) (II) I810(0): Display Info: TV: attached: FALSE, present: FALSE, size: (0,2057) (II) I810(0): Display Info: DFP (digital flat panel): attached: FALSE, present: FALSE, size: (0,2057) (II) I810(0): Display Info: LFP (local flat panel): attached: TRUE, present: TRUE, size: (1400,1050) (II) I810(0): Display Info: TV2 (second TV): attached: FALSE, present: FALSE, size: (0,2057) (II) I810(0): Display Info: DFP2 (second digital flat panel): attached: FALSE, present: FALSE, size: (0,2057) (II) I810(0): Size of device LFP (local flat panel) is 1400 x 1050 (II) I810(0): No active displays on Pipe A. (II) I810(0): Currently active displays on Pipe B: (II) I810(0): LFP (local flat panel) (II) I810(0): Lowest common panel size for pipe B is 1400 x 1050
でも結局 ↓ こうなってしまっていると。
(II) I810(0): Monitor0: Using hsync range of 31.50-82.00 kHz (II) I810(0): Monitor0: Using vrefresh range of 40.00-150.00 Hz (II) I810(0): Not using mode "1400x1050" (no mode of this name) (II) I810(0): Increasing the scanline pitch to allow tiling mode (1280 -> 2048). (--) I810(0): Virtual size is 1280x1024 (pitch 2048) (**) I810(0): *Built-in mode "1280x1024" (**) I810(0): Built-in mode "1024x768" (**) I810(0): Built-in mode "800x600" (**) I810(0): Built-in mode "640x480" (==) I810(0): DPI set to (75, 75)
今の仮定としては、Built-in mode というのは実は VESA BIOS から得ていて、 結局 VESA 頼りではこれ以上いかないのでは、 という不安もあるのですが、 そのあたりどうでしょうね? まあとりあえず、1024x768 しか使えないという最悪の状況は免れて、 あとフル画面まで 12% というレベルまで持ってきたことは、 まあ、それなりに良し、ということで…。
XF86Config の達人の方、いらっしゃったら是非アドバイスを下さいませ…。