[RK3566-Android11] 关于2K (2560x1440)分辨率支持问题

问题描述

使用2K-2560x1440显示器,发现设置->显示->HDMI->分辨率里面只有1920x1080 1280x720 720x480。没有2560x1440分辨率显示。

根据文档我在kernel\drivers\gpu\drm\drm_edid.c中添加了2560x1440分辨率信息,如下:

c 复制代码
/* 2560x1440@60Hz */ { DRM_MODE("2560x1440", DRM_MODE_TYPE_DRIVER, 268500, 2560, 2608,
2640, 2720, 0, 1440, 1441, 1444, 1500, 0,
DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) },

/* 128 - 2560x1440@100Hz 64:27 */
{ DRM_MODE("2560x1440", DRM_MODE_TYPE_DRIVER, 268500, 2560, 2608,
           2640, 2720, 0, 1440, 1441, 1444, 1500, 0,
           DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC),
      .vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_64_27, },

在device\rockchip\common\resolution_white.xml和device\rockchip\rk356x\rk3566_r\resolution_white.xml分辨率白名单中分别添加了对应分辨率,如下

c 复制代码
<resolution> <!-- 2560x1440@60Hz -->
<clock>268500</clock>
<hdisplay>2560</hdisplay>
<hsync_start>2608</hsync_start>
<hsync_end>2640</hsync_end>
<htotal>2720</htotal>
<hskew>0</hskew>
<vdisplay>1440</vdisplay>
<vsync_start>1441</vsync_start>
<vsync_end>1444</vsync_end>
<vtotal>1500</vtotal>
<vscan>0</vscan>
<vrefresh>60</vrefresh>
<flags>5</flags>
<vic>128</vic>
</resolution>

加入以上修改后,重新烧录软件,设置->显示->HDMI->分辨率中还是没有2560x1440的分辨率。

此时cat /sys/class/drm/card0-HDMI-A-1/modes,edid信息中有2560x1440分辨率,如下:

c 复制代码
130|console:/ # cat /sys/class/drm/card0-HDMI-A-1/modes
2560x1440
1920x1200
1920x1080
1920x1080
1920x1080
1920x1080i
1920x1080i
1920x1080i
1920x1080
1920x1080
1920x1080i
1680x1050
1600x900
1280x1024
1280x1024
1440x900
1152x864
1280x720
1280x720
1280x720
1280x720
1024x768
1024x768
1024x768
800x600
800x600
800x600
800x600
720x576
720x576
720x480
720x480
720x480
720x480
720x480
640x480
640x480
640x480
640x480
640x480
640x480
720x400

那么如何在设置->显示->HDMI->分辨率中增加2K-2560x1440分辨率支持呢?


解决方案:

我们只需要不编译device\rockchip\common\resolution_white.xml和device\rockchip\rk356x\rk3566_r\resolution_white.xml 这个分辨率白名单,去掉分辨率过滤功能就可以。这样所有分辨率都会显示出来。将device/rockchip/common/device.mk中与resolution_white.xml相关的代码屏蔽了就可以了。

c 复制代码
# ifneq ($(filter atv box, $(strip $(TARGET_BOARD_PLATFORM_PRODUCT))), )
#     PRODUCT_COPY_FILES += \
#       $(LOCAL_PATH)/resolution_white.xml:/system/usr/share/resolution_white.xml \
#       $(LOCAL_PATH)/tv/permissions/privapp-permissions-tv-common.xml:system/etc/permissions/privapp-permissions-tv-common.xml
# endif
c 复制代码
# USE_PRODUCT_RESOLUTION_WHITE := $(shell test -f $(TARGET_DEVICE_DIR)/resolution_white.xml && echo true)
# ifeq ($(strip $(USE_PRODUCT_RESOLUTION_WHITE)), true)
#   PRODUCT_COPY_FILES += \
#       $(TARGET_DEVICE_DIR)/resolution_white.xml:/system/usr/share/resolution_white.xml
# else
#   PRODUCT_COPY_FILES += \
#       $(LOCAL_PATH)/resolution_white.xml:/system/usr/share/resolution_white.xml
# endif
相关推荐
AlexMercer10121 小时前
【C++】二、数据类型 (同C)
c语言·开发语言·数据结构·c++·笔记·算法
Reese_Cool1 小时前
【C语言二级考试】循环结构设计
android·java·c语言·开发语言
平凡シンプル2 小时前
安卓 uniapp跨端开发
android·uni-app
elina80132 小时前
安卓实现导入Excel文件
android·excel
小灰灰爱代码2 小时前
C++——求3个数中最大的数(分别考虑整数、双精度数、长整数的情况),用函数模板来实现。
开发语言·c++·算法
严文文-Chris2 小时前
【设计模式-享元】
android·java·设计模式
趋势大仙2 小时前
SQLiteDatabase insert or replace数据不生效
android·数据库
DS小龙哥2 小时前
QT For Android开发-打开PPT文件
android·qt·powerpoint
BeyondESH3 小时前
Linux线程同步—竞态条件和互斥锁(C语言)
linux·服务器·c++
试行3 小时前
Android实现自定义下拉列表绑定数据
android·java