建筑Mesa是OpenGL規(guī)范的開(kāi)源實(shí)現(xiàn)讓顯卡的3D加速特性透過(guò)此得到_第1頁(yè)
建筑Mesa是OpenGL規(guī)范的開(kāi)源實(shí)現(xiàn)讓顯卡的3D加速特性透過(guò)此得到_第2頁(yè)
建筑Mesa是OpenGL規(guī)范的開(kāi)源實(shí)現(xiàn)讓顯卡的3D加速特性透過(guò)此得到_第3頁(yè)
建筑Mesa是OpenGL規(guī)范的開(kāi)源實(shí)現(xiàn)讓顯卡的3D加速特性透過(guò)此得到_第4頁(yè)
建筑Mesa是OpenGL規(guī)范的開(kāi)源實(shí)現(xiàn)讓顯卡的3D加速特性透過(guò)此得到_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Gallium3D架構(gòu)文檔Mesa 是OpenGL規(guī)范的開(kāi)源實(shí)現(xiàn),讓顯卡的3D加速特性透過(guò)此得到施展。從Mesa7.5開(kāi)始Mesa引入了Gallium3D架構(gòu)。開(kāi)發(fā)Mesa7.5之前的版本的驅(qū)動(dòng)比較復(fù)雜,每個(gè)顯卡廠商的3D驅(qū)動(dòng)都有各自不同的應(yīng)用后端,通過(guò)此調(diào)用Mesa的API來(lái)實(shí)現(xiàn)3D加速。Intel、AMD和NVIDIA這三大廠商的顯卡都具備各自不同的應(yīng)用后端,造成了開(kāi)發(fā)和維護(hù)困難。而Mesa 7.5最新引入的Gallium3D則是相當(dāng)先進(jìn)的一項(xiàng)技術(shù),即使目前為止還未完全成熟。Callium3D提供一套統(tǒng)一的API,這套API將標(biāo)準(zhǔn)的硬件特性(而非軟件特性)暴露出來(lái)(如shader unit

2、s),也就是說(shuō),Callium3D直接與統(tǒng)一的硬件級(jí)特性打交道,而非充當(dāng)一個(gè)純軟件層。因此,這些API使得OpenGL 1.x/2.x,OpenGL 3.x,OpenVG,GPGPU架構(gòu)甚至 Direct3D 的實(shí)現(xiàn),都只需要通過(guò)一個(gè)單獨(dú)的后端即可。而無(wú)須各個(gè)廠商自行開(kāi)發(fā)各自不同的后端。1、 從DRI演進(jìn)到Gallium3D DRI在Gallium3D之前,Mesa為了實(shí)現(xiàn)硬件加速,其DRI體系結(jié)構(gòu)如下:圖 Mesa DRI(非Gallium3D)作者認(rèn)為,這個(gè)模型有下面的缺點(diǎn):1. Mesa和驅(qū)動(dòng)之間的Leaky interface;2. 驅(qū)動(dòng)體系龐大而且越來(lái)越復(fù)雜;3. API OS相關(guān)的

3、東西也寫(xiě)在驅(qū)動(dòng)里面了;Mesa DRI的模型導(dǎo)致DRI 驅(qū)動(dòng)層過(guò)于龐大。而DRI驅(qū)動(dòng)通常是硬件相關(guān)的,這就導(dǎo)致為了適用新的設(shè)備,開(kāi)發(fā)工作較大。所以有人覺(jué)得有必要在DRI驅(qū)動(dòng)這一層,提煉一些硬件無(wú)關(guān)的東西出來(lái)。于是DRI Driver初步被劃分為三層:圖 DRI 驅(qū)動(dòng)分層(非Gallium3D)這個(gè)模型的特點(diǎn)是:1. 將API,OS,HW分開(kāi);2. 創(chuàng)建了新的接口;3. 分割驅(qū)動(dòng);(和第一條差不多了)現(xiàn)在將DRI驅(qū)動(dòng)分層的想法付諸實(shí)施,就得到了下面的模型:圖 DRI 驅(qū)動(dòng)分層(Gallium3D)這個(gè)模型帶來(lái)了下述特點(diǎn):1. 增加了State tracker, HW Driver, Winsys

4、三個(gè)模塊;2. TG-Gallium驅(qū)動(dòng)棧2、 Gallium3D的特點(diǎn)驅(qū)動(dòng)模型:1. 由GL3(OpenGL 3.0?),NV_GPU4, i965等軟硬件抽象出來(lái)的接口;2. 常態(tài)狀態(tài)對(duì)象;3. 簡(jiǎn)單繪圖接口;如DrawArrays, DrawElements;4. 字節(jié)碼形式的統(tǒng)一Shade語(yǔ)言;5. Render目標(biāo)作為私有緩沖;6. 可以將硬件驅(qū)動(dòng)運(yùn)行在新的接口,如GL3,GLES等;7. 可以將硬件驅(qū)動(dòng)運(yùn)行在新的窗口系統(tǒng);硬件驅(qū)動(dòng):1. 比DRI驅(qū)動(dòng)簡(jiǎn)單很多;2. 接口:a) -Create/Bind/Delete狀態(tài)對(duì)象;b) -Draw,1-2個(gè)入口;c) -緩沖管理;d) -

