@jserv19:59
@fridgogogo
@jserv20:00
@jserv....... buffering .........
@jesse_時間到囉 :)
* jesse_ 拍手~
@moto_yoyoyo
@fridclap
* moto_ 拍手
Vela:)
* AceLan 啪啪啪
@jserv..... starts ....
@jserv各位好,在下是 Jim Huang <jserv @ kaffe.org>,有幸能在這裡與各位朋友
@jserv分享一些經驗。當然,小弟只是與各位分享,並不是什麼權威,所以很可能無
@jserv法招架,但沒關係,請多討論,說不定在眾人腦力激盪、合力找資料與分析下
@jserv,說不定很快就可以釐清問題。
@jserv本次 IRC Conference 基本上是 FreeDesktop.org 與 X.org 嶄新發展介紹的
@jserv續集,這裡假設與會的朋友已有上一場的經驗與認知,如果沒有,可以自行參
@jserv閱過去的 IRC log:
@jserv  http://ircconf.debian.org.tw/
@jserv感謝各位朋友抽空共襄盛舉,再來要感謝神奇的網路把物理距離遙遠的我們,
@jserv能夠透過 IRC 作即時的交流,有任何問題或建言,請踴躍提出,謝謝!
@jserv---------------------------------------------------------------------
@jserv  Copright (c) 2004 Jim Huang and Debian@Taiwan IRC Conference
@jserv                    Attendants. All rights reserved.
@jserv  Permitted to redistribute the following IRC log content with
@jserv  authors' information (nickname, date, or something identified)
@jserv  without modifications.
@jserv  For advanced usage (such as COMMERCIAL purpose and publish),
@jserv  you MUST contact the original author(s).
@jserv---------------------------------------------------------------------
@jserv本次 IRC Conference 大致分兩個部分,前半部討論嶄新的 X Extensions,而
@jserv後半部則是簡單介紹一些非 FreeDesktop.org 直接相關,但是頗值得一書的項
@jserv目,當然也包含筆者近來進行的一些計畫與實驗。關於嶄新的 X Extensions,
@jserv筆者規劃了以下流程:
@jserv    GL --> DRI/DRM --> X Render Extension --> Font (Xft / Fontconfig)
@jserv      \
@jserv       \__
@jserv          \--- Cairo --> Glitz
@jserv                                                                                
@jserv    XDamage + XFixes --> XComposite
@jserv                                                                                
@jserv    Sun Looking Glass --> XEvIE
@jserv    XInput Hotplug
@jserv有鑑於許多朋友反應上次 IRC Conference 的節奏過快,所以本次偏向較少的文
@jserv字與較多的討論,還請各位朋友踴躍提問。
@jserv---------------------------------------------------------------------
-!- _benny_ [~benny@218-175-26-94.dynamic.hinet.net] has joined #debian.tw
@jservDRI -- Direct Rendering Infrastructure
@jservDRI 是 XFree86 相當重要的嶄新設計,這在許多層面已經跳脫傳統 Client /
@jservServer 的架構了。Client / Server 架構下使用相當緩慢的 transport 機制
@jserv,從 Client 端將 rendering 指令,送到 Server 端,這在普通的應用來說,
@jserv已經足夠了,但是對於 3D Graphics 顯然是很大的效能瓶頸 -- 耗費太多時間
@jserv在 round-trip (繪圖指令的往返) 通信上 [按1]。於是,能否提供更為直覺、
@jserv簡單的設計,讓 client 可以直接與 Graphics Hardward 對話呢?
@jserv  [按1] X Window System 的 Transport 瓶頸可以從其架構得知 --
@jserv        http://gallery.debian.org.tw/2004-10-21/x_arch_comparison ]
@jserv在探討 DRI 之前,筆者要強調 DRI 對於 XFree86 / XOrg 的重要性。較早接
@jserv觸 Linux 或 FreeBSD 的朋友都經歷過 XFree86 3.x 系列必須選用特定顯示卡
@jservX server 的年代,當時的設計還是僅依循 DDX (Device-Dependent X) 與 DIX
@jserv(Device-Independent X) 的劃分,其硬體加速能力也是有相當的限制。
-!- yungyuc [~yyc@220-134-24-5.HINET-IP.hinet.net] has joined #Debian.tw
@jserv而在 March 8, 2000 的 XFree86 4.0 版釋出後,有了完全的改觀,一來是整合
@jservMetroLink (一家相當著名的商業 X Server 製造商 [按2]) 貢獻的模組化程式
@jserv碼,二來就是 DRI 架構的落實,給予更大的彈性與更好的表現。這段發展歷史
@jserv變遷,筆者整理成以下的表格:
@jserv日期       |      重大事件
@jserv(年/月/日) |
@jserv----------- ----------------------------------------------------------
@jserv1998/8     | 展開 DRI High Level 設計 (評估階段)
@jserv1998/12    | 展開 DRI Low Level 設計
@jserv1999/1     | DRI 實作計畫展開,與 MESA (Free/Open Source Open GL 實作)
@jserv           | 計畫整合發展
@jserv1999/2/1   | MESA 3.1 採 XFree86 / BSD / MIT 型態授權
@jserv1999/2/16  | SGI 將其 GLX (GL Extension) 實作以 open source 授權釋出
@jserv1999/5/12  | DRI Low Level 設計文件上線
@jserv1999/6     | DRI 1.0 實作釋出
@jserv2000/3/8   | XFree86 version 4.0 版釋出
@jserv2000/6     | SGI 捐出 GLX 與字型處理技術給 XFree86
@jserv2000/10/27 | X Render Extension 首度現身於 XFree86 4.0.1d
@jserv  [按2] 筆者已經找不到 MetroLink 公司的網頁了
@jserv---------------------------------------------------------------------
@jservQuestions?
@jserv[工商服務時間]
_benny_LOL
@fridha
@AceLanyo
@jserv新酷音的發展網頁已經上線,請多加支持: http://chewing.csie.net/
@jserv謝謝!
@jserv---------------------------------------------------------------------
@AceLanKDE@Taiwan 聚會 04/01/23 請參考網頁 http://kde.linux.org.tw/
@AceLan謝謝
@jserv直接與硬體溝通的 Graphics Toolkits / Window System 相繼被提出,也有不
@jserv錯的效能表現,但是在 X Window System 的設計原則,是希望透過層層的架構
@jserv,讓硬體能夠抽象化,是否意味著我們將無法處理 3D Graphics 呢?這是個相
@jserv當大的挑戰,一方面要能處理硬體,另一方面要依循 X Window System 的設計
@jserv原則,於是 XFree86 Developer 提出 DRI (Direct Rendering Infrastructure)
* AceLan 笑得倒在地上打滾。
_benny_
@jserv的機制。
@jserv不同於過去使用 Xlib 來傳遞 rendering request 給 X server 的方式,DRI
_benny_來不及
@jserv引入一個捷徑,重點在於事先部署好能夠直接與硬體溝通的 Kernel Driver,然
@jserv後 DRI 直接將 rendering commands/data 傳遞給該 driver,X Client 在此機
@jserv制下,仍是與其他 2D 或 3D X Client 共享 X Resources。那麼,究竟是哪個環
-!- descent [~descent@219-84-137-217-adsl-tpe.static.so-net.net.tw] has quit [EOF From client]
@jserv節特別了呢?
@jservX Resources 的處理還是透過 X server 原有的機制,但是真實的 rendering,
@jserv或者明確來說,對螢幕/輸出裝置的顯示,是直接透過 Kernel-level driver 來
@jserv實現的。這意味著,透過 DRI,Graphics driver 的開發者可以將過去開發的 DDX
@jservdriver 移轉到 DRI Kernel Driver、Client DRI Driver library,或者是 X
@jservserver 中,這樣一來,除了效能的優勢,再來是安全性的考量,理論上,User
@jserv---------------------------------------------------------------------
@jservQuestions?
_benny_nope
* jserv 納悶:「這麼枯燥的文字大家怎麼都看得懂?」
@frid看不懂才沒問題..Orz
_benny_請問
@jserv稍微補充一下
_benny_xfree-drm
_benny_是否沒有支援 2.6 kernel?
* AceLan 在等下次的工商時間 XD
@jserv_benny_: 有的
_benny_AceLan: 讓人家先啦6
@AceLan_benny_: 一起阿
@jserv_benny_: 但是 Kernel 2.6 的 DRM 明顯比 2.4 series 少許多
-!- Sinsun [HydraIRC@219-84-86-97-adsl-tpe.static.so-net.net.tw] has joined #debian.tw
_benny_jserv: 啊。。那請問 kernel 內的跟自己弄成 module 的插在那裡
@jserv_benny_: 因為 Linux Kernel 2.6 採用新的 MMIO 機制
@jserv_benny_: 好問題,稍後會介紹
_benny_ok
_benny_請繼續
@jserv---------------------------------------------------------------------
@jserv有了以上的概念,咱們先理解以下關鍵字:
@jserv  . RM --> Resource Management
@jserv  . 2D --> 2D Commands and Data
@jserv  . 3D --> 3D Commands and Data
@jserv  . SAREA --> DRM Shared Memory
@jserv接著就要進入重頭戲 -- XFree86 4.x DRI 運作示意圖:
@jserv  http://gallery.debian.org.tw/2004-12-02/dri_gram
@jserv是的,DRI 的引入後,整個軟體架構變得相當複雜,讓我們抽絲剝繭,揭開這一切
@jserv神秘的面紗。
@jserv---------------------------------------------------------------------
@jserv這裡,我們將停頓片刻,讓各位看清楚這複雜的 DRI 架構
@jserv呼應上一場 IRC Conference 裡頭的重點:
@jserv  「X Window System 的精髓在於 X Protocol」
@jserv由上往下看,在 Xlib 之下的就是 Protocol Engine,為數眾多的 command/data
@jserv組合將透過網路 (廣義的說法) 派送到 Server,而 X server 處理 X Protocol 則
@jserv有對應的 Protocol Decoder,這個部分並沒有涉入多少 Grapghics,就抽象來說,
@jserv可以視為 Data bus,於是我們稱為 X Transport,這是無法避免的成本,儘管已經
@jserv有許多改良的途徑相繼提出,比方說透過 POSIX Shared Memory。
@jserv圖-1 中央的流程便是我們熟知的模式,而一旦導入 X11/OpenGL 後,情勢就有很大
@jserv的轉變。
@jserv---------------------------------------------------------------------
-!- descent [descent2@219-84-137-217-adsl-tpe.static.so-net.net.tw] has joined #debian.tw
@jserv再度補充,Transport 的實作幾乎都是商業 X server 的賣點
@jserv以 Sun 的 X Window System 來說,其 X11 Transport 的設計就領先同業有相當大的距離
@jserv這一方面是針對 Sparc 作了最佳化,另一方面是獲得 Solaris 作業系統的整合
@jserv但無論如何,我們可以發現另一個瓶頸
@jserv就是 Rendering 的處理
@jserv我們的重點將置放於 X11/OpenGL 的展現
@jservDirect rendering program (3D):
@jservDirect rendering (3D data) -> 3D data -> Graphics Hardware
@jservDirect rendering program (2D):
@jserv  X Protocol Encode -> Protocol Decode -> DIX ->
@jserv  XAA -> DDX Driver -> Graphics Hardware
@jserv
@jservIndirect rendering program (2D):
@jserv  X Protocol Encode -> Protocol Decode -> DIX ->
@jserv  XAA -> DDX Driver -> Graphics Hardware
@jservIndirect rendering program (3D):
@jserv  X Protocol Decode -> GLX -> Mesa (including SW rasterizer) ->
@jserv  DDX Driver -> Graphics Hardware
@jserv---------------------------------------------------------------------
@jservQuestions
@jserv回應剛剛 _benny_ 提到的問題
-!- SchizShia [C@61-230-80-229.dynamic.hinet.net] has joined #debian.tw
_benny_有點難懂
_benny_XD
@jserv在過去 XFree86 3.x 系列的實作,DDX driver 有很多部分是處理底層 device routines
@jserv我們都知道作業系統在做 content switching 是無法避免的成本消耗
_benny_
@jservDDX driver 都帶有許多 magic 成分在
@fridmagic
@jserv除了 XFree86 4.x 的 DRI 之外,有個稱為 Utah GLX 的架構
@jserv在觀念上是相當接近的,但是實作的技術有很大的落差
@jservDRI 特別之處是需要 Kernel Level 的整合
-!- how [~how@59-104-242-123.adsl.dynamic.seed.net.tw] has joined #debian.tw
@jserv現在的問題在於能否降低非必要的 latency
_benny_true
@jserv[工商服務時間]
@AceLanQt Quarterly 中文翻譯計畫 歡迎大家一起參與 - http://kde.linux.org.tw/index.php?Qt%20Quarterly%28Traditional%20Chinese%29
SchizShia...
@fridha
-!- tedyu [~tedyu@79-208.dorm.ncu.edu.tw] has joined #debian.tw
* AceLan 貪婪地舔了舔 _benny_ 的臉。
@jserv請支持 Qt Quarterly 中文翻譯計畫  :-)
_benny_歡迎各位參加 GOT 的聚會 http://wiki.gentoo.org.tw/index.php/GentooUserParty2004-1 也有 jserv 的演講喔!!
_benny_可惡, AceLan 打好再那邊等
* AceLan 笑得倒在地上打滾。
_benny_聚會日期是 1/15
@jserv對了,有個好消息
@fridtrigger
@jserv感謝 courage 兄的貢獻,現在成果已經進駐 svn.csie.net,請見:
@jserv    http://sdl-im.csie.net/
@jserv這個專案的目標就是希望能夠提供 SDL 下的輸入法解決方案,目前 MS-IME
@jserv與 XIM 都已經初步支援了,希望最後這些成果可以整合到 SDL 官方 release
@jserv有興趣參與者,請聯絡 courage 兄或我,謝謝!
@jserv以往 SDL 的遊戲無法使用輸入法的窘境已經克服了!
@fridcool
_benny_廣告打完了
@jservback
@jserv---------------------------------------------------------------------
* _benny_ 趁機非踢 AceLan
@jserv再回到上圖
@jserv使用 MMIO: (Memory-mapped I/O)
@jserv  . OpenGL Renderer --> Graphics Hardware  
@jserv  . DDX Driver --> Graphics Hardware
@jserv使用 SHM: (Shared Memory IPC)
@jserv  . DRM Library --> SAREA
@jserv使用 DMA:
@jserv  . DRM Driver --> Graphics Hardware
@jserv這裡是非常難懂的一段落,必須有足夠的 H/W Graphics Devices 知識才能徹底理解
@jserv我試著用很簡單的話帶過
@jserv為何要分如此多層次?
@jserv我們都知道 C/S 架構下的衝擊非常的大,DRI 架構的提出,就是提供許多緩衝的設計
@jserv讓 SHM / MMIO / DMA 等基礎建立一系列 Hardware Acceleration 的可能性
@jserv---------------------------------------------------------------------
@jservQuestions?
* jserv 的網路卡住了 :(
@frid!!
kanruorz
SchizShia...
@jserv各位,小弟要換個 AP
@jserv造成不便請多見諒
@fridcheer jserv
@jserv[工商服務時間]
_benny_歡迎各位參加 GOT 的聚會 http://wiki.gentoo.org.tw/index.php/GentooUserParty2004-1 也有 jserv 的演講喔!!
_benny_歡迎各位參加 GOT 的聚會 http://wiki.gentoo.org.tw/index.php/GentooUserParty2004-1 也有 jserv 的演講喔!!
_benny_歡迎各位參加 GOT 的聚會 http://wiki.gentoo.org.tw/index.php/GentooUserParty2004-1 也有 jserv 的演講喔!!
_benny_哈哈哈
SchizShiacheer jserv XD
_benny_要被踢了
kanruXD
@frid哈哈
@frid鬧場
@AceLan@_@
@AceLanKDE@Taiwan 聚會 04/01/23 請參考網頁 http://kde.linux.org.tw/
@AceLanKDE@Taiwan 聚會 04/01/23 請參考網頁 http://kde.linux.org.tw/
@AceLanKDE@Taiwan 聚會 04/01/23 請參考網頁 http://kde.linux.org.tw/
_benny_哈哈哈
@AceLan也有 jserv 的演講喔!!
@frid
* _benny_ 飛舔 AceLan
@fridjserv 變成日本av 女優了
@frid有他才有人潮
@AceLanjserv 超搶手的
_benny_AceLan: 看在你也是 sony sucker 的份上,我就饒了你 :p
* AceLan 「嘿嘿嘿....」地奸笑了幾聲。
@jservuseless :(
@jserv好吧,繼續
@frid@_@
* AceLan 狠狠的咬了 _benny_ 一口,把他咬的哇哇大叫...真爽 真爽
* kanru hold jserv
_benny_咬拆開變成 口交...
* AceLan 趁機偷咬 _benny_ :p
_benny_原來。。。
_benny_jserv: 繼續吧:p
@frid把他口交的哇哇大叫...真爽 真爽
@jserv先跳過 DRI/DRM 複雜的設計,我們來探討 XInput Hotplug
* AceLan 撲通地跌了一跤。
@jserv---------------------------------------------------------------------
@Tyson....
@jservXInput Hotplug 是個相當複雜的議題,但是對 Desktop 需求又是
@jserv相當重要。試想,當我們將 USB 介面的手寫版插入時,X Window
@jserv可否自動偵測該 device,並且驅動其功能?Linux Kernel 可以提
@jserv供 HAL 資訊,但是目前的 XFree86-based 實作在 XInput Hotplug
@jserv的不完善導致相當多問題。
@jserv                                                                                
@jservXOrg hacker 著手處理這議題,整理各方意見放在 wiki page 中:
@jserv                                                                                
@jserv    http://xorg.freedesktop.org/wiki/XInputHotplug
@jserv就目前的設計來說,X server (XOrg) 並不支援 input devices 的 Hotplug,這
@jserv表示說,你無法在不更動設定檔以及重新啟動 X server 的前提下,動態的新增或
@jserv移除任何 input devices。然而,在 Linux Kernel 2.4 以來,Hotplug 的實作已
@jserv經有相當卓越的設計,並且提出抽象化 (abstraction) 的途徑,可以很容易加入
@jservinput devices 的 hotplugging,包含鍵盤、滑鼠、搖桿,甚至是其他特殊的裝置。
@jservXInputHotplug 的目標就是希望能夠銜接 Linux Kernel 或是底層 Kernel 提供的
@jservHotplug 機制,做到真正不需要更改設定檔,而能動態處理任何 input devices 的
@jserv支援。
@jserv---------------------------------------------------------------------
@jservQuestions?
* jserv 繼續卡 :(
@frid所以在純文字下有hotplug 在X 夏不行.Orz
@jservfrid: 這是好問題,XInput Hotplug 要實現必須很多方面配合
@fridjserv : 這後面會提到嗎?
@jservfrid: Linux Kernel 2.4 系列以後,許多 character devices 的架構也獨立為 input device
descentjserv, ex os kernel ??
@jservfrid: XOrg 也是朝這個方向前進
@fridjserv : nod!
@jservdescent: 嗯
@jservfrid: 詳細的資訊與實作方式,在該 wiki 有介紹到
-!- alecc [~alecc@218-163-2-216.dynamic.hinet.net] has joined #debian.tw
@jserv---------------------------------------------------------------------
@jserv..
@jserv敗 :(
_benny_:(
@frid無言.? Orz
@jserv網路又卡住了,真抱歉 :(
* frid 幫jserv 槌搥背
descent改用有線如何
@jserv接著,我們來看 XRender extension
@jserv就目前來說,Xft / Fontconfig / Xrender 這三者已經密切的整合在一起
_benny_
@jserv但是,Xrender 對 Graphics Design 確有其意義在
_benny_重點來了 XD
@jserv引述我之前的筆記:
@jserv<%
@jserv                   OSD 在 X11 下的實現
@jserv                                         Jim Huang <jserv@kaffe.org>
@jserv                                              最後更新:Dec 12, 2004
@jserv[動機]
@jserv因為需要發展一套全功能的 Media Player,目前採用的 codebase 是 Xine,在
@jservxine-ui 設計了一套 xitk,能夠處理 OSD (On-Screen Display),但是這不適合
@jserv通用性處理,所以筆者試著參考 XOSD[1] 這套實作,在追蹤後,發現很難在視覺
@jserv效果與效能上有所突破,是此依循分析結果,紀錄 OSD 在 X11 下的實作心得,
@jserv以及效能衝擊的瓶頸。
@jserv[現有的問題]
@jservX Window System 是個 Client-Server 的架構,在此架構下的效能衝擊因素之一
@jserv就是大量的資料傳輸,當然,多數的情況下,只是少量資料的傳遞,比方說將某個
@jserv視窗 Window 移動到座標軸 [x,y] 之處一類的操作,然而,只要圖片或
@jserv影像涉入後,效能的衝擊就相當明顯。
@jserv有許多途徑相繼被提出,比方說透過 shared memory (亦即 SHM extension),
@jserv但是為了一般性,或者在不依賴 extension 的前提下,我們應該儘可能避免資料
@jserv傳遞。
-!- hat1 [~hata@210-85-125-2.cm.dynamic.apol.com.tw] has joined #debian.tw
@jservX 有兩種互補的型態:Pixmap 與 Image。就 X client 的觀點,Pixmap 就是個整
@jserv數型態的 handle,而 Image 則是一個巨大的 struct,事實上,Pixmap 是存在於
@jservX server 端的圖形資料,而 Image 是存在於 X client 的資料。這兩者可以轉換
@jserv,但是效能成本就相當不小了,在半透明 (translucent) 視窗的實現中,這是很
@jserv嚴重的效能衝擊,而另外一個議題就是,我們無法在不對 Screen 作 polling 的
@jserv前提下,得知 Window 下資料是否更動過,甚至就算當我們發現 Screen 已經被更
@jserv動了,Window 本身卻對我們想取得的 Screen 資料一無所知。是此,過去 X11 許
@jserv多半透明實作來說,意味著效能上的衝擊,因為必須訴諸許多 polling 與大量資
@jserv料傳輸。
@jserv在未引入 XFree86 4.x 提出的 Xrender extension 之前,半透明 效果是透過這
@jserv樣的方式實作的:先捕捉我們 Window 所在的 Screen 的 snapshot,然後在 X
@jservclient 端施加 Alpha composition,以達到我們想要的效果。這樣會有兩個效能
@jserv疑慮:
@jserv  (1) snapshot 需要取得 X client 的圖形資料 (緩慢的資料傳輸)
-!- asho [~asho@220-135-210-115.HINET-IP.hinet.net] has joined #debian.tw
-!- mode/#debian.tw [+o asho] by AceLan
@jserv  (2) 在 Alpha composition 後,圖形資料必須被傳回 (再度緩慢的資料傳輸)
@jserv--------------------------------------
@jserv先提到這,大家可以想見周旋在 Client<-->Server 之間的資料傳輸量是何等的大
_benny_所以這就是現階段的透明的問題囉?
@jserv在筆者初期設計 Media Player 的 OSD 支援時,並沒有考慮到這些議題
@jserv往往造成效能的落差
@jserv_benny_: Got it
@jserv_benny_: 這也是「真透明」與「假透明」的分野!
_benny_真透明在 xorg 還是太慢了 :(
descentjserv, 為何是 假透明
@fridagree
@jserv_benny_: no, it's resulted from improper driver
_benny_假透明就是 xchat/*term 那種只看的到背景的
_benny_而無法看看到在背後app
@jservdescent: 假的透明度是用上述的作法,慢慢畫出來得
@jserv好,回到 Xrender,看看怎麼解決問題
@jserv---------------------------------------------------------
@jserv[改善的方式]
@jservXrender 一開始被提出的訴求是為了支援 anti-aliased 字型。在字體邊框的
@jservpixel rendering 相當類似 composition,簡單來說,這類的狀況就是我們的繪
@jserv圖呈現跟背景有關,所以 Xrender 還提供一些與 Glyphs 有關的資料型態,這
@jserv是通用性的 composition 處理。而上述半透明效果實作遇到的問題,可以透過
@jserv很明顯的解法處理,就是將 composition 轉交給 X server 處理,這基本上就
@jserv是 Xrender extension 所作的項目,Xrender 提供另一個資料型態:Picture,
@jserv類似 Pixmap 的整數型態 handle,但是具備 Alpha channel。
@jserv---------------------------------------------------------
@jservglyph:字或字體,是指字的實體圖像
@jservcharacter --> 字的抽象描述
@jserv---------------------------------------------------------
@jservXrender 在 X server 端繪製 text,所以真正取得這些處理過的 pixel 需要
@jserv透過 socket 傳輸這些特化的資料。
@jservshape functions (使用 bitmask) 處理 X server 端的 bitmap,如果我們讓
@jservXrender 在一個 bitmap 上作顯示,這樣的話,所需的過程就簡化為:
@jservScreen --> Image (slow)
@jserv           Image --> Pixmap (slow) --------+
@jserv                                           | Xrender
@jserv                    (medium) Pixmap <------+
@jserv                          \
@jserv                           \ |
@jserv                            \|
@jserv                           shape function (fast)
-!- yurenju [~yurenju@wshlab2.ee.kuas.edu.tw] has joined #debian.tw
@jserv---------------------------------------------------------
@jserv於是乎,我們將 two-way roundtrip 降到可接受的 one-way roundtrip
@jserv[實作議題]
@jserv                                                                                
@jserv我們可以針對 1-bit transparency 使用 Shape extension,移去所有沒有涵蓋於
@jserv我們要顯示的文字以外的 Window,然後,複製桌面背景到剩餘的 Window,最後透
@jserv過 Xft 來描繪字形,這有無法避免的 round-trip,需要將這些 Window 「碎片」
@jserv傳遞給 X client,除非有個直接使用 Pixmap 的 XGetImage() 與 XCopyArea() 函
@jserv示。這樣一來,理論上已經可以在 X client 端完成所有的 composition。
@jserv                                                                                
@jserv[1] http://www.ignavus.net/software.html
@jserv---------------------------------------------------------
@jservQuestions?
@jserv在大家思考的同時,小弟來介紹一些有趣的新專案
@jservhttp://jserv.sayya.org/wm/gotwm.png
@fridA_A
@jserv這是小弟最近為 GOT (Gentoo Taiwan) 撰寫的一個 Window Manager
* _benny_ 躲在 jserv 背後得意
yurenju背景是 Gentoo Taiwan 耶… ^^
@jserv左上角就是所謂的 OSD (On-Screen Display)
kanruXD
@jservGotWM 在 OSD 的實作上,並沒有用到 Xrender extension
@jserv相反的,還是只用 xosd library
@jserv因為其變化性太小
@jserv只是跟底圖作 differing
_benny_原來 xosd 是 lib,我一直以為只要下個參數就可以顯示了
@jserv然而,如果是在 video player 上設計 OSD ,就會面臨 rendering 的效能衝擊
@jserv這是需要留意的
@jserv---------------------------------------------------------
* jserv 發現今天很冷 :(
@frid我覺得昨天比較冷@_@
descent我覺得明天會很冷
@jserv同時,剛剛的 screenshots 的右下角
SBT我回來了,Log 看完了 :p
@jserv那是小弟最近開發的一個 Web Browser
@jserv稱為 kBrowser
@frid用qt寫的?
@jservfrid: 用 GTK+/DirectFB 來實作
@jserv. based on khtml
@jserv    http://developer.kde.org/documentation/library/kdeqt/kde3arch/khtml/
@jserv. Merged from Apple's WebCore
@jserv                                                                                
@jserv. Toolkit: GTKlite (精簡版本的 GTK+ 2.4)
@jserv    - GTKlite 運作於 KDrive
@jserv    - KDrive 的 KAA 將會大幅改寫
@jserv        * 重新 profiling
@jserv    - Reference Implementation is scheduled in 2005 Q2.
@jservGTKlite 也需要設計相容於 GTK+/DirectFB,而 Web Browser 本身設計
@jserv不直接接觸到 low level drawing,在 source level 上要更換這兩個
@jserv架構的衝擊可以大幅降低。
@jserv                                                                                
@jservFlash plugin 在 DirectFB 架構下需要 Rootless X server 作 overlay
@jserv                                                                                
@jserv  +------------------------------+
@jserv  | MIME                         |\
@jserv  |application/x-shockwave-flash | \
@jserv  +------------------------------+  \
@jserv                                     \
@jserv                                Create X session -------+
@jserv                                                        |
@jserv                                X sandbox env ----------+
@jserv---------------------------------------------------------
-!- enrico [~enrico@218-164-132-100.dynamic.hinet.net] has joined #debian.tw
@jserv再者,筆者昨天整理 XOrg repostory
@jserv將 Cygwin/X 透過 MinGW 移植成功,當然,這是因為有許多現成的 patch
@jserv現在,這個 X server 可以 natively 的在 Win32 上面跑
@jserv不需要依賴 Cygwin 的 UNIX Compatibility Layer
@jserv請參考:
@jserv    http://jserv.sayya.org/freedesktop/xmingw-20041230.zip
@jserv                                                                                
@jserv字型檔也一併提供,所以只要解開後啟動 run.bat 即可。(DISPLAY=:0)
@jserv                                                                                
@jservps: 這是小弟自己維護的 branch,有任何問題請不要直接回報給 XOrg
@jserv---------------------------------------------------------
@jserv    mailing-list,Feel free to contact me.
@jserv還有,筆者最近也開始維護另一個有趣的計畫
@fridcool
@jserv稱為 Xorz :-)
@jserv> Xorz 是一個模組化處理的 Xorg 分支,並且整合 XDirectFB 與尚未被
@jserv> Xorg 採納的實驗性 patch,有很多有趣的新特徵 :-)
@jserv> 感謝 zonble 的 "Orz" 歌,讓我聯想 Xorz 當作 Project Name。
@jserv                                                                                
@jservXorz 是 "Xorg Zazen" 的縮寫,可以視為淬練中的 Xorg branch,而為何要
@jserv發展 Xorz 呢?簡單來說,有以下動機:
@jserv                                                                                
@jserv1. Xorg 單一 development tree 造就非常巨大難懂的 tarball 與 building
@jserv   process,造成許多 packaging 的困擾,version control 的工具處理如此
@jserv   巨大的 repository 也吃不消。(可以試著用 svk 來 mirror XOrg 看看要多
@jserv   久,svn diff 的時間也很令人厭倦)
@jserv2. Xorg 在某些角度來說,因為必須顧及許多平台差異,所以相當保守,儘管
@jserv   FreeDesktop.org 上有許多卓越的 patch,至今還無法完全整合
@jserv3. XOrg 並未徹底與 Linux 作最佳的整合與調整
@jserv4. XOrg 在 Embedded System 應用上有許多限制
@jserv從今年九月份開始,我試著 hack Xserver 與 Xlibs 實作,陸續有些心得,並
@jserv且認為 XOrg 在 Embedded Linux 上必須有更好的基礎建設,於是我試著維護
@jserv自己的 branch,當時是參考 keithp 的 KDrive。
@jserv                                                                                
@jserv後來發現 KDrive 架構並未能解決多數的狀況,比方說 XvMC 的處理就需要大幅
@jserv加強,所以後來試著整合 XOrg 的設計,但是周旋於 XAA 與 KAA,著實耗費很多
@jserv心力,也吃力不討好。
@jserv                                                                                
@jserv所以比較務實的作法是參考 Daniel Stone 的 Debrix,並且加強 Embedded Linux
@jserv上 DRI 的設計,同時 UNIX 一項「美德」 -- 將所有的設定檔以純文字形式存取,
@jserv卻屢屢在 Embedded Linux 或 Desktop 整合的應用來說,顯得累贅且繁複,而在
@jserv拜讀 [Why Linux Needs to be Elektrified] 一文後,得到許多啟示。
@jserv---------------------------------------------------------
@jservhttp://elektra.sourceforge.net/
@jserv初期的目標是:
@jserv1. 整合 XDirectFB
@jserv2. Elektra 化 XOrg
@jserv3. 模組化
@jserv4. 強化 DRI 支援
@jserv---------------------------------------------------------
@jserv最後這些成果都會回到 Xorg 總部的,但是筆者希望有更多的台灣朋友參與 FreeDesktop 的開發
@jserv:-)
@jservok. 廣告時間結束
-!- PowerOp [~PowerOp@219-84-58-7-adsl-tpe.dynamic.so-net.net.tw] has joined #debian.tw
@jserv接著簡單介紹 Composite Extension
@jserv相信很多朋友都看過 Sun Project Looking Glass 的成果
@jserv一定對裡頭的設計有相當的好奇
@jserv而 MacOS X 種種華麗的效果也不在話下
@jserv而,X Window System 的設計下,有無可能達到類似的效果呢?
@jservX 中的 Window Manager 是個很好的發揮題材
@jserv也有所謂的 3D Workspace 套件現身
@jserv但是這並未能根本的、透明化的,以及高度的通透整合起來
@jserv所以,keithp 開始思考這個議題
@jservComposite Extension 必須搭配另外兩個 extensions
@jservXfixes / XDamage / Composite Extension
@jservXfixes 的命名非常有意思
@jserv"fixes" 什麼呢?
-!- yuwei [yuwei@218-164-142-128.dynamic.hinet.net] has joined #debian.tw
@jserv因為我們必須對現有的 Window 作重構的動作
@jserv比方說陰影、透明化
@jserv甚至扭轉的特校
@jserv在 keithp 的想法中,XDamage extension 就是用以作碎片的切割
@jservProgrammer 可以依據特定的邏輯將該 Display / Screen 作處理
@jservXfixes 接著將這些「碎片」再給予調整,比方說作外框、Alpha blending
@jserv等處理
@jserv最後,Composite extension 作個最後的呈現
@jserv需要注意的是,Composite extension 在 XFree86 4.3 以前就存在了,但是 Xorg X11R6.8 則是整合這三個 extensions
@jserv同時,我們也可以發現當今 3D Desktop/Workspace 的趨勢已經不再是發展炫麗的特校
@jserv已經有太多基礎建設很完備了
@jserv問題在於「如何快速、無痛的移轉現有的操作環境?」
@jserv--------------------------------------------------------
@jservQuestions?
@frid請問有Sun Project Looking Glass的url 嗎?..Orz
SBT可以問 Xming 的問題嗎?
@jservfrid: 這裡有展示:http://jserv.sayya.org/freedesktop/lg3d-demo.mov
@jservSBT: 請說 :-)
@fridjserv : bow
@jservfrid: Goolge:// Sun Project Looking Glass <-- 第一個link
@jservs/Goolge/Google/
SBT剛剛抓來跑了起來,想用 win32 下的 imagemagick display 作測試
-!- d2207197 [~joseph@220-135-237-215.HINET-IP.hinet.net] has joined #debian.tw
@jservSBT: 嗯,遇到什麼問題呢?
SBT出現 ColorIsNotKnownToServer (black) 的錯誤訊息 ...
@jservSBT: 嗯,因為還沒徹底 porting 好
@jservSBT: known issue
@jservSBT: 但是基本的 Window 應該可以出來吧?
SBTimagemagick 出現這個 exception 之後就死了 :p
SBT我換別支程式試試看 ...
@jserv在繼續下個主題之前,我們來看看其他展示
@jservhttp://jserv.sayya.org/embedded/eem.avi
@jserv這是 Enlightenment for Embedded 的畫面
SBT靠,好帥 XD
@jserv實際上,也可以運作在 e17-on-DirectFB 上
@jserv喔,提到這麼多次 DirectFB,這裡有之前作的簡報可參考
@jserv標題:DirectFB 在 Embedded Linux 上的應用
@jserv作者:Jim Huang (黃敬群) <jserv@kaffe.org>
@jserv最後更新日期:Nov 22, 2004
@jserv下載:
@jserv    http://jserv.sayya.org/embedded/directfb-intro.ppt
@jserv                                (Microsoft PowerPoint 格式)
@jserv    http://jserv.sayya.org/embedded/directfb-intro.html
@jserv                                (Shockware Flash 格式,800x600)
@jserv-----------------------------------------------------
@jservProject Looking Glass 作為一個重要的 3D Desktop 基礎建設
@jserv其必須考量的議題非常的多
@jserv姑且撇開 Java3D 的整合不論
@jserv很快的,開發小組就面臨許多新的挑戰,於是他們提出 XEvIE 的 extension
@jservXEvie 對以下的應用是相當關鍵性的:
@jserv                                                                                
@jserv  . 3D window systems (such as Project Looking Glass and Croquet).
@jserv  . handwriting recognition
@jserv  . multi-level event redirection.
@jserv3D --> 2D 的轉換,在 rendering 方面,有發展完備的硬體 projecting
@jserv但是整體的操作是否能配合呢?
@jserv這是很大的問題
@jserv在剛剛列出的動畫中,我們可以看到 Sun 的那位 Project Manager 神色自如的操作著夢幻的桌面
@jserv儘管真實映象的環境是 2D TFT
@jserv這是怎麼做到的呢?
@jserv答案就是透過 XEvIE
-!- XS4-3065 [d2f40e52@webchat.xs4all.nl] has joined #debian.tw
-!- XS4-3065 [d2f40e52@webchat.xs4all.nl] has quit [Kill line active: Open Proxy found. Visit the website openrbl.org/lookup?i=210.2]
@jservXEvIE 原本是附著於 Xext library 下,但是後來成為新的 extension,在 Xorg X11R6.8.1 現身
@jserv這個想法就是能夠一般性的「擷取」、「攔截」 user events
@jserv然後可以動態的加入自己的轉換 policy
@jserv比方說 Sun Project Looking Glass 就設計了很多 Universe
-!- asho [~asho@220-135-210-115.HINET-IP.hinet.net] has quit ["Client exiting"]
@jserv這些 Universe (宇宙系) 表示 3D 操作,可以讓使用者翻轉、取物、位移
@jserv然後最終又對應到真實的座標上
-!- treeboy [~treeboy@140.127.113.60] has quit ["leaving"]
@jserv整個設計是通透性的,所以不需要修改任何一個 X Client
-!- yurenju [~yurenju@wshlab2.ee.kuas.edu.tw] has quit ["Lost terminal"]
@jserv這是很重要的革命
@jserv-----------------------------------------------
@jservQuestions?
@jserv[工商服務時間]
@jserv因為小弟最近又回到 tty 與 framebuffer 的生活中,所以像樣的中文終端機是很重要的
@jservJMCCE 的網頁在 AndrewLee 與 ycheng 兩位的協助下,終於回來了
@jserv但是 JMCCE 也整整兩年沒有維護了
@jserv相當可惜
@jserv所以,小弟趁此機會想找些朋友繼續維護,有意者請討論,謝謝!
@jserv--------------------------------------------
-!- yurenju [~yurenju@wshlab2.ee.kuas.edu.tw] has joined #debian.tw
descentgpm 的支援
@jserv嗯,時間也到尾聲了,開放發問與討論,謝謝!
-!- tedyu [~tedyu@79-208.dorm.ncu.edu.tw] has quit ["leaving"]
@frid神奇!
@jserv如果沒有問題,那今年度的 IRC Conference 就順利落幕了,感謝各位!
@fridclap!
Ma1之前提到DRI現在已經和kernel層有相關的實作
Ma1--> 是不是現有必須將dri的module編入kernel中才能發揮dri的功能?
Ma1(拍拍手 ^^)
@jserv驚! gcin 也提供 GTK+ 2 的 IM Module 了!
@jservMa1: 是的
SBT再問 Xming!
-!- jserv changed the topic of #debian.tw to: 2004 年度 IRC Conference 圓滿落幕,感謝各位參與
@jservSBT: 請說
SBT現在似乎沒辦法接受別台機器的 client 用 TCP/IP 連入?
@jservSBT: 因為加了 -ac 的參數
@lloyd_kevinwatt: ping...
@jservSBT: 請修改 run.bat
@kevinwattlloyd_: pong
-!- jengwei [~jengwei@61-230-90-151.dynamic.hinet.net] has quit ["using sirc version 2.211+KSIRC/1.3.11"]
@lloyd_kevinwatt: 該做 log. :-)
@jservSBT: 把 -ac 拿掉就可以了,但是 xhost.exe 我還沒準備好
@kevinwattlloyd_: @.@;
SBT了解! thx :)
@frid初步log http://frid.gentoo-tw.org/ircconference.txt
@lloyd_jserv: 大感謝..
@jservSBT: 在 Xorg X11R6.8.2 應該就可以上線了 #Native Win32 Xorg!!!
@jservlloyd_: 客氣了 #這次沒什麼準備,工作太忙了 :(
@jservkanru: 所以 Xorg X11R6.8.2 就可以驅動你的 nVidia 顯示卡了 :p
-!- how [~how@59-104-242-123.adsl.dynamic.seed.net.tw] has quit ["離開"]
@jservkanru: 光靠 nv driver 就行了
-!- yuwei is now known as yuwei_awa
-!- yungyuc [~yyc@220-134-24-5.HINET-IP.hinet.net] has quit [""]
kanrujserv: ya.. 效能超棒 :D
* jserv 檢討:Xft/Fontconfig 沒有講、Xrender 說不清楚、DRI/DRM 需要更多解釋、XEvIE 需要圖表、Composite extension 太快帶過
* jserv 考慮 IRC Conference 2005 :p
@kevinwattjserv: 上吧~
d2207197jserv: Go Go Go
@jservkevinwatt: hmmm... 不過打字實在好累 :(
* kevinwatt 叭~~
descentGentooUserParty2004-1再補充也可以
@jservccc

Generated by irclog2html.pl 2.1 by Jeff Waugh - find it at freshmeat.net!