Android显示异常问题处理指导手册I基本思路


所有量产的产品,一定会遇到奇形怪状的显示异常问题。很多问题简直光怪陆离,丈二和尚摸不着头脑,因为涉及的模块太多了!要想搞清楚到底是哪一环节出了错,你得先熟悉整个显示流程。幸运的是,根据多年的“踩坑”经验,总结了一套简单的排查指南,帮你根据异常现象,对号入座,初步锁定“嫌疑模块”,然后再深入分析。

Step 1:

先挑软柿子捏,找一台“对比机”来看看这问题能不能复现。这个的对比机可以理解为方案商释放的driver_only代码编译的镜像。如果对比机上也出现了同样的问题,那这个锅就要给APP Vendor了!

Step 2:

要是对比机没问题,那可以勾选“禁用硬件叠加”(Setting -> Developer options -> Disable HW overlays),看问题还有没有。

  1. 如果不复现,表示推给GPU叠图后,显示正常,就需要找HWC owner进一步check 原因,这时候往往需要HWC log。MTK 平台中,HWC log 会打印在ged.log中,cat log 进行分析。

adb shell cat /d/ged/gedlog > ged.log

    (2)如果还复现,表示无论GPU 或者HWC 叠图,都可以复现问题,需要往前看哪一步异常。通常会先做BQ dump,BQ dump 是dump 所有给surfaceflinger 前BufferQueue中的数据,具体哪些flow 经过bufferqueue,后面一章的data flow有show 出,可以参考。

Step 3:

      1) dump的图片异常,如是普通UI,请先check SF_bqdump_all.log 中该图层对应layer的mConnectedApi讯息,1表示GPU 绘制,2表示用CPU绘制,其余两种很少碰见。

NATIVE_WINDOW_API_EGL = 1,

NATIVE_WINDOW_API_CPU = 2,

NATIVE_WINDOW_API_MEDIA = 3,

NATIVE_WINDOW_API_CAMERA = 4,

如果mConnectedApi=2,直接找skia onwer分析CPU为何画错;

如果mConnectedApi=1,由于某些app是适配某一种GPU去开发的,所以可以先rename GPU的name看是否正常。如在高通不复现,mali GPU 复现,可以rename成高通的,如下是rename成高通308的CMD,

adb shell setprop debug.gpu.fake_gpu_vendor 'Qualcomm'

adb shell setprop debug.gpu.fake_gpu_renderer 'Adreno (TM) 308'

如果rename成对比平台GPU依然复现,鉴于P版本render pipeline 改版,由O版本默认的HWUI改成skiaGL,所以可以切换成和O版本一样看问题是否复现。如不复现,找skiaGL owner check,如复现就找GPU owner check,GPU onwer通常会抓MGD或者pvrtrace或者Gapid去看怎么画错的,具体如何抓取和如何初步分析,后面第三章会具体介绍。

切Opengl:adb shell "setprop debug.hwui.renderer opengl"

切回去: adb shell "setprop debug.hwui.renderer ''"

如果是camera 或者video 场景的画面异常, 有一层layer通常是surfacetexture,这是一个raw data,需要用特殊的工具解析出图片是否正常。如异常,直接找camera或者video owner check。如正常,还要看另外一层layer surfaceview是否正常,这层layer是surfacetexture 经过GPU render后的结果,通常使用glSurfaceview实现。如果surfaceview正常,就走dump 图片正常的flow,如果异常,可以先找GPU owner,不过也有例外,即不是GPU的问题,要具体问题具体对待。

2) dump 的图片正常,可以录screenrecord看录出来的视频是正常,如正常,极有可能是display driver的问题,如不正常,找HWC owner check HWC flow。

下面是具体的flow,如果比较熟悉或经验比较丰富,也可不按照该步骤check,直接分析即可。详细flow见末尾图片。

Step 4:

(3)如果定位到Display Driver异常. 先进行如下Bypass PQ实验,排查是否为PQ问题(适用于黑屏,或闪屏问题.)如果Bypass PQ后,显示变正常,说明问题与PQ有关,提交Eservice时,请Title注明PQ问题. 如bypass PQ后,异常依然存在,也请在Eservice description 中说明Bypass PQ 无效.

例如:

。。。。。。。。。。。。。。。更多内容及指导思路见微信

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值