[RK3399][Android7.1] 调试笔记 --- 显示屏使用VOPL通道后无法显示

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kris_fei/article/details/85251431

Platform: RK3399
OS: Android 7.1
Kernel: v4.4.83

现象:

在移植完LVDS屏幕(可参考 DSI转LVDS芯片TC358775添加)之后,把显示通道从VOPB换到VOPL发现开机动画能显示,但是无法正常显示进入桌面了。


异常Log:

[drm:vop_afbdc_atomic_check] ERROR not support afbdc


原因:

VOPL不支持AFBC,而VOPB是支持的。
VOP_BIG:
在这里插入图片描述

VOP_LIT:
在这里插入图片描述


解决方法:

kris@eco:~/rk3399/hardware/rockchip/libgralloc$ g df
diff --git a/Android.mk b/Android.mk
index 2ea9765..937dfe6 100644
--- a/Android.mk
+++ b/Android.mk
@@ -161,7 +161,7 @@ endif
 
 ifeq ($(strip $(TARGET_BOARD_PLATFORM_GPU)), mali-t860)
 MALI_AFBC_GRALLOC := 1
-USE_AFBC_LAYER = 1
+USE_AFBC_LAYER = 0
 LOCAL_CFLAGS += -DMALI_PRODUCT_ID_T86X=1
 endif

替换system.image或者libgralloc_drm.so验证测试即可。


AFBC介绍:

AFBC - ARM Frame Buffer Compression

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

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


参考:

AFBC+ASTC到底是什么?如何节能

猜你喜欢

转载自blog.csdn.net/kris_fei/article/details/85251431