图形子系统(一)

SurfaceFlinger合成五部曲

    void SurfaceFlinger::handleMessageRefresh(){
        //合成之前的与处理,检查是否有新的图层变化,如果有,执行请求下一次VSync信号
        preComposition();
        //若Layer的位置/先后顺序/可见性发生变化,重新计算Layer的目标合成区域和先后顺序
        rebuildLayerStacks();
        //调用hwc的prepare方法询问每个图层是否支持硬件合成
        setUpHWComposer();
        //当打开开发者选项中的“显示Surface刷新”时,额外为产生变化的图层绘制闪烁动画
        doDebugFlashRegions();
        //如果不支持硬件合成,在该方法中会调用GPU合成,接着提交buffer
        doComposition();
        //调Layer的onPostComposition方法,主要用于调试,可以忽略
        postComposition(refreshStartTime);
    }
 

APP绘制工作和SF合成工作已经全部完成,我们来画张图总结一下本章节内容

image.png

参考:https://juejin.cn/post/7132777622487957517

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容