全面屏界面花屏问题
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出现错误的中断
网友评论