Android SurfaceFlinger服务(七) ----- 图像的合成

SurfaceFlinger服务在Android系统中负责图层的合成与显示。当接收到VSync消息后,通过handleMessageRefresh处理函数启动合成过程。此过程中,预合成、重建图层堆栈和设置硬件合成器等步骤为合成做准备。核心的doComposition函数执行图层的合并,并通过doDisplayComposition和postFramebuffer完成显示。图层的compositionType决定硬件或软件合成方式,最终通过交换缓冲区提交结果。
摘要由CSDN通过智能技术生成

android应用中申请的Surface在SurfaceFlinger服务中都有对应有图层Layer与之对应。将这些图层合并且输出到显示外设是SurfaceFlinger的工作重点。本文来分析下合成的过程。合成工作在接收到VSync消息(MessageQueue::REFRESH)后开始。

void SurfaceFlinger::onMessageReceived(int32_t what) {
    ATRACE_CALL();
    switch (what) {
        
        ......
        
        case MessageQueue::REFRESH: {  
            handleMessageRefresh();        
            break;
        }
    }  
}
  • 调用消息处理函数handleMessageRefresh来进行显示刷新工作,图像合成与输出的核心就在这个处理函数里
void SurfaceFlinger::handleMessageRefresh() {
    ATRACE_CALL();

    ......
    
        preComposition();
        rebuildLayerStacks();
        setUpHWComposer();
        doDebugFlashRegions();
        doComposition();
        postComposition();
    
    ......


    previousExpectedPresent = mPrimaryDispSync.computeNextRefresh(0);
}
  • preComposition、rebuildLayerStacks、setUpHWComposer图层合成准备工作
  • <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值