Android Display ID 对应关系

目录

四个基本ID

模块、类和id之间对应关系图


Android 中 对display 操作时, 从APP, DisplayManagerService, SurfaceFlinger到HWC通信都需要用到display id, 但是, 实际上,每个模块的display id 并不一致, 他们之间有一定的对应关系。 本文梳理各模块间display id对应关系。

四个基本ID

  • DisplayID: DisplayManagerService用于管理display 使用的id, 也是app 能够通过Display.getDisplayId() 得到的ID. 该ID 是按display 加载的顺序确定的, 每加载一个display, id依次增一。 代码:rameworks/base/services/core/java/com/android/server/display/DisplayManagerService.java中assignDisplayIdLocked.  
  • PhysicalDisplayID: SurfaceFlinger 中管理display 使用的ID, DisplayManagerService与SurfaceFlinger通信借助该ID. surfaceflinger中根据 mPhysicalDisplayId 找到HWC::Display, 通过HWC::Display中的mid 与hwc 通信, 其中的mId 为HWC给出, 即为下面的client_id. 
  • client_id: HWC中定义的ID, 会传递给SurfaceFlinger,  与SurfaceFlinger 通信使用该ID. HWC按照可支持的display 数量和类型的定义:hardware/qcom/display/sdm/libs/hwc2/hwc_session.cpp中HWCSession::InitSupportedDisplaySlots看map_info.client_id赋值。 client_id 与 surfaceflinger 中HWC::Display中的mId 相同。 hwc_session中根据该client_id通过hwc_display_[client_id]找到相应的 HWCDisplay, 该HWCDisplay中记录了sdm_id, 对应底层的display id. 
  • sdm_id: display driver传递给HWC的ID.如下log显示display的smd_id:
06-01 06:00:55.319   413  1236 I SDM     : HWCSession::HandlePluggableDisplays:  Handling hotplug... display_info.sdm_id =  3001, info.display_type= 0
06-01 06:00:55.319   413  1236 I SDM     : HWCSession::HandlePluggableDisplays: Handling hotplug... display_info.sdm_id =  3002, info.display_type= 1
06-01 06:00:55.319   413  1236 I SDM     : HWCSession::HandlePluggableDisplays: Handling hotplug... display_info.sdm_id =  3003, info.display_type= 1
06-01 06:00:55.320   413  1236 I SDM     : HWCSession::HandlePluggableDisplays:  Handling hotplug... display_info.sdm_id =  3004, info.display_type= 1

模块、类和id之间对应关系图

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值