首页 > 编程知识 正文

RK3399 4K 带宽不足drmvopisr ERROR POSTBUFEMPTY irq err,cpri带宽不足

时间:2023-05-06 01:11:52 阅读:232459 作者:4025

     4k输出分为两种,屏输出3840*2160@60,一种是1920x1080分辨率的UI(拉伸到3840*2160),一种是点对点的3840*2160的UI,两种都支持60fps,但会出现DDR带宽不足的问题,会出现[drm:vop_isr] ERROR POST_BUF_EMPTY irq err这种错误,随之屏幕就会出现绿条纹的闪烁画面。这里是讲60fps情况下,因为30fps是正常的。

    根据官方文档《RK3399_Android7.1_Software_Development_Guide》中的《9.7 DDR  带宽导致屏闪问题 Flicker issue caused by DDR bandwidth》解决,

1、先把dmc的频率调到最高,测试无效。

2、关闭负载变频,ddr频率拉到最大,测试无效。

3、vop-pn-msch-readlatency = <
      /* plane_number readlatency */
              0 0x20
              4 0x20
     >;

这个官方解释:vop-pn-msch-readlatency 这个参数指定了两列数据,第一列为 UI 的层数,第二列为 vop
获取 ddr 使用权限的延时,这个值越小,表示越容易获取访问权限,值为 0 表示默认值(默认值为
0x80),如果出现闪屏问题,建议将值改为 0x20,这个值不建议随意修改,并且这个值如果改动
可能会影响性能。目前默认的值,只会在 UI 为 4 层的场景下,将 vop 的 ddr read lantency 改为
0x20,也就是在 4 层场景下提升 vop 对 ddr 访问的时效性,从而让 vop 更快的获取到数据。

测试1080P下UI 有效,播放4K视频没问题。3840*2160 点对点UI播放4k视频没问题,但下拉菜单会出现绿条纹。也会出现带宽问题。

解决方案:

不采取官方文档的修改,关闭负载变频,将DDR频率拉到856M.

1、hardwarerockchiplibgrallocAndroid.mk

ifneq ($(filter rk3399 rk3399pro, $(strip $(TARGET_BOARD_PLATFORM))), )
USE_AFBC_LAYER = 0 //改为0
ifeq ($(strip $(TARGET_BOARD_PLATFORM_PRODUCT)),box)
USE_AFBC_LAYER = 0
endif

2、devicerockchiprk3399device.mk

vendor.hwc.compose_policy=0  //改为GPU合成,默认是6,HWC合成

 

测试反馈:

3840*2160 UI @60fps 下的测试4K视频,HWC合成的优点对高码率的视频播放更流畅,但对DDR带宽要求更高,经测试H265码率大于50000kbps的视频播放会卡顿,小于50000kbps码率的视频播放正常,可以满足需求。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。