2009年12月20日

[轉載]Xorg 7.5

http://www.abc188.com/info/html/xingyezixun/yejiedongtai/20090514/146478.html
========================================
釐清了xorg裡的一些概念 今天看到一篇不錯的英文文章,解釋了xorg實現裡的一些概念,也解決了我的一些疑惑。概括並解釋一下。 期待已久的DRI2被排除出了Xorg 7.4版本了,為什麼呢? 是為了給GEM取代TTM讓路,而DRI2的實現目前依賴於TTM。 目前的Xserver渲染架構嚴重落後
   釐清了xorg裡的一些概念
今天看到一篇不錯的英文文章,解釋了xorg實現裡的一些概念,也解決了我的一些疑惑。概括並解釋一下。

期待已久的DRI2被排除出了Xorg 7.4版本了,為什麼呢? 是為了給GEM取代TTM讓路,而DRI2的實現目前依賴於TTM。

目前的Xserver渲染架構嚴重落後於時代,自Xfree時代遺留的問題在Xorg裡也未得到足夠的重視,所以現在到了革新的時候。2D加速,3D加速 等都依賴於一個好的內存和執行管理器,這也是最難的部分。目前的xorg驅動都實現了各自的存儲管理,提供DRI1接口,並負責 modesetting。

Memory manger位於內核中,並為用戶空間的程序提供一套操作API。由各個不同的顯卡硬件抽象出相同的操作,大家共享這部分代碼,剩下的與具體硬件相關的部 分由各個顯卡分別實現。老的TTM管理器API複雜,而且不適合現代顯卡架構,於是Intel提出了GEM來取代之,目前GEM裡只包含Intel自己的 硬件相關部分,ATI驅動的一個分支也實現了對GEM的支持。GEM目前已經進入2.6.28版本的內核。

Kernel mode setting:內核也做一部分modesetting的工作,比如系統引導的時候顯示的信息,這些都是內核提前做了mode setting,而我們在進入X前,加載xorg驅動模塊的時候,xorg驅動再做一次modesetting,重置顯示設定,所以會有屏幕閃爍的情況出 現。現在的kernel mode setting就是要把這部分功能移到內核裡,完全由內核做mode setting。Fedora 9/10已經實現了這個功能,所以從啟動內核到進入X不會有閃爍,一切都很平滑,並且可以做很多eye candy的東西。目前KMS還未進入內核,最早也要等到2.6.29版本了。

DRI2是下一代的Direct Rendering Infrastructure,具有重定向(redirect) direct rendering功能。在當前,一個程序如果使用了OpenGL窗口,顯示內容是直接寫到framebuffer裡的。這會跟使用了composite 功能的窗口管理器WM衝突,這是為什麼Google Earth在compiz下支離破碎的原因。而通過DRI2,OpenGL窗口內容先被重定向的offscreen memory裡,然後由WM負責輸出,就不再會有衝突。而DRI2是基於老的TTM設計的,需要針對GEM作修改。

2D加速方面,EXA 將要取代老的XAA,但EXA也只是xorg server全面轉向OpenGL前的一個臨時解決方案。XAA不對大量常用2D操作作加速,並且對XRender的加速也支持不夠。Intel又提出了 UXA來取代EXA,當前UXA提供和EXA同樣的API,但是利用了新的GEM管理器。

Redhat的一個大牛不滿X架構的嚴重老化,另起爐灶設計一個全新的X server,代號Wayland,目前還不實用,拭目以待吧。

針對GEM修改後的DRI2預計會伴隨Xserver 1.6於09年初發佈,同時還將釋出RandR 1.3。而Xorg 7.5預計09年四月發佈,屆時將會伴隨Xserver 1.7。至於kernel mode setting,Ubuntu開發者將於下月召開的會議上討論是否用Fedora的Plymouth替換Usplash,如果在9.04版裡引入 Plymouth,我們就能用上KMS。Mesa 7.2不支持GEM,git版本的似乎也不行,估計要到7.3/7.4才會支持。
轉自:http://portis21.spaces.live.com/ ... 73A746A31!532.entry

未來Xwindow=compiz+(Wayland)+DRI2+UXA+GEM+kernel mode setting
隨著Linux顯示效率的提升,大型遊戲不會再是Windows的專利了。Intel公然搞GEM提高3D性能,就是明擺著要Linux向桌面市場開火。

沒有留言: