ToB企服应用市场:ToB评测及商务社交产业平台
标题:
android display 条记(五)HWC(Hardware Composer)
[打印本页]
作者:
我爱普洱茶
时间:
2024-8-8 22:27
标题:
android display 条记(五)HWC(Hardware Composer)
HWC
简单来说HWC是用来合成图形和表现图形的,可以把多个图形缓存传给硬件混淆渲染器,让硬件混淆渲染器执行合成操纵,表现图形就是直接将图形缓存表现到屏幕。
android 14
/hardware/interfaces/graphics/composer/2.1/IComposer.hal
19 import IComposerClient;
20
21 interface IComposer {
createClient() generates (Error error, IComposerClient client);
复制代码
IComposer 用于客户进程与HWC进程创建通讯链接,createClient 用于创建IComposerClient 的对象。
IComposerClient
在IComposerClient接口类中通过registerCallback注册回调,客户进程注册回调后就可以使用HWC进程变乱。
registerCallback(IComposerCallback callback);
复制代码
IComposerCallback在IComposerCallback .hal中定义
/hardware/interfaces/graphics/composer/2.1/IComposerCallback.hal
19 interface IComposerCallback {
48 onHotplug(Display display, Connection connected);
62 oneway onRefresh(Display display);
74 oneway onVsync(Display display, int64_t timestamp);
复制代码
根据代码上的解释,可以相识到这三个接口的作用
onHotplug :当表现设备插入或退出时,通知客户进程
onRefresh:通知客户进程提供新的帧缓存
onVsync:发送给VSync同步信号
硬件混淆渲染器合成
创建图层
/frameworks/native/services/surfaceflinger/DisplayHardware/HidlComposerHal.cpp
358 Error HidlComposer::createLayer(Display display, Layer* outLayer) {
359 Error error = kDefaultError;
360 mClient->createLayer(display, kMaxLayerBufferCount,
361 [&](const auto& tmpError, const auto& tmpLayer) {
362 error = tmpError;
363 if (error != Error::NONE) {
364 return;
365 }
366
367 *outLayer = tmpLayer;
368 });
369
370 return error;
371 }
复制代码
android 14中将createlayer 从ComposerHal中移到了HidlComposerHal.cpp
Composer 通过调用mClient的接口createlayer向HWC进程哀求创建图层(mClient->createLayer)
----------------后续有时间再补充
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4