GPU的新應用:淺談瀏覽器硬件加速之爭
IE9 Beta 的發布讓瀏覽器的GPU硬件加速一夜之間成為了熱門話題,隨后Firefox、Google Chrome 等瀏覽器都紛紛將硬件加速功能作為當務之急,Opera 更是率先開始研究移動平臺上的瀏覽器硬件加速,瀏覽器廠商開始了“硬件加速之爭”。
在IE9中,微軟使用了Direct2D、DirectWirte、XPS等新技術進行文字、圖像、視頻、SVG等內容的渲染。Direct2D的加入可以讓瀏覽器調動GPU來優化渲染豐富的圖形,從而帶來更快的Web程序運行速度,以及更高質量的瀏覽體驗。
對一些圖形操作來說,GPU是更合適的選擇,比如GPU在執行Alpha混合與雙線性圖形縮放的時候就比CPU快得多,還可以利用像素著色器執行復雜的每像素計算。
利用GPU執行更多任務,CPU資源就得以釋放給其他瀏覽器子系統,還能獲得更流暢的動畫和視頻播放效果。
根據Mozilla提供的資料,Firefox和IE9在Windows平臺上的實現方式完全一樣,而在Mac及Linux平臺上的實現方式目前還沒有特別細的資料。
互聯網巨頭 Google 自己的 Chrome 瀏覽器也有一套完整的GPU硬件加速方案,而且是一種非常特殊的硬件加速方案。
在硬件加速條件下,GPU接受來自渲染進程的命令,并將其輸入OpenGL 或 Direct3D 進行處理,Chrome在此一直落后于其他對手,原因是Google考慮到安全因素,將瀏覽器的渲染工作安排在一個獨立的進程內,導致無法與操作系統的硬件接口直接通信。因此為了實現硬件加速,Chrome需要特殊的方案:
在渲染進程和GPU兩者無法直接通信的情況下,Chrome特意分出了一片共享存儲區,讓渲染進程將命令緩存錄入存儲區,再等GPU從存儲區讀取命令,進而執行相應命令。這方案解決了核心問題,但因為始終不是直接通信,功能上還有一定的限制。
依靠這個結構,Chrome開始對部分內容實施硬件加速。對于普通的網頁內容(文本、CSS、靜態圖片)依舊直接使用CPU渲染,而GPU負責大型媒體(如視頻)的加速渲染任務,更為特殊的WebGL元素,則完全交由GPU渲染。對各層面的內容渲染完成后,最后關鍵的一步是將所有內容揉合進同一個頁面,這項工作CPU無法很好勝任,所以這一部分工作也完全可以交由瀏覽器來完成。
關注我們



