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:
解决方法:
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 格式读取它们并且仅在移到显示内存中时进行解压缩。
原作者:KrisFei