美文网首页
Andriod 显示系统典型问题分析

Andriod 显示系统典型问题分析

作者: 特立独行的佩奇 | 来源:发表于2022-07-28 19:54 被阅读0次
全面屏界面花屏问题

CSDN-全面屏花屏问题
总结:Fence 问题导致的花屏问题一般是闪烁黑线或者黑块

播放腾讯视频花屏问题

腾讯视频播放《长津湖之水门桥》视频花屏
总结:本质上因为AFBC的buffer内容和参数不一致导致的

录屏按钮消失问题

现象
MIUI上开启录屏功能在后台运行,同时切换到Camera 预览界面,操作一段时间后,录屏图标消失

分析
Assign 过来的原因是由于HWC出现了错误log:

03-15 12:18:03.508  1000   476   515 E kms_base: drmPrimeFDToHandle failed on plane 0: Bad file descriptor
03-15 12:18:03.508  1000   476   515 E kms_base: layer2 import_fb_id failed on dpy:0

原因是下面的接口返回出错:

int drmPrimeHandleToFD(int fd, uint32_t handle, uint32_t flags, int *prime_fd)

追查libdrm 代码是发现drm_prime_handle_to_fd_ioctl 这个ioctl 返回错误导致,原因是layer buffer handle 失效
hwcomposer 中的layer handle 都是Surfaceflinger 传递下来的,本质上是从 gralloc 分配的Buffer,从应用层的角度看,是应用Activity 对于的ViewRootImpl 里创建的GraphicBuffer,怀疑是应用层出现的异常

结论
追查event 的log,发现screenrecord 进程在hwc错误log 出现前已经被am kill,但是如果在正常情况下手动kill,并不会出现hwc 的错误log;
客户更新MIUI版本,此问题不再复现,认为是应用层的逻辑导致

播放Youtube Short 黑屏问题

现象
youtube short 类似于国内抖音的业务逻辑,上划切换下一个视频;此问题现象是在切换视频时,中间出现闪黑屏,在开发者模式关闭HW Overlay,此现象不再复现

分析
drm driver 的log 中出现了很多的 error event,含义是在read Layer1 AFBC 格式的内容时,发现格式不符合要求
视频layer 的信息如下:

-----------------------------------------------------------------------------------------------------------------------------------------------
 Layer name
           Z |  Window Type |  Comp Type |  Transform |   Disp Frame (LTRB) |          Source Crop (LTRB) |     Frame Rate (Explicit) [Focused]
-----------------------------------------------------------------------------------------------------------------------------------------------
 SurfaceView - com.google.android.you[...].app.watchwhile.WatchWhileActivity#0
  rel     -2 |            0 |     CLIENT |          0 |    0   49  720 1458 |   21.0    0.0  458.0  854.0 |  30.00fps ExactOrMultiple    [*]

Index:4  Z:0  Transform:None  CompType Req:CLIENT  Res:CLIENT  isAFBC:1  BlendMode:NONE  ColorSpace:BT709
ColorFormat:MALI_NV12AFBC  PlaneAlpha:255  W*H:480*854  Size:716800  Stride:768  Offset:0  Flags:20545
DispFrame:(0,49,720,1458)  SourceCrop:(21,0,458,854)  AFBCCrop:(0,16,32,0)

结论
原因是由于NV12AFBC格式的buffer,DPU不支持奇数类型的crop 参数
SourceCrop:(21,0,458,854)
hwc/driver 没有添加这个限制,导致DPU出现错误的中断

长测设置colormarix失效问题

相关文章

网友评论

      本文标题:Andriod 显示系统典型问题分析

      本文链接:https://www.haomeiwen.com/subject/jgyxwrtx.html