[RK3399][Android7.1] 调试笔记 ---双屏异显副屏显示画面有拉伸

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

现象:
主屏使用 4:3 edp, 副屏使用 16:9 HDMI.
双屏异显时,副屏显示画面会被拉伸.

[RK3399][Android7.1] 调试笔记 ---双屏异显副屏显示画面有拉伸_第1张图片

原因:
HDMI可以使用和适应不同的分辨率.
edp的分辨率是2048*1536,符合4:3比例,而HDMI显示的分辨率是1024*768,不是16:9而是4:3的比例.

得到1024*768的原因在于板子没有读取到HDMI的EDID也就是HDMI的分辨率而默认设置成了1024*768,这样显示的分辨率和物理屏幕比例不一致,而画面默认就会被拉伸了.

而EDID读取失败的最终原因是硬件上某个上拉电阻的组织太大导致通讯失败.


读取edid流程:

    drm_helper_probe_single_connector_modes_merge_bits->  drm_probe_helper.c
      drm_load_edid_firmware //从硬件去读取edid
      drm_add_modes_noedid(connector, 1024, 768); -> //如果读取不到就使用驱动中默认的分辨率,这里传参是1024*768,这也就是为什么HDMI默认是这个值的原因
        drm_mode_probed_add //drm_dmt_modes列表中比1024*768小的值都会被加进来

如果已经知道HDMI所支持的分辨率了,那么可以直接修改drm_add_modes_noedid()传入的值,比如改成1920*1080,这样可以保持硬件上的兼容性.


参考:
Rockchip_双屏显示旋转方向调试文档_V1.01_20190226.pdf

你可能感兴趣的:(RK3399,子类__Display)