硬體3D加速指南(轉)

amyz發表於2007-08-10
硬體3D加速指南(轉)[@more@]

  內容簡介:本指南描述瞭如何在Gentoo Linux的XFree86中使用XFree-DRM以獲得3D加速。

  1. 前言

  


  什麼是硬體3D加速?我為什麼需要使用它? 

  硬體3D加速可以允許你使用顯示卡上的圖形處理器來處理三維圖形渲染而不需要佔用寶貴的CPU資源。作為“軟體加速”的反面,它也被稱作“硬體加速”。在沒有硬體3D加速的情況下,CPU自身會被強制使用 Mesa軟體渲染函式庫來進行貼圖處理,這會佔用相當多的CPU資源。雖然XFree86一般都支援2D硬體加速,但它卻常常缺乏硬體3D加速功能。而對於某些需要進行3D渲染的工作(比如3D CAD和三維建模),三維硬體加速將會顯得非常重要。

  我如何才能使用硬體3D加速? 

  在大多數情況下,你可以選擇二進位制編碼驅動程式或者開放原始碼驅動程式。由於我們使用的作業系統是Linux 並且開放原始碼是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,後者為 ATI顯示卡提供了更為全面的影片功能的支援。

  什麼是 DRI? 

  Direct Rendering Infrastructure (),也就是所說的DRI,是一個允許應用程式以高效安全的方式直接訪問圖形處理硬體的框架控制系統。它包含了對X 伺服器、一些客戶端函式庫以及系統核心的某些修改。DRI最主要的用處是實現OpenGL的快速高效執行。

  什麼是XFree-DRM?它是如何與普通的XFree86進行關聯的? 

  XFree-DRM是一套為XFree86提供增強效能的元件,它透過為直接渲染新增必要的核心模組來為你的顯示卡提供3D加速。

  目的 

  本指南是為那些無法在XFree中使用DRI的使用者準備的。XFree-DRM適用於3dfx, gamma, i8x0, matrox, rage128, radeon, mach64(從xfree-drm-4.3.0-r7開始支援)以及 sis300系列驅動程式。由於2.4系統核心的直接渲染管理器(DRM)不再支援XFree 4.3,因此你需要安裝xfree-drm軟體包,不過,2.6系統核心可以支援XFree 4.3。但是Gentoo的 XFree-DRM軟體包尚無法在2.6系統核心中工作。請參看以獲得更多資訊。

  意見反饋 

  如果你有任何建議或者疑問,請將E-mail傳送到這裡: .

  2. 安裝XFree86並配置你的系統核心

  


  安裝 XFree86 

程式碼 2.1: 安裝 XFree86

# emerge x11-base/xfree

  配置你的系統核心 

  檢測你的晶片組並且開啟相應的核心支援。

程式碼 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)// 以上的輸出結果會因為不同的硬體而有所差異。

  在大多數情況下,系統核心應該含有以下的選項。以下是在使用gentoo-sources-2.4.20-r5的情況下進行配置的:

程式碼 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

程式碼 2.4: make menuconfig 選項

Processor type and features ---&gt

MTRR (Memory Type Range Register) support

Character devices ---&gt

/dev/agpgart (AGP Support)

[*] Intel 440LX/BX/GX and I815/I820/I830M/I830MP/I840/I845/I850/I860 support

// 請為你自己所使用的晶片組開啟相應的核心支援

[ ] Direct Rendering Manager (XFree86 DRI support)

  請確保Direct Rendering Manager (DRM,直接渲染管理器)已經處於關閉狀態。 XFree-DRM軟體包將會提供它所附帶的直接渲染管理器。2.4版本的系統核心可以支援 XFree 4.2。

  編譯並安裝你的系統核心 

程式碼 2.5: 編譯並安裝你的系統核心

# make dep && make clean bzImage modules modules_install

# mount /boot

