chromium for android 硬件渲染流程总结

render进程中

一.webkit模块
webkit引擎会为网页内容同时创建Dom tree, Render tree和RenderLayer tree.
这三棵树之间的关系参见chrome硬件渲染

每一个Render Object都关联着一个RenderLayer.Render Object与RenderLayer是多对一的关系。
RenderLayer代表了网页某一层的内容。正是由于RenderLayer的存在,网页上的元素才可以按照
正确的顺序合成,从而恰当的显示有交叠的内容,和半透明元素等效果。
触发RenderLayer创建的条件如下:
1.网页的root节点;
2.有明确的CSS position属性(relative,absolute,transform)
3.元素是透明的
4.overflow, alpha mask,或者reflection
5.有css filter(滤镜) 属性
6.有2D加速Context或者3D(webGL)context的 canvas 元素对应的RenderObject.
7.video元素对应的RenderObject。
RenderLayerCompositor负责管理所有RenderLayer的合成,并决定可以作为合成层的Layer.
只有满足以下条件的RenderLayer才可以成为合成层(composited layer).
RenderLayer.h中定义了31个reasons:
CompositingReason3DTransform
CompositingReasonVideo
CompositingReasonCanvas
CompositingReasonPlugin
CompositingReasonIFrame
CompositingReasonBackfaceVisibilityHidden
CompositingReasonAnimation
CompositingReasonFilters
CompositingReasonPositionFixed
CompositingReasonPositionSticky
CompositingReasonOverflowScrollingTouch
CompositingReasonBlending
CompositingReasonAssumedOverlap
CompositingReasonOverlap
CompositingReasonNegativeZIndexChildren
CompositingReasonTransformWithCompositedDescendants
CompositingReasonOpacityWithCompositedDescendants
CompositingReasonMaskWithCompositedDescendants
CompositingReasonReflectionWithCompositedDescendants
CompositingReasonFilterWithCompositedDescendants
CompositingReasonBlendingWithCompositedDescendants
CompositingReasonClipsCompositingDescendants
CompositingReasonPerspective
CompositingReasonPreserve3D
CompositingReasonReflectionOfCompositedParent
CompositingReasonRoot
CompositingReasonLayerForClip
CompositingReasonLayerForScrollbar
CompositingReasonLayerForScrollingContainer
CompositingReasonLayerForForeground
CompositingReasonLayerForBackground
CompositingReasonLayerForMask
被认为是合成层的RenderLayer会创建RenderLayerBacking,RenderLayerBacking
与composited layer是一一对应的关系。RenderLayerBacking控制composited layer
的合成行为,并包含了多个GraphicsLayers。
GraphicsLayer是后端存储的抽象表示。不同平台负责提供具体的后端存储类给GraphicsLayer.
对于chromium for android平台提供的是cc模块的PictureLayer类。
下图是webkit::GraphicsLayer到cc::PictureLayer之间的关系:

chromium for android 硬件渲染流程总结

当chromium for android硬件渲染流程全解析(render进程)中的流程一完成后,

webkit::RenderLayer tree表示的网页内容就以网页绘制命令的形式转移到cc模块中。
简单的说就是RenderLayer tree中的每个RenderLayer包含的网页信息都以绘制命令的形式存储在了
LayerTreeHostImpl包含的LayerTreeImpl代表的cc::PictureLayer tree中了。
二.cc模块
1.网页内容的光栅化,这个过程是在cpu上执行的,完成后,网页内容以像素形式存储在一块SharedMemory上.
这块SharedMemory可以跨进程使用。是由Render进程向Browser进程发送消息,由Browser进程创建的,
并将sharedMemory的handle传回给Render进程使用。这块SharedMemory还会在GPU进程中使用。
2.网页各层的混合过程。光栅化后,存储网页内容的SharedMemory在GPU进程中作为纹理数据的源上传给gpu,
实现纹理贴图(glTexImage2D)。chromium是分块渲染的策略,TileManager管理的每个Tile最终都对应着一块
texture(ResourceProvider负责分配的),SharedMemory中的网页内容通过glTexImage2D最终渲染到了Tile
对应的texture上。
3.LayerTreeHostImpl::CalculateRenderPasses()记录已经上传了数据源的需要渲染的Tile的信息。
为LayerTreeHostImpl::DrawLayers()做准备.
4.LayerTreeHostImpl::DrawLayers()触发的实际的绘制过程。(glDrawElements).
这个过程会先调用glFramebufferTexture2DEXT,将texture attach到render进程创建的off-screen surface对应的
framebuffer object上,再接着对每个Tile对应的texture调用glDrawElements,这个过程完成后,
网页内容就被渲染到了attach到framebuffer上的textures上了,这些texture会被传递给browser进程。

Browser进程
Browser进程的主要工作是将render进程中包含网页内容的texture合成到on-screen surface。
Browser进程创建的是on-screen surface,网页内容最终要渲染到on-screen surface的back buffer上。
Browser进程调用eglswapbuffer后onscreen surface对应的back buffer和front buffer会互换,
下次屏幕刷新时,front buffer的内容会显示到屏幕上。具体流程参见chromium for android硬件渲染流程全解析(browser进程)

分类:默认分类 时间:2012-03-18 人气:1
本文关键词:
分享到:

