分析跟手性

1. Touch Latency为硬件时间(Touch IC latency)和软件时间(Android  pipeline latency)总和。MTK分析时以软件时间为主。

  • Touch IC latency和客户选料及FW调优有关。客戶需要提供vendor IC latency数据,请协助客戶保证Touch IC latency不输对比机。
  • Android pipeline latency差异主要源于Android S版及R版流程差异, Android S新增Latch signaled buffer及SF backpressure机制,造成Android S0平台出图流程较R慢约15ms。

 

2. Android touch event flow

2.1 Touch IC hardware time

Touch IC detect event, CPU收到irq时,唤起mtk-tpd thread,进行I2C/SPI读取TP数据后,上报到input event:

 

抓Systrace时打开了input event,会在system_server看到 iq 和 InputReader信息:

 

如上图,手指按下时可以看到 dispatchPtr:Down,手指离开TP时可以看到 dispatchPtr:Up。

2.2 Android input system

InputReader读取Input事件,唤醒InputDispatcher,由 InputDispatcher分派事件给对应的app处理

2.3 App rendering

在Vsync到时,App的UI thread被Input事件唤醒,并标有deliverInputEvent; App进行逻辑运算,根据点击/滑动做出对应的出图(render thread queueBuffer)

 

2.4 Android graphics system

在Vsync到时,SurfaceFlinger消耗buffer并通知HWC叠图;OVLEngine叠完图并上传显示资料至Display区显示

 

2.5 比如某个平台在120Hz Vsync下的Touch Flow,Android total pipeline latency ~= 59.426 ms

 

3. Solution参考

3.1 Touch IC hardware time优化,这个要咨询TP的vendor是否可用优化

3.2 可用在APP白名单中配置TOUCH BOOST参数,比如:
<data cmd="PERF_RES_POWERHAL_TOUCH_BOOST_ENABLE" param1="1"></data>
<data cmd="PERF_RES_POWERHAL_TOUCH_BOOST_CLUSTER_0_OPP" param1="3"></data> // CPU cluster0 freq opp,档位0 对应CPU最高频率,如果功耗高,请修改为3,4,5 ..等
<data cmd="PERF_RES_POWERHAL_TOUCH_BOOST_CLUSTER_1_OPP" param1="3"></data> // CPU 中核freq opp,档位0 对应CPU最高频率,如果功耗高,请修改为3,4,5 ..等
<data cmd="PERF_RES_POWERHAL_TOUCH_BOOST_ACTIVE_TIME" param1="20"></data> // fpsgo控频的情況下,20ms不出帧,touch boost才可能生效。如果让touch boost立即生效,可使用 active_time=1,但可能会增加功耗

scenario powerhint "INTERACTION" //这个主要在手指未离开TP情况下,连续滑动场景下起作用
vendor/mediatek/proprietary/hardware/power/config/mt6***/scn_tbl/powerscntbl.xml
  <scenario powerhint="INTERACTION">
       <data cmd="PERF_RES_CPUFREQ_MIN_CLUSTER_0" param1="2000000"></data>
       <data cmd="PERF_RES_CPUFREQ_MIN_CLUSTER_1" param1="2000000"></data> // 设置CPU 大小核min freq,要求的最小频率可以自己调整
       <data cmd="PERF_RES_DRAM_OPP_MIN" param1="1"></data> //设置dram
  </scenario>

scenario powerhint "MTKPOWER_HINT_APP_TOUCH" //这个是 touch down ---- touch up, 中间起作用
  <scenario powerhint="MTKPOWER_HINT_APP_TOUCH">
       <data cmd="PERF_RES_CPUFREQ_MIN_CLUSTER_0" param1="1500000"></data>
       <data cmd="PERF_RES_CPUFREQ_MIN_CLUSTER_1" param1="1800000"></data>
       <data cmd="PERF_RES_CPUFREQ_CCI_FREQ" param1="1"></data>
       <data cmd="PERF_RES_DRAM_OPP_MIN" param1="1"></data>
       <data cmd="PERF_RES_SCHED_UCLAMP_MIN_TA" param1="60"></data>
  </scenario>

Touch boost会增加功耗,所以需要客户自行评估是否要添加touch boost...

 3.3 可调小sf-duration,需要SurfaceFlinger owner 确认

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值