# cp arch/i386/boot/bzImage /boot

  如果你想讓你的新核心使用一個bzImage以外的其他名稱,請將它複製到/boot/yourname 。當然,不要忘記修改grub.conf和lilo.conf,如果你使用的是LILO,你還需要執行/sbin/lilo 。

  3. 安裝 XFree-DRM 並配置直接渲染

  


  安裝 XFree-DRM 

程式碼 3.1: 安裝 XFree-DRM

# ACCEPT_KEYWORDS="~x86" emerge xfree-drm

  配置 XF86Config 

  用你喜歡的編輯器開啟/etc/X11/XF86Config,然後編輯這個檔案以讓它啟用DRI和GLX。

程式碼 3.2: XF86Config

...

Section "Module"

 Load "dri"

 Load "glx"

 ...

EndSection

...

Section "Device"

 Driver "radeon"

 ...

EndSection

...

Section "dri"

 Mode 0666

EndSection

  如果你正在使用其它顯示卡,請將"radeon"替換為你自己的驅動程式名稱。

  4. 測試3D加速

  


  用你的新核心啟動系統 

  用你的新核心啟動系統。現在你可以看看直接渲染是否已經開啟並且體驗它為你的系統所帶來的改善。

程式碼 4.1: 測試渲染功能

# startx// 如果agpgart已經被編譯為模組,你則不必為你的驅動程式或者agpgart載入模組,// 它們會被自動載入。

# glxinfo | grep rendering

direct rendering: Yes

// 如果你得到的提示是"No," 說明你的3D加速沒有被開啟或者你的顯示卡不支援3D加速.

# glxgears// 以預設大小測試你的FPS,你所得到的數字// 應該會比在安裝xfree-drm之前有顯著提高,我們建議你在CPU足夠空閒的情況下做這項測試。

  5. 使用CVS原始碼

  


警告: 如果一切都已經正常工作的話,請不要輕易嘗試。

註釋: CVS原始碼程式是一直在更新和變化的,因此也許你的配置不會和下面的講解完全一樣。

  你需要CVS原始碼版本嗎? 

  首先你得弄明白xfree-drm是否可以正常工作,如果它確實有問題並且不是由於你的配置錯誤而引起的話(你可以檢查Log檔案來進行驗證),你也許可以考慮一下CVS原始碼版本了。但是如果你不想編譯完整的CVS,你也可以找到許多daily driver snapshots(每日驅動程式更新快照)。

  CVS原始碼版本支援你的顯示卡嗎? 

  瀏覽一下DRI ,看看CVS版本的程式是否可以支援你的顯示卡,即便你沒有找到,你也可以嘗試一個與你的顯示卡類似型號的CVS程式。

