+ -
当前位置:首页 → 问答吧 → [初学者参考贴]Emerge enlightenment HOWTO, 3D 加速教程【转贴】

[初学者参考贴]Emerge enlightenment HOWTO, 3D 加速教程【转贴】

时间:2005-09-07

来源:互联网

安裝 E17
準備
CVS 版的 ebuilds(-9999)被 '-*' 遮蔽。請先將以下清單加入 /etc/portage/package.keywords 中取消遮蔽:

代码:
x11-wm/e -*
x11-plugins/e_modules -*
x11-misc/engage -*
x11-libs/ewl -*
x11-libs/evas -*
media-libs/imlib2 -*
dev-libs/eet -*
dev-db/edb -*
x11-libs/ecore -*
media-libs/etox -*
media-libs/edje -*
dev-libs/embryo -*
x11-libs/esmart -*
media-libs/epsilon -*
media-libs/epeg -*
app-misc/examine -*
net-news/erss -*
x11-misc/entrance -*
app-misc/evidence -*
media-libs/emotion -*
media-gfx/elicit -*
media-gfx/entice -*
dev-util/e_utils -*
dev-libs/engrave -*
media-video/eclair -*
編譯
輸入
代码:
emerge eet edb evas ecore embryo imlib2 edje e epeg epsilon esmart entrance emotion eclair ewl engrave e_utils e_modules etox erss entice engage evidence -va
開始編譯程序。在確認所有版本都為 9999(CVS)以後,輸入 "yes" ?K按下 Enter 繼續。

注意:我想在 evidence 啟用 "svga" 時遇到了一些問題。如果您無法啟用 evidence 中的 "svga" 支援,請將它?哪 USE 旗標中移除。省著安裝許多附加的函式庫。

注意 2:在 Jul 14, 2005,eclair 套件正大規模變化,?K且不一定能正確工作。不過 emerge 它不會造成太多痛苦。

測試
在現階段,entrance ?K沒有附上可以讓您直接執行 enlightenment 的正確設定檔。首先,找找 /etc/X11/Sessions 底下,看看有沒有看起?硐 enlightenment 的啟動命令稿(叫做 enlightenment、e17、或?似的東西)。如果沒有,建立以下這個檔案,把它叫做 "e17"(別忘了 chmod +x!):

代码:
#!/bin/sh
/usr/bin/enlightenment-0.17
您還必須稍微修改 /etc/entrance_config.db 裡面的某些東西。讓我們先建立個更完整的設定檔:

代码:
cd /etc
/usr/share/entrance/build_config.sh
您不一定要作這個動作,不過它能幫您在設定檔中加入更多不同視窗管理程式的設定。

最後,您必須編輯這個檔案,讓它正確指向您的 enlightenment 工作階段檔,因為目前的 entrance 只看得懂絕對路?健H绻趫绦 X 而且有 gtk 函式庫,您可以使用 edb_gtk_ed ?砭庉 entrance 的設定,否則請使用文字模式的 edb_ed。在視窗下面會有個小對話框顯示目前變數的值。

代码:
# edb_gtk_ed /etc/entrance_config.db
請將 Enlightenment 工作階段的金鑰(大概會是 /entrance/session/1/session)變更為 "/etc/X11/Sessions/e17"。

在這以後,entrance 應該會如想像般工作。

您可以在一個終端機中啟動 entrance,先清除 DISPLAY 變數:
代码:
unset DISPLAY
然後啟動 e17 登入管理員伺服程式:
代码:
entranced -display :1
要結束 entrance 工作階段,ctrl-alt-Fx 回您原?淼 X 工作階段,殺掉(kill)那個伺服程式:
代码:
killall entranced
若您想要使用 entrance 作為圖形介面的登入管理員(例如,取代終端機登入),您可以在 /etc/rc.conf 中更改預設值:
代码:
# What display manager do you use ? [ xdm | gdm | kdm | entrance ]
DISPLAYMANAGER="entrance"
要在開機同時啟動 entrance,您必須將 XDM 加入預設的執行階層("XDM" 是個命令稿的名稱,由於預設的登入管理程式叫做 XDM,不過?際上它會使用 DISPLAYMANAGER 變數中指定的登入管理程式):
代码:
rc-update add xdm default
更新
重新全部編譯最新 e17 套件最簡單的方法,就是使用底下的命令稿。把它存成 e17update.sh ?K chmod u+x:

