欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > android display 笔记(十)surfaceflinger与HWC的关系

android display 笔记(十)surfaceflinger与HWC的关系

2025/4/15 0:44:58 来源:https://blog.csdn.net/u013574207/article/details/147166004  浏览:    关键词:android display 笔记(十)surfaceflinger与HWC的关系

在 Android 图形系统中,SurfaceFlinger 和 Hardware Composer (HWC) 是紧密协作的两个核心组件,共同负责屏幕内容的合成与显示。它们的关系可以用 “决策者与执行者” 来概括:

首先HWC中

DEVICE:指“显示设备硬件”(如 Overlay 引擎、MIPI-DSI 控制器)。
CLIENT:指“客户端”(即 SurfaceFlinger 的 GPU 合成后端)。

步骤 1:图层收集与准备
SurfaceFlinger:

从各个应用(如 Camera、Launcher)收集 Layer(每个 Layer 对应一个 BufferQueue 的输出)。

计算每个图层的可见性、位置、透明度等属性(通过 CompositionEngine)。

步骤 2:合成策略决策
SurfaceFlinger 询问 HWC:

通过 HWC::validate() 向 HWC 提交所有图层信息。

HWC 返回每个图层的合成方式建议:

硬件合成(Overlay):由显示控制器(Display Controller)直接处理(性能最优)。

GPU合成:无法硬件合成时(如复杂变换),回退到 GPU 渲染(通过 OpenGL ES)。

混合合成:部分图层用 Overlay,部分用 GPU。
步骤 3:执行合成
HWC 通过 HWC::present() 执行最终合成:

直接操作显示硬件将图层送入屏幕(避免 GPU 参与,降低功耗)。

处理 VSync 信号,确保合成的帧在正确时机显示(防撕裂)。

步骤 4:反馈与优化
HWC 动态调整策略(如根据负载切换 Overlay/GPU 合成)。

SurfaceFlinger 根据 HWC 的能力调整图层分配(如避免频繁切换合成方式)。

关键代码路径
SurfaceFlinger:frameworks/native/services/surfaceflinger/DisplayHardware/HWC2.cpp(HWC 交互)。frameworks/native/services/surfaceflinger/CompositionEngine/(合成逻辑)。HWC 实现:厂商 HAL 层:hardware/interfaces/graphics/composer/2.1/

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词