代码路径为:/frameworks/native/services/surfaceflinger/DisplayHardware/HWComposer.cpp 代码版本为android P
此类跟硬件合成Vsync信号有关系。这篇文章主要跟踪下硬件合成Vsync的过程。废话不多说,先看下构造方法。

可以看到构造方法传入一个Composer,然后强转为 mHwcDevice变量。目前这个就是唯一的构造传入参数。
遇到了一个新的类,android::Hwc2::Composer,这个类实现在
/frameworks/native/services/surfaceflinger/DisplayHardware/ComposerHal.cpp 中。

我们的HWComposer的很多操作都委托给了Composer。先来看下HWComposer的几个比较重要的方法。
先来看下Composer怎么构造的。
165Composer::Composer(const std::string& serviceName)
166 : mWriter(kWriterInitialSize),
167 mIsUsingVrComposer(serviceName == std::string("vr"))
168{
//通过binder 调用HAL模块的mComposerService
169 mComposer = V2_1::IComposer::getService(serviceName);
170
171 if (mComposer == nullptr) {
172 LOG_ALWAYS_FATAL("failed to get hwcomposer service");
173 }
174

本文详细介绍了Android系统中硬件合成Vsync信号的处理流程,从HWComposer类的构造到SurfaceFlinger的onVsyncReceived方法,深入剖析了Vsync信号如何在用户空间和硬件驱动之间传递,以及SurfaceFlinger如何响应Vsync事件来协调显示帧率。
最低0.47元/天 解锁文章
1463

被折叠的 条评论
为什么被折叠?