代码:
#!/bin/sh
for prog in eet edb evas ecore embryo imlib2 edje e epeg epsilon esmart entrance emotion eclair ewl engrave e_utils e_modules etox erss entice engage evidence
do
 emerge $prog;
done
要提醒您的是,如果某一個函式庫或?膶偬准編譯失敗,它還是會繼續常識安裝剩下?淼牟糠荩pN的部份有很大的可能也會跟著失敗。由於這些是 CVS 程式碼,所以他們有可能編譯失敗。另一個更新的辦法是:

代码:
#!/bin/sh
rm /usr/portage/distfiles/cvs-src/* -r
Ebuilds="edb eet imlib2 imlib2_loaders evas ecore epeg epsilon embryo edje esmart \
emotion ewl engrave e imlib2_tools e_utils evidence entrance engage examine elicit \
elation entice equate embrace envision eclair e_modules etox erss iconbar enotes"
emerge $Ebuilds
這樣的話,若某個套件編譯失敗,整個更新過程就會終止,而您可以知道那個套件失敗了。看起?碜钊菀资∮肿顩]用的套件被列在清單的尾端

作者: 小劲鸭   发布时间: 2005-09-07

1. 介紹

什麼是 3D 加速?又為什麼我想要它?
有了硬體 3D 加速,三度空間貼圖會使用您的顯示卡,而不是?子每少F的 CPU 資源。它同時也被稱為 "硬體加速" - "軟體加速" 的相反。沒有了硬體 3D 加速,您的 CPU 會被迫使用 Mesa 軟體貼圖函式庫自己描繪整個畫面。這將?子貌凰闵俚奶幚碣Y源。雖然 Xfree86 一般都支援 2D 硬體加速,卻常常缺少 3D 加速支援。3D 硬體加速在需要繪製三度空間物件的時候是非常寶貴的,例如遊戲、3D CAD、以及 3D 成像。

我該怎麼啟動硬體 3D 加速?
許多狀況下,開放原始碼以及二進位碼的驅動程式會同時存在。我們想使用開放原始碼的驅動程式,畢竟我們正在使用 Linux 作業系統,?K且開放是 Linux 的原則之一。某些時候只有二進位碼的驅動程式可以使用,例如 nVidia 的卡。二進位碼驅動程式包含 nVidia 顯示卡使用的 media-video/nvidia-kernel 以及 media-video/nvidia-glx、Matrox 顯示卡使用的 media-video/mgavideo、以及給 ATI 顯示卡用的 media-video/ati-drivers。其他開放原始碼驅動程式,KyroII 顯示卡使用的 media-video/kyro-kernel 以及力求完整支援 ATI 顯示卡功能的 media-video/ati-gatos。

什麼是 DRI?
Direct Rendering Infrastructure (http://dri.sourceforge.net),也被稱為 DRI,是個安全且有效率地直接對顯示硬體存取的方法。它包含對 X server、一些 client 函式庫、以及核心的變更。DRI 的第一個主要目的就是提供高效能的 OpenGL ?作。


什麼是 XFree-DRM?它又怎麼跟普通的 XFree86 關聯?
XFree-DRM 是一套 XFree86 的加?娞准。它透過加入直接貼圖必須的核心模組?硖峁╋@示卡 3D 加速。

目標
這篇文章是專為那些無法在 XFree,XORG 上啟動 DRI 的使用者撰寫的。XFree-DRM 提供 3dfx、gamma、i8x0、matrox、rage128、radeon、mach64 (xfree-drm-4.3.0-r7 以後版本)、以及 sis300 系列的驅動程式。由於 2.4 版核心的直接貼圖管理員 (Direct Rendering Manager - DRM) 不支援 XFree 4.3,所以您需要 xfree-drm 套件。若您使用 2.6 版的核心,它內含的 DRM 已經支援 XFree 4.3。Gentoo 的 XFree-DRM 套件不支援 2.6 版的核心,請參考 DRI homepage 取得更多資?跟文件。(所以这段大多数版民可以不用看, 也用不着xfree-drm)

2. 安裝 XFree86 以及設定核心
安裝 XFree86/XORG
PHP 代码:
原始碼 2.1: 安裝 XFree86
# emerge x11-base/xfree 
或者
# emerge xorg-x11 
設定您的核心
偵測您的晶片組,?K且只啟用它。

PHP 代码:
原始碼 2.2: 檢查 AGP 晶片組
# emerge pciutils; lspci | grep AGP
# 00:01.0 PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 03) 
由於硬體不同,您得到的結果可能與上面不一樣

如果您使用的晶片組不被核心所支援,那麼你或許可以嘗試將 agp=嘗試加入未支援 加入為核心的參數。這將會使用 Intel 的通用 AGP 支援例程。要加入此參數,您將需要編輯您的開機程式設定檔!

大部份 (如果不是全部的話) 的核心應該都有這些選項。這是以 gentoo-sources-2.4.20-r5 設定的。

PHP 代码:
原始碼 2.3: 設定核心
# ls -l /usr/src/linux 
lrwxrwxrwx    1 root     root           22 May 29 18:20 /usr/src/linux -> linux-2.4.20-gentoo-r5
(確定 /usr/src/linux 連結到您現在的核心)
# cd /usr/src/linux
# make menuconfig 

PHP 代码:
原始碼 2.4: make menuconfig 選項
Processor type and features --->
<*> MTRR (Memory Type Range Register) support
Character devices --->
<M> /dev/agpgart (AGP Support)[*] Intel 440LX/BX/GX and I815/I820/I830M/I830MP/I840/I845/I850/I860 support
(請改用您的晶片組)[*] Direct Rendering Manager (XFree86 DRI support) 

編譯及安裝核心
PHP 代码:
 原始碼 2.5: 編譯及安裝核心
# make clean bzImage modules modules_install
# mount /boot
# cp arch/i386/boot/bzImage /boot 
若您想讓您的核心叫 bzImage 以外的名字,請將它複製到 /boot/yourname 。別忘了設定 grub.conf 或 lilo.conf。如果您使用 LILO 的話,別忘了執行 /sbin/lilo。

設定 XF86Config/Xorg.conf
PHP 代码:
原始碼 2.6: XF86Config/Xorg.conf
 
...
Section "Module"
Load "dri"
Load "glx"
...
EndSection
...
Section "Device"
Driver "radeon"
...
EndSection
...
Section "dri"
Mode 0666
EndSection 
若您使用其他顯示卡,請使用您的驅動程式取代 "radeon"。

3. 試 3D 加速
使用新核心重開
使用新的核心重新啟動您的電腦。是時候驗證您是否有直接貼圖支援,以及它有多美妙了。

PHP 代码:
原始碼 3.1: 測試貼圖
 
# startx
(若您將 agpgart 以及驅動程式編譯成模組,不必手動載入它們。)
(他們會自動載入。)
# glxinfo | grep rendering
direct rendering: Yes
(若它顯示 "No",表示您沒有 3D 加速支援。)
# glxgears
(使用預設大小測試您每秒的畫面數 (FPS)。這個數字應該會比使用 xfree-drm 之前?淼酶摺)
(請在 CPU 有空的時候作這個測試。) 

4. 效能調校
榨取直接貼圖的效能
變更一些 XF86Config 選項可能可以增加比預設值多 30% (或以上) 的效能,請於 /etc/X11/XF86Config(/etc/X11/xorg.conf) 設定。

PHP 代码:
原始碼 4.1: XF86Config/Xorg.conf
 
Section "Device"
  Option     "AGPMode" "4"
  (這將我的 FPS ? 609 提昇至 618。)
  Option     "AGPFastWrite" "True"
  (這個效果量不出?恚撬赡茏屇南到y不穩。)
  (您可能也必須在 BIOS 中設定它。)
  Option     "EnablePageFlip" "True"
  (這將我的 FPS ? 618 提昇至 702。雖然有點 "冒險",但是沒幾個人回報相關的問題。)
  ...
EndSection 

5. 故障排除
我在重新編譯核心或更新核心以後,DRI 不能用了。
每當您重新編譯核心或升級核心時,您必須同時重編核心模組。請注意您不用重新 emerge xfree,不過您必須重新 emerge xfree-drm。(已经不适合了, 因为xfree-drm是给2。4版本得内核用得)

即使我想破頭,我還是不知道為什麼我不能啟動 DRI。
試著在啟動 X server 之前 insmod radeon。同時嘗試將 agpgart 編進核心,而不是編譯成模組。

當我 startx,我得到:"[drm] failed to load kernel module agpgart" 這個錯誤
這是由於您將 agpgart 編譯進核心,而不是編譯成模組。除非他出問題,否則別理它。

我使用 Radeon 顯示卡,我想要 TV-Out!
看看 ati-gatos 驅動程式。emerge -s gatos。

[color=Navy]不能用!我的卡又新又酷但是打?母静槐恢г/COLOR]
試試看二進位驅動程式。若使用 ati-drivers,http://www.schneider-digital. de/html/download_ati.html 有個清單。若還是不被支援,使用 fbdev。雖然它很慢,但是至少能用。

我的顯示卡是 PCI 介面,而且不能使用。救命啊!
在 "Device" 小?啟動 ForcePCIMode。

PHP 代码:
原始碼 5.1: 啟動 ForcePCIMode
Option "ForcePCIMode" "True" 

作者: 小劲鸭   发布时间: 2005-09-07

盛赞!
每篇教程都整成这模样就好了,看得也痒眼。

作者: soloforce   发布时间: 2005-09-07

狂赞一个……好帖,收藏ing……

作者: Zer4tul   发布时间: 2005-09-08

非常的想知道


x11-wm/e -* x11-plugins/e_modules -* x11-misc/engage -* x11-libs/ewl -* x11-libs/evas -* media-libs/imlib2 -* dev-libs/eet -* dev-db/edb -* x11-libs/ecore -* media-libs/etox -* media-libs/edje -* dev-libs/embryo -* x11-libs/esmart -* media-libs/epsilon -* media-libs/epeg -* app-misc/examine -* net-news/erss -* x11-misc/entrance -* app-misc/evidence -* media-libs/emotion -* media-gfx/elicit -* media-gfx/entice -* dev-util/e_utils -* dev-libs/engrave -* media-video/eclair -*

这么多要取消屏蔽的软件包是怎么知道的 用什么命令呢

作者: hfh   发布时间: 2005-12-16

还有个问题
x11-wm/e -* x11-plugins/e_modules -* x11-misc/engage -* x11-libs/ewl -* x11-libs/evas -* media-libs/imlib2 -* dev-libs/eet -* dev-db/edb -* x11-libs/ecore -* media-libs/etox -* media-libs/edje -* dev-libs/embryo -* x11-libs/esmart -* media-libs/epsilon -* media-libs/epeg -* app-misc/examine -* net-news/erss -* x11-misc/entrance -* app-misc/evidence -* media-libs/emotion -* media-gfx/elicit -* media-gfx/entice -* dev-util/e_utils -* dev-libs/engrave -* media-video/eclair -*

这么多包 你是怎么知道 这些包所依赖的包不在会是~x86里的呢

作者: hfh   发布时间: 2005-12-16

也许我所说的问题 可以 在make.conf中加入ACCEPT_KEYWORD="~x86" 就可以解决了

可是人家说上面的方法 不好 因为执行 emerge -uDv world的时候 有被降级的危险

所以想学会用 修改/etc/portage/package.keywords 的方法

作者: hfh   发布时间: 2005-12-16

这文章不但老,而且乱码还有点不少……

作者: Freesnake   发布时间: 2005-12-16

我想知道我2个问题的答案

作者: hfh   发布时间: 2005-12-17

好复杂 看到头大

作者: liweikundrag   发布时间: 2007-01-19

引用:
作者: hfh
非常的想知道


x11-wm/e -* x11-plugins/e_modules -* x11-misc/engage -* x11-libs/ewl -* x11-libs/evas -* media-libs/imlib2 -* dev-libs/eet -* dev-db/edb -* x11-libs/ecore -* media-libs/etox -* media-libs/edje -* dev-libs/embryo -* x11-libs/esmart -* media-libs/epsilon -* media-libs/epeg -* app-misc/examine -* net-news/erss -* x11-misc/entrance -* app-misc/evidence -* media-libs/emotion -* media-gfx/elicit -* media-gfx/entice -* dev-util/e_utils -* dev-libs/engrave -* media-video/eclair -*

这么多要取消屏蔽的软件包是怎么知道的 用什么命令呢
在每个ebuild文件里都有说明这个软件都会依赖那些包。

作者: wangflove   发布时间: 2007-01-19

以前自己做好了准备发到blog上的!~结果传拉半天传不上来阿!~结果就没发!~
呵呵!~~支持一下!~~要装3D的兄弟有福拉!~不用再去wiki自己看拉!~~

作者: dani-kenny   发布时间: 2007-01-19