rk3399 android9.0 调试屏幕进入系统桌面显示异常问题

问题描述

烧录完系统进入桌面后显示异常(显示不稳定,黑屏...)

例如:调试1366*768低分辨率的edp屏幕出现问题:系统启动(开机logo,动画正常)进入桌面后显示正常,但是滑动鼠标就会显示黑屏(此时有背光),静置几秒钟显示恢复;只要滑动鼠标就会无显示黑屏。


异常时log日志分析:

[drm:vop_afbdc_atomic_check] *ERROR* win[0] afbdc must 16 align, width: 1366 //vop如果想要接受afbc编码的framebuffer就必须是能够被16整除,分辨率是1366所以输出不了

[drm:vop_afbdc_atomic_check] ERROR not support afbdc //不支持afbc编码

解决方案:

关闭AFBDC编码,需要修改hardware/rockchip/libgralloc/Android.mk 文件,将其中的 USE_AFBC_LAYER 设置为0。

/* 关闭GPU AFBC功能:
   补丁修改路径:hardware/rockchip/libgralloc/
*/

diff --git a/Android.mk b/Android.mk
index 4a82197..b05b1ed 100755
--- a/Android.mk
+++ b/Android.mk
@@ -130,7 +130,7 @@ MALI_USE_YUV_AFBC_WIDEBLK?=0
 GRALLOC_INIT_AFBC?=1

 # not use afbc layer by default.
-USE_AFBC_LAYER = 0
+USE_AFBC_LAYER = 1

 ifneq ($(filter rk3399 rk3399pro, $(strip $(TARGET_BOARD_PLATFORM))), )
 USE_AFBC_LAYER = 1

如果如上方法不能解决问题,可直接在系统中添加如下属性:

vendor.gralloc.disable_afbc=1


AFBC介绍

AFBC - ARM Frame Buffer Compression

目的:用于降低媒体系统中的带宽。

引用:GPU、视频处理器和显示处理器之间的交互。其中一个带宽最密集的用例是视频后处理。在许多用例中,GPU 在将视频流用作 2D 或 3D 场景中的纹理时需要读取视频并应用特效。在这样的情形中,ARM 帧缓冲压缩 (AFBC) 这种具备精细随机访问能力的无损图像压缩协议和格式能够最大程度地减少 Soc 内 IP 块之间的数据传输量,将系统级别的总体带宽和功耗最多降低 50%。
在这里插入图片描述
在 SoC 中使用 AFBC 时,视频处理器只需以压缩格式写出视频流,GPU 则读取它们并且仅在片上内存中解压缩它们。完全相同的优化将应用到用于屏幕的输出缓冲。无论是 GPU 还是视频处理器生成最终的帧缓冲,它们都会被压缩,因此显示处理器将以 AFBC 格式读取它们并且仅在移到显示内存中时进行解压缩。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45639314/article/details/129158197