|
作者:
?網(wǎng)絡(luò)
日期:?
2009-07-01
?
|
http://www.linuxgraphics.cn/xwindow/some_concepts_of_xorg.html
?
|
今天看到一篇不錯(cuò)的英文文章,解釋了xorg實(shí)現(xiàn)里的一些概念,也解決了我的一些疑惑。概括并解釋一下。 期待已久的DRI2被排除出了Xorg 7.4版本了,為什么呢? 是為了給GEM取代TTM讓路,而DRI2的實(shí)現(xiàn)目前依賴于TTM。 目前的Xserver渲染架構(gòu)嚴(yán)重落后于時(shí)代,自Xfree時(shí)代遺留的問題在Xorg里也未得到足夠的重視,所以現(xiàn)在到了革新的時(shí)候。2D加速,3D加速等都依賴于一個(gè)好的內(nèi)存和執(zhí)行管理器,這也是最難的部分。目前的xorg驅(qū)動(dòng)都實(shí)現(xiàn)了各自的存儲(chǔ)管理,提供DRI1接口,并負(fù)責(zé)modesetting。 GPU Memory manger位于內(nèi)核中,并為用戶空間的程序提供一套操作API。由各個(gè)不同的顯卡硬件抽象出相同的操作,大家共享這部分代碼,剩下的與具體硬件相關(guān)的部分由各個(gè)顯卡分別實(shí)現(xiàn)。老的TTM管理器API復(fù)雜,而且不適合現(xiàn)代顯卡架構(gòu),于是Intel提出了GEM來取代之,目前GEM里只包含Intel自己的硬件相關(guān)部分,ATI驅(qū)動(dòng)的一個(gè)分支也實(shí)現(xiàn)了對(duì)GEM的支持。GEM目前已經(jīng)進(jìn)入2.6.28版本的內(nèi)核。 Kernel mode setting:內(nèi)核也做一部分modesetting的工作,比如系統(tǒng)引導(dǎo)的時(shí)候顯示的信息,這些都是內(nèi)核提前做了mode setting,而我們?cè)谶M(jìn)入X前,加載xorg驅(qū)動(dòng)模塊的時(shí)候,xorg驅(qū)動(dòng)再做一次modesetting,重置顯示設(shè)定,所以會(huì)有屏幕閃爍的情況出現(xiàn)?,F(xiàn)在的kernel mode setting就是要把這部分功能移到內(nèi)核里,完全由內(nèi)核做mode setting。Fedora 9/10已經(jīng)實(shí)現(xiàn)了這個(gè)功能,所以從啟動(dòng)內(nèi)核到進(jìn)入X不會(huì)有閃爍,一切都很平滑,并且可以做很多eye candy的東西。目前KMS還未進(jìn)入內(nèi)核,最早也要等到2.6.29版本了。 DRI2是下一代的Direct Rendering Infrastructure,具有重定向(redirect) direct rendering功能。在當(dāng)前,一個(gè)程序如果使用了 OpenGL 窗口,顯示內(nèi)容是直接寫到framebuffer里的。這會(huì)跟使用了composite 功能的窗口管理器WM沖突,這是為什么Google Earth在compiz下支離破碎的原因。而通過DRI2, OpenGL 窗口內(nèi)容先被重定向的offscreen memory里,然后由WM負(fù)責(zé)輸出,就不再會(huì)有沖突。而DRI2是基于老的TTM設(shè)計(jì)的,需要針對(duì)GEM作修改。 2D加速方面,EXA 將要取代老的XAA,但EXA也只是xorg server全面轉(zhuǎn)向 OpenGL 前的一個(gè)臨時(shí)解決方案。XAA不對(duì)大量常用2D操作作加速,并且對(duì)XRender的加速也支持不夠。Intel又提出了 UXA來取代EXA,當(dāng)前UXA提供和EXA同樣的API,但是利用了新的GEM管理器。 Redhat的一個(gè)大牛不滿X架構(gòu)的嚴(yán)重老化,另起爐灶設(shè)計(jì)一個(gè)全新的X server,代號(hào)Wayland,目前還不實(shí)用,拭目以待吧。 針對(duì)GEM修改后的DRI2預(yù)計(jì)會(huì)伴隨Xserver 1.6于09年初發(fā)布,同時(shí)還將釋出RandR 1.3。而Xorg 7.5預(yù)計(jì)09年四月發(fā)布,屆時(shí)將會(huì)伴隨Xserver 1.7。至于kernel mode setting,Ubuntu開發(fā)者將于下月召開的會(huì)議上討論是否用Fedora的Plymouth替換Usplash,如果在9.04版里引入 Plymouth,我們就能用上KMS。Mesa 7.2不支持GEM,git版本的似乎也不行,估計(jì)要到7.3/7.4才會(huì)支持。 Reference: |
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