相关文章

  • chromium for android v34 2dcanvas硬件渲染实现分析 2013-09-25

    这篇接着上一篇2dcanvas硬件绘制,分析保存绘制结果的texture被合成到on screen framebuffer上的过程。 1.webkit为canvas元素对应的render树节点RenderHTMLCanvas, 创建RenderLayer的过程如下: RenderLayerModelObject::createLayer()调用 RenderLayer::insertOnlyThisLayer()将创建完 的RenderLayer加入到renderlayer tree中。vcD4

  • 腾讯视频For Android Pad版下载,腾讯视频 android下载地址 2012-01-19

    腾讯视频For Android Pad版下载,腾讯视频 android下载地址 版本特性: 1.加入了键盘控制。用户可以外接键盘(usb、蓝牙),来使用腾讯视频。 2.内容涵盖电影、电视剧、综艺、新闻、体育、娱乐、财经,最新最热尽在其中。 3.大片、剧集、综艺,动漫,最新最热的视频资源,高清观看。 4.支持播放记录的功能,方便进行视频续播和回放。 下载地址 http://dldir1.qq.com/qqtv/android/QQLiveHD_1.0.1.apk

  • Skype for Android能通过3G或WiFi连接使用吗 2012-01-31

      Skype for Android手机可以通过3G 或WiFi连接来拨打和接听Skype至Skype电话,拨打普通电话,使用在线号码(单独购买)接听电话以及收发即时消息。(美国除外,在美国,Skype至Skype通话及拨打普通电话只能通过WiFi连接)。通过3G网络连接进行的Skype至Skype通话是免费的。如果是通过一个3G或WiFi移动数据套餐连接来使用Skype,运营商可能会收取数据流量费。

  • 开启Google Maps 5 for Android的矢量和离线功能 2012-02-12

    紧跟Nexus S的发布不几天,Google就把革命性的Google MaPS 5 for Android放到了菜市场上供下载。新版的应用包含矢量3D和离线两个最炫的功能(当然大陆是没有3D的啦),但是在我的Sprint Hero CDMA上更新后却无法开启这两个功能。很多网友同样也抱怨自己的机器有类似的现象。XDA上的大牛Brut.all给出的解释是一方面Google会根据手机类型、OS、网络所在国家决定一系列功能的开启与否,另一方面,许多旧机器硬件上(包括G1)是具备Multi-Touch功

  • 美颜相机for Android最新版惊艳亮相:效果最自然的自拍神器 2012-03-29

      备受爱自拍女生追捧的手机自拍神器“美颜相机”安卓版在八月初迎来了又一次重大改版,跟iPhone最新版一样,美颜相机安卓版1.3也在“自拍”功能中新增加了“美颜特效”模式,此外自拍瞬间的祛黑眼圈功能及祛斑功能再度升级,整体的美颜效果上了一个台阶,用安卓手机的MM们赶紧来感受下这款效果最自然的自拍神器吧!   新增“实时美颜特效”模式,让自拍更与众不同   图1   新增加的“实时美颜特效”模式算是这次改版的一个大亮点,打开美颜相机,点击自拍,右下角可以自由选择模式,轻拉到最左边进入“一键美颜”

  • 应用助手for Android 新版发布下载,照片管理增加图片预览功能 快速浏览手机上的照片 2012-08-04

    应用助手for Android 新版发布下载,照片管理增加图片预览功能 快速浏览手机上的照片 自圣诞节开始,大大小小的节日就接踵而至:新年元旦、除夕春节、正月元宵。随着节日脚步的临近,温馨感人亦或是幽默诙谐的祝福短信悄然在亲朋好友间传播开来。亲人、爱人、朋友、同事,不同的对象,祝福的文字也大不相同。好不容易编辑好了祝福内容,还得挨个的发给手机通讯录内几十甚至上百个亲朋好友。尤其除夕夜手指就跟打仗一样一刻不停的发,生怕自己的祝福送的比别人晚了。这不,应用助手Beta5新版新功能为用户带来了福音:新

  • Mono For Android 无法启动模拟器 2012-09-27

      使用了Xamarin离线包安装软件的朋友,可能会遇到这样一个问题:Android SDK not found. Please check whether all the components are installed and that Xamarin.Android configuration points to an existing Android SDK path。   Mono For Android 无法启动模拟器,提示:Android SDK not found Android

  • 美颜相机for Android版更新 2012-10-11

      备受爱自拍女生追捧的手机自拍神器“美颜相机”安卓版在八月初迎来了又一次重大改版,跟iPhone最新版一样,美颜相机安卓版1.3也在“自拍”功能中新增加了“美颜特效”模式,此外自拍瞬间的祛黑眼圈功能及祛斑功能再度升级,整体的美颜效果上了一个台阶,用安卓手机的MM们赶紧来感受下这款效果最自然的自拍神器吧!   新增“实时美颜特效”模式,让自拍更与众不同   ▲美颜相机安卓版   新增加的“实时美颜特效”模式算是这次改版的一个大亮点,打开美颜相机,点击自拍,右下角可以自由选择模式,轻拉到最左边进入

  • 安卓QQ2013体验下载申请开发,QQ2013 for Android新版内测报名地址 2012-12-31

    安卓QQ2013体验下载申请开发,QQ2013 for Android新版内测报名地址 好像今天就结束了 的朋友们 有人喜欢新版可以去试试吧 据说 版本全新升级的啦 QQ2013邀您参与新版本内测体验 感谢参与QQ2013 for Android新版体验,2013带来全新改版界面,增加讨论组和分组管理等功能。点击“我要报名”登记QQ号码,即有机会获得优先体验资格www..com 敬请留意近期系统通知。 报名时间:即日起到 2012年12月31日24点止 报名地址 http://mapp.3g.q

Copyright (C) quwantang.com, All Rights Reserved.

趣玩堂 版权所有 京ICP备15002868号

processed in 0.046 (s). 10 q(s)