美文网首页
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