1. debian 用的是 XFree86, 但是我天性反骨, 所以用了 Ubuntu 的 Xorg 6.8.2, 方法就是把 ubuntu 的 apt repo加入, 把debian XFree86跟 version 4.3.x 有關的全部remove, 換成 Ubuntu 6.8.2 的 Xorg
但是, 這樣可能會覺得髒髒的, 您也可以選擇自己 compile Xorg, 但是基本上一些要用的 -dev lib 最好也從 ubuntu 那抓來, 之後compile 完再刪掉也是可以.
為什麼用Xorg ? 我的原因是, Xorg "好像" 出 cvs snapshots 比較勤勞, 想嘗鮮也方便一些, 為了讓 tvout 能夠使用, 參考了:
http://gatos.sourceforge.net/theater_out.php
裡面提到Xorg 的使用者可到
http://megahurts.dk/rune/tv_output.html
在那可以抓到最新的 tvout patch for Xorg
然後在
http://xorg.freedesktop.org/snapshots/
抓最新的 Xorg snapshot
按照下面的步驟, 其中XX.X跟 YYYYY 為版本代碼, 帶入自己剛抓下來的版本
- 代碼: 選擇全部
tar xjvf xorg-x11-6.8.XX.X.tar.bz2
gunzip -c xorg_CVS-YYYYYYYYY-tv_output.patch.gz | \
patch -p1 -d xc/programs/Xserver/hw/xfree86/drivers/ati
mkdir xc-build
cd xc-build
lndir ../xc
make World
完成到這裡, 您已經有一份可以準備安裝的 Xorg 了
接下來就是要換新X Window 了, 建議在console 下做, 不然, 我也不知道, 這是怕 x 當掉的習慣
下面兩個link 大概講怎麼換成 xorg
http://dri.freedesktop.org/wiki/Buildin ... 5e4f541a5e
http://dri.freedesktop.org/wiki/Downloa ... 3e05313740
如果覺得麻煩, 就先把本來的 x server/client 備份
- 代碼: 選擇全部
mv /usr/X11R6 /usr/X11R6.xf86
之後在xc-build 下
- 代碼: 選擇全部
make install
之後為了讓 startx 的 script 可以 load Xorg
- 代碼: 選擇全部
cd /etc/X11
rm X
ln -s /usr/X11R6/bin/Xorg X
cp XF86Config-4 xorg.conf
記得把xorg.conf 中的 "keyboard" 改成 "kbd" driver
來個 ldconfig 暖暖身體, 之後 startx, 按下enter 後開始禱告
2. Mesa/DRI & DRM
Xorg 裝好呢, 開個 terminal, 跑
- 代碼: 選擇全部
glxgears
可能會有點不爽, 因為Mesa 跟 Drm 還沒換成可以用的, 連結
http://dri.freedesktop.org/wiki/Buildin ... f3e5046726
有說怎麼update mesa & drm
大體上來說, 有幾個基本步驟
mkdir 個目錄, 把CVS 抓下來..抓抓抓抓, 其中 xorg就別抓了, 之前的就夠新了, 所以只要:
- 代碼: 選擇全部
cvs -d:pserver:anonymous@cvs.freedesktop.org:/cvs/dri login
cvs -z3 -d:pserver:anonymous@cvs.freedesktop.org:/cvs/dri co drm
cvs -d:pserver:anonymous@cvs.freedesktop.org:/cvs/mesa login
cvs -z3 -d:pserver:anonymous@cvs.freedesktop.org:/cvs/mesa co Mesa
之後在 ./Mesa/configs/linux-dri 最後一行, 把一些多於的 driver 去掉, dri_client 和 radeon 一定要留著
如果您是個compile 狂熱份子, 那把 sarvage 去掉就好了, 聽說sarvage 那部份可能compile 不了 (我也是)
- 代碼: 選擇全部
#./Mesa/config/linux-dri
DRI_DIRS = dri_client i810 i830 i915 mach64 mga r128 r200 radeon
之後退出Xorg ,並到 ./Mesa ...衝呀!
- 代碼: 選擇全部
make linux-dri
之後把mesa libs 更新到 Xorg 中, 在./Mesa 下
- 代碼: 選擇全部
cd lib
cp libGL* /usr/X11R6/lib
cp dri* /usr/X11R6/lib/modules/dri/
裝好 mesa 後, 來裝 drm, 到抓 cvs 目錄下的 drm 中
如果你是用 kernel 2.6 到 cd linux-core
如果你是用 kernel 2.4 到 cd linux
要 compile drm 記得要有自己跑的kernel source, 再來又是compile
- 代碼: 選擇全部
make
如果他無法自動找到kernel source, 就
- 代碼: 選擇全部
make LINUXDIR=/path/to/kernel/source
make 完成後, 把modules 丟到 /lib/modules/$KERNEL/kernel/drivers/char/drm 下
- 代碼: 選擇全部
cp *.ko /lib/modules/您的kernel版本/kernel/drivers/char/drm
檢查 /etc/X11/xorg.conf 裡的 Section "Module" 是否有, 沒有就加上:
- 代碼: 選擇全部
Load "glx"
Load "dri"
之後, 在 ~/.xinitrc 中加入
- 代碼: 選擇全部
export LD_PRELOAD=/usr/X11R6/lib/libGL.so
export LIBGL_DEBUG=verbose
第一個是為了讓其他用 GL 的app 可以知道去load 什麼, 沒加這個前
我除了 glxgears 外, 其他的app 都用不了 GL
第二個是debug 用的, 如果發生了什麼事, 至少還可以貼出來討論討論
現在, 再跑 Xorg 吧, 並且執行 glxgears
我在 16bit, 1024x768 下, 我的 debug message + glxgears output 為
- 代碼: 選擇全部
libGL: XF86DRIGetClientDriverName: 5.0.1 radeon (screen 0)
libGL: OpenDriver: trying /usr/X11R6/lib/modules/dri/radeon_dri.so
drmOpenByBusid: Searching for BusID pci:0000:01:00.0
drmOpenDevice: node name is /dev/dri/card0
drmOpenDevice: open result is 4, (OK)
drmOpenByBusid: drmOpenMinor returns 4
drmOpenByBusid: drmGetBusid reports pci:0000:01:00.0
7854 frames in 5.0 seconds = 1570.618 FPS
7862 frames in 5.0 seconds = 1562.099 FPS
7859 frames in 5.0 seconds = 1571.777 FPS
mobile radeon 7500 快跑到 1600, 猛吧...
DriConf 是個不錯的 tweak 工具, 可以拿來玩一玩:
http://dri.freedesktop.org/wiki/DriConf
3. TVout
對了, 好像還忘了講到TVout, 我先講一句話
就是, 這個東西我並沒有讓他完全working....目前是有 tvout, 但是也有點 TV傲(台語)
就是爛爛的...
首先, 先去 /var/log/Xorg.0.log 中, 找 "theatre" 這個字串
如果看到
- 代碼: 選擇全部
(II) LoadModule: "theatre_detect"
代表之前我們 compile 的 Xorg 還是我們想要的, 參考
http://megahurts.dk/rune/tv_output.html
改變 /etc/X11/xorg.conf, 我的部份設定如下:
- 代碼: 選擇全部
Section "Device"
Identifier "Generic Video Card"
Driver "ati"
Option "AGPMode" "4"
Option "AGPFastWrite" "yes"
Option "TVOutput" "NTSC"
EndSection
其中 NTSC 可以改成
* NTSC
* NTSC-J
* PAL
* PAL-CN
* PAL-M
* PAL-N
* PAL-60
我也不太清楚這些規格, 但是我在紐西蘭的電視只有用 NTSC 和 PAL 才會有反應
記得 要把 resoulution 改成 800x600 喔!!
此外, 希望您還沒有把 xorg 的 source 刪掉
在source 下的 ./programs/Xserver/hw/xfree86/drivers/ati/tvo_set
有個小程式叫 tvo_set 可容許您更改 tvout 的setting, 且不用重新進入 Xorg
所以接下來的就是 compile 和安裝他, 在 xc 或 xc-build下
- 代碼: 選擇全部
cd ./programs/Xserver/hw/xfree86/drivers/ati/tvo_set
xmkmf
make
make install
就可以拿 tvo_set 這個command 來玩玩了