BlinkOn9 - Viz Update
作者在 4 月 18~19 期間和同事一起在灣區參加了為其兩天的 BlinkOn 9 會議。每次 BlinkOn 都是了解當前 Blink & Chrome 和 Web 技術演進現狀和發展方向的一個不錯機會,兩天的會議下來大概聽了 6 ~ 7 場分享,有些主題是之前已經有所了解,這次又更新了最新的進展信息;有些主題則是完全陌生,在這次 BlinkOn 上才第一次知悉。作者接下來會撰寫一系列文章,每篇文章針對一個特定的主題,盡可能把相關的信息回饋給讀者。
BlinkOn9 關于 Chrome 新的渲染引擎 Viz 的分享 Chrome Graphics: Viz Update 實際的內容并不多,只是對半年前 BlinkOn8 上 What is Viz: The Future of Chrome Compositing 分享后的一些信息更新,針對 BlinkOn8 上分享的解讀,建議讀者可以先看作者的這篇文章 - Chrome 渲染流水線演化的未來,這樣更容易理解本文的內容。
這次分享的內容主要是關于 OOP-D (Out of Process Display Compositor)和 OOP-R (Out of Process Rasterization) 的當前進展,和對 OOP-D 和 OOP-R 完成融合后的最終狀態的描繪。
OOP-D
OOP-D 實際上就是之前的 Tadpole 的正式稱謂,這個稱謂也跟 OOP-R 在命名上保持了一致。OOP-D 實際上包含了以下三個主要目標:
為了實現這些目標的前置任務包括:
完成以上任務,第一個包括前兩個目標和初步的 Vulkan 驗證實現的實驗版預計會在 m69 上上線。
OOP-R
從上圖看要實現的目標包括:
目標一的第一個實驗版本目標是 m70,而目標二還僅僅是設計和原型的階段。
OOP-D + OOP-R
OOP-D 和 OOP-R 都實現后,唯一會使用 CommandBuffer 就只剩下 WebGL,其它需要訪問 GPU API 的部分都已經從 Browser 和 Renderer 進程轉移到了 Viz 進程,除了 WebGL 外,其它功能對 GPU 的使用最終都會通過 Skia,包括光柵化和合成,RasterInterface 和 ClientLayerTreeFrameSink 分別對應了光柵化和合成的 Viz Client 接口,供 Viz 的客戶端使用。
這次分享沒有包括 Unified Compositor 的內容,恐怕光是 OOP-D + OOP-R 要完成一個完整穩定的實現就需要花很長的時間,估計最少也要到明年上半年。
更多關于光柵化的信息
分享后的 Q&A 環節,我問了一直比較關心的關于光柵化的問題,問題是 —— “Firefox 新的渲染引擎 WebRender 看起來會使用 Direct Rasterization(直接光柵化),Chrome 是否也會走同樣的路線,或者采用更靈活的混合策略,部分圖層使用直接光柵化,部分圖層使用異步光柵化?”
雖然 Chromium 的工程師也同樣贊同對于 Web App 來說,大部分圖層,比如切換的卡片,彈入彈出的側欄菜單,中間滾動的長列表列表項,它們的內容都并不復雜,只要做好圖片預解碼或者延遲解碼,在支持 GPU 光柵化的條件下采用直接光柵化可以帶來更好的動畫性能,不過他的回復是考慮到要實現直接光柵化可能的工作量,現在暫時還沒有相應的計劃。看起來目前的重中之重還是 OOP-D + OOP-R 吧。
總結
以上是生活随笔為你收集整理的BlinkOn9 - Viz Update的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 转:我是如何向老婆解释MapReduce
- 下一篇: JavaScript 编程精解 中文第三