警告: “Linux 2.4核心不支援AGP 8X,所以我不得不去尋找一個backport。現在這個backport可以正常工作了… 但是它修補得並不是那樣完美,而且它需要2.4.21的系統核心(使用vanilla成功執行,直接透過tarball 方式編譯)。首先從kernel.org上下載2.4.20-2.4.21的補丁,然後下載AGP 8X的補丁??你可以從郵件列表上的某個地方找到它。在打補丁的過程中會遇到一個有關pci_ids.h檔案的小問題,但是如果你開啟這個檔案並且看一下 reject list,這個問題便可以很容易的解決。現在有關AGP 8X的問題確實得到修復了,我可以使用 xfree-drm 在1600x1200解析度下進行工作(但是由於缺少DGA,因此速度有點慢)。(來自#gentoo頻道上的SanityInAnarchy)

重要: 這個補丁需要一點技巧才能安裝成功,你可以在 找到下載的地方。如果你可以在BIOS中關掉8X AGP並且開啟AGP 4X的話,也許你就可以不必使用這個補丁了。

  安裝CVS原始碼版本程式 

  按照本文件完成到“編譯並安裝你的系統核心”這一節,然後從 的第6步做到第8.3步即可。

  匿名CVS下載 

  為你的CVS檔案建立一個存放目錄:

程式碼 5.1: 為CVS建立一個目錄

# cd ~

# mkdir DRI-CVS

  檢視CVS原始碼程式更新:

程式碼 5.2: 檢視CVS原始碼程式更新

# cd ~/DRI-CVS

# cvs -d:pserver:anonymous@cvs.dri.sourceforge.net:/cvsroot/dri login// (當提示你輸入密碼時請按ENTER鍵)

# cvs -z3 -d:pserver:anonymous@cvs.dri.sourceforge.net:/cvsroot/dri co xc// -z3引數允許你在下載時啟用壓縮以節省時間

  更新你的CVS原始碼 

  也許以後你想要更新你的DRI原始碼本地副本以獲得最新的CVS版本,這時你可以使用以下的步驟:

程式碼 5.3: 更新本地副本

# cd ~/DRI-CVS

# cvs -z3 update -dA xc// -d引數允許自動建立子目錄。// -A引數允許你下載最近的主幹原始碼檔案而不是分支原始碼檔案。

  建立編譯樹 

  所有的目標檔案和庫檔案都應放在平行編譯樹而不是原始碼樹下面。你可以使用lndir 命令來建立編譯樹:

程式碼 5.4: 建立平行編譯樹

# cd ~/DRI-CVS

# ln -s xc XFree40

# mkdir build; cd build

# lndir -silent -ignorelinks ../XFree40

  編譯樹由指向CVS原始碼樹的符號連線構成。我們建議有經驗的使用者建立多個編譯樹以方便你使用不同的選項進行編譯和測試。

  編輯 host.def 檔案 

  ~/DRI-CVS/build/xc/config/cf/host.def檔案用於配置XFree86的編譯過程。你可以透過對這個檔案的修改來定義你的編譯選項或者為你自己的系統進行某些特定的調整。預設的host.def看起來應該像這個樣子:

程式碼 5.5: host.def

#define DefaultCCOptions -Wall

// 適用於 i386 構架:

#define DefaultGcc2i386Opt -O2

// 適用於 Alpha 構架:

#define DefaultGcc2AxpOpt -O2 -mcpu=ev6 (or similar)

// 適用於所有計算機構架

#define LibraryCDebugFlags -O2

#define BuildServersOnly YES

#define XF86CardDrivers vga tdfx mga ati i810

#define LinuxDistribution LinuxRedHat

#define DefaultCCOptions -ansi GccWarningOptions -pipe

#define BuildXF86DRI YES

/* Optionally turn these on for debugging */

/* #define GlxBuiltInTdfx YES */

/* #define GlxBuiltInMga YES */

/* #define GlxBuiltInR128 YES */

/* #define GlxBuiltInRadeon YES */

/* #define DoLoadableServer NO */

#define SharedLibFont NO

程式碼 5.6: host.def的後續內容

// 請注意,你的顯示卡驅動程式名稱應該加入到XF86CardDrivers這一行// 如果你想在Mesa和DRI驅動程式中使用3DNow!最佳化指令,請加入以下的程式碼:

#define MesaUse3DNow YES

// 如果你沒有AMD處理器,你同樣可以使用這個選項。// DRI將在執行時自動檢查你的處理器是否支援3DNow!,如果支援的話,DRI將自動啟用它。

  如果你想在Mesa和DRI驅動程式中使用SSE最佳化指令,你必須將你的系統核心升級到2.4.X版本。 Mesa將在執行過程中檢查你的處理器和作業系統是否都支援SSE指令。另外,如果你要將Mesa編譯進DRI,你需要保證/usr/src/linux下面已經包含了Linux 2.4.x 的核心標頭檔案。如果你的/usr/src/linux下面是較早的Linux核心檔案而且你又開啟了SSE最佳化指令支援, Mesa將給你發出一個警告並且停止編譯。如果你確實已經安裝了2.4.x核心,請在host.def中加入以下的內容:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-941269/,如需轉載,請註明出處,否則將追究法律責任。

相關文章