在上一篇 HWC2On1Adapter 初始化完成后,调用 initWithDevice() 实例化 HwcHal 对象,然后创建高级接口(IComposer),使得调用者能够通过这个接口与硬件进行交互。这里我们就来看一下 HwcHal 和 IComposer 的初始化流程。
一、HWC HAL初始化
1、HwcLoader.h
源码位置:/hardware/interfaces/graphics/composer/2.1/utils/passthrough/include/composer-passthrough/2.1/HwcLoader.h
initWithDevice
namespace detail {
……
// HwcHalImpl implements V2_*::hal::ComposerHal on top of hwcomposer2
template <typename Hal>
class HwcHalImpl : public Hal {
public:
virtual ~HwcHalImpl() {
if (mDevice) {
hwc2_close(mDevice);
}
}
……
bool initWithDevice(hwc2_device_t* device, bool requireReliablePresentFence) {
// 从现在起,我们