Chromium改進硬件加速圖形系統
來源:
發布時間:2010/8/28
瀏覽次數:997
近段時間,Chromium對圖形系統進行了大幅的改進,一方面為了適應新的API(即WebGL,結合了Javascript和OpenGL的底層3D圖形API)和新的標記語言(如Apple帶頭提出的3D CSS),一方面可以更好利用GPU來增強整個瀏覽器的圖形繪制速度,受益于此,一些常見的操作如二維圖像合成、伸縮,可以得到顯著的加速。
在硬件加速條件下,GPU接受來自渲染進程的命令,并將其輸入OpenGL 或 Direct3D 進行處理,Chrome在此一直落后于其他對手,原因是Google考慮到安全因素,將瀏覽器的渲染工作安排在一個獨立的進程內,導致無法與操作系統的硬件接口直接通信。因此為了實現硬件加速,Chrome需要特殊的方案:
圖片來源:The Chromium Projects – GPU Accelerated Compositing in Chrome
Google將這種方案稱為GPU process.
在渲染進程和GPU兩者無法直接通信的情況下,Chrome特意分出了一片共享存儲區,讓渲染進程將命令緩存錄入存儲區,再等GPU從存儲區讀取命令,進而執行相應命令。這方案解決了核心問題,但因為始終不是直接通信,功能上還有一定的限制。
依靠這個結構,Chromium開始對部分內容實施硬件加速。對于普通的網頁內容(文本、CSS、靜態圖片)依舊直接使用CPU渲染,而GPU負責大型媒體(如視頻)的加速渲染任務,更為特殊的WebGL元素,則完全交由GPU渲染。
對各層面的內容渲染完成后,最后關鍵的一步是將所有內容揉合進同一個頁面,這項工作CPU無法很好勝任,而想使用GPU進行糅合工作,可以加入啟動命令行參數–enable-accelerated-compositing