5、Flush3. 每個(gè)Gallium驅(qū)動(dòng)定義它自己的OS層(Winsys)接口;4. 通過(guò)重新實(shí)現(xiàn)WInsys層可以Re-target驅(qū)動(dòng);如miniglx,EGL;Mesa State Tracker1. 實(shí)現(xiàn)了當(dāng)前的Mesa驅(qū)動(dòng)模型;2. 使用了新的硬件驅(qū)動(dòng)接口3. 硬件無(wú)關(guān),可重用;4. 將GL狀態(tài)轉(zhuǎn)化為常類型對(duì)象;5. 處理了所有費(fèi)解的GL概念:a) -所有不同的GL繪制路徑;b) -像素路徑操作,DrawPixels, Bitmap, CopyT exSubImagec) -GL紋理語(yǔ)義;d) -紋理環(huán)境,GL1.5 shader, GLSLO/S Dependencies1. 每一個(gè)

6、Gallium驅(qū)動(dòng)會(huì)定義其OS層Winsys接口;2. 通過(guò)切換Winsys層可以retarget驅(qū)動(dòng);Winsys Layer1. 實(shí)現(xiàn)了兩個(gè)接口:a) DRI驅(qū)動(dòng)接口:CreateDevice, CreateContext,SwapBuffers (*)b) 硬件驅(qū)動(dòng)的Winsys接口:緩沖管理,命令提交;2. 封裝了下述內(nèi)容:a) DRI lock和cliprectsb) Swapbuffers, page flipping.c) 通用的操作系統(tǒng)相關(guān)內(nèi)容;3、 Gallium3D的參考實(shí)現(xiàn)Mesa提供了Gallium3D驅(qū)動(dòng)的軟件參考實(shí)現(xiàn)Softpipe:圖 Gallium3D驅(qū)動(dòng)的參考

7、實(shí)現(xiàn)SoftpipeMesa同時(shí)還提供了Gallium3D驅(qū)動(dòng)的i915參考實(shí)現(xiàn)Softpipe:圖 Gallium3D驅(qū)動(dòng)的參考實(shí)現(xiàn)i9154、 Gallium3D的使用1.各模塊簡(jiǎn)介及功能在目前最新的gallium版本中(Mesa-7.8.2),gallium目錄下主要有以下子目錄:auxiliary,drivers,include,state_trackers。a) include是gallium提供給前端的接口,定義了一些gallium中重要的概念比如context,screen等以及各種state,所有的頭文件都遵循類似以下的形式:struct pipe_context struct

8、 pipe_winsys *winsys;struct pipe_winsys *screen;.void (*destroy)( struct pipe_context*);void (*draw_arrays)( struct pipe_context *pipe,Unsigned mode, unsigned start, unsigned count);.整個(gè)gallium對(duì)外的接口都是這種含有大量函數(shù)指針的結(jié)構(gòu),通過(guò)這種方式可以把前端調(diào)用和后端實(shí)現(xiàn)分開(kāi),使得運(yùn)行時(shí)決定應(yīng)該調(diào)用哪個(gè)具體的實(shí)現(xiàn)函數(shù)。此外,gallium中提供的接口都是針對(duì)于硬件概念而非軟件概念,這樣降低了后端的實(shí)現(xiàn)難度。

9、b) auxiliary是gallium中的工具模塊,包括了處理shader程序的tgsi模塊,用來(lái)實(shí)現(xiàn)存儲(chǔ)和對(duì)象復(fù)用的cso_cache模塊等等c) drivers是目前已經(jīng)實(shí)現(xiàn)了的gallium的后端,針對(duì)不同的硬件,有不同的實(shí)現(xiàn),其中softpipe是軟件模擬的顯示設(shè)備的實(shí)現(xiàn),具有方便調(diào)試易于修改的特點(diǎn)。d) state_trackers是目前已經(jīng)實(shí)現(xiàn)了的前端,其中包括mesa即OpenGL的實(shí)現(xiàn)以及vegaOpenVG的實(shí)現(xiàn),其中OpenVG是使用gallium的最好的例子。2. 接口使用方法gallium的使用方法是通過(guò)一系列的函數(shù)協(xié)作來(lái)完成,它具有一個(gè)顯示設(shè)備具有的上下文概念,整個(gè)庫(kù)的使用圍繞著這個(gè)上下文而來(lái):a) 建立上下文b) 設(shè)置各渲染階段的處理狀態(tài)函數(shù)i. 創(chuàng)建狀態(tài)ii. 綁定狀態(tài)c)設(shè)置上下文處理對(duì)象bufferd)調(diào)用運(yùn)行函數(shù)入口點(diǎn)一系列draw函數(shù)f)銷毀創(chuàng)建的buffer對(duì)象、狀態(tài)對(duì)象g)銷毀上下文3. tgsi的使用Tgsi是tg Shader Infrastructure的縮寫(xiě),簡(jiǎn)單來(lái)說(shuō)這是一個(gè)shader的編程語(yǔ)言,語(yǔ)言的方式類似于匯編,操縱一系列shader

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論