[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
相关推荐
人生游戏牛马NPC1号42 分钟前
学习 Flutter (三):玩安卓项目实战 - 上
android·学习·flutter
还债大湿兄1 小时前
《C++内存泄漏8大战场:Qt/MFC实战详解 + 面试高频陷阱破解》
c++·qt·mfc
小馬佩德罗2 小时前
Android系统的问题分析笔记 - Android上的调试方式 debuggerd
android·调试
清霜之辰4 小时前
安卓基于 FirebaseAuth 实现 google 登录
android·google·auth·firebase
GitLqr4 小时前
数码洞察 | Apple VS DMA、三星新品、Android 16KB Page Size
android·ios·samsung
alexhilton4 小时前
SnapshotFlow还是collectAsState?对于Jetpack Compose来说哪个更香?
android·kotlin·android jetpack
珊瑚里的鱼4 小时前
LeetCode 692题解 | 前K个高频单词
开发语言·c++·算法·leetcode·职场和发展·学习方法
AI+程序员在路上4 小时前
QTextCodec的功能及其在Qt5及Qt6中的演变
开发语言·c++·qt
Risehuxyc4 小时前
C++卸载了会影响电脑正常使用吗?解析C++运行库的作用与卸载后果
开发语言·c++
Erwooow5 小时前
Android 16k jni修改
android