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