全面屏界面花屏問題
CSDN-全面屏花屏問題
總結(jié):Fence 問題導(dǎo)致的花屏問題一般是閃爍黑線或者黑塊
播放騰訊視頻花屏問題
騰訊視頻播放《長津湖之水門橋》視頻花屏
總結(jié):本質(zhì)上因為AFBC的buffer內(nèi)容和參數(shù)不一致導(dǎo)致的
錄屏按鈕消失問題
現(xiàn)象:
MIUI上開啟錄屏功能在后臺運行,同時切換到Camera 預(yù)覽界面净当,操作一段時間后,錄屏圖標(biāo)消失
分析:
Assign 過來的原因是由于HWC出現(xiàn)了錯誤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 代碼是發(fā)現(xiàn)drm_prime_handle_to_fd_ioctl 這個ioctl 返回錯誤導(dǎo)致项戴,原因是layer buffer handle 失效
hwcomposer 中的layer handle 都是Surfaceflinger 傳遞下來的娩践,本質(zhì)上是從 gralloc 分配的Buffer,從應(yīng)用層的角度看,是應(yīng)用Activity 對于的ViewRootImpl 里創(chuàng)建的GraphicBuffer幌蚊,懷疑是應(yīng)用層出現(xiàn)的異常
結(jié)論
追查event 的log,發(fā)現(xiàn)screenrecord 進程在hwc錯誤log 出現(xiàn)前已經(jīng)被am kill溃卡,但是如果在正常情況下手動kill溢豆,并不會出現(xiàn)hwc 的錯誤log;
客戶更新MIUI版本瘸羡,此問題不再復(fù)現(xiàn)漩仙,認(rèn)為是應(yīng)用層的邏輯導(dǎo)致
播放Youtube Short 黑屏問題
現(xiàn)象
youtube short 類似于國內(nèi)抖音的業(yè)務(wù)邏輯,上劃切換下一個視頻犹赖;此問題現(xiàn)象是在切換視頻時讯赏,中間出現(xiàn)閃黑屏,在開發(fā)者模式關(guān)閉HW Overlay冷尉,此現(xiàn)象不再復(fù)現(xiàn)
分析
drm driver 的log 中出現(xiàn)了很多的 error event漱挎,含義是在read Layer1 AFBC 格式的內(nèi)容時,發(fā)現(xiàn)格式不符合要求
視頻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)
結(jié)論
原因是由于NV12AFBC格式的buffer雀哨,DPU不支持奇數(shù)類型的crop 參數(shù)
SourceCrop:(21,0,458,854)
hwc/driver 沒有添加這個限制磕谅,導(dǎo)致DPU出現(xiàn)錯誤的中斷