Topwo博客
首页
博客
项目
您现在的位置是:
Topwo博客
>>
Android
文章
cat /d/dri/0/summary
发布时间:2025-10-29
作者:Topwo
来源:原创
点击:21
1、查看硬件层输出给显示器的真实分辨率 `cat /d/dri/0/summary` ``` rk3399_firefly_aiojd4:/ # cat /d/dri/0/summary VOP [ff900000.vop]: ACTIVE Connector: HDMI-A overlay_mode[0] bus_format[100a] output_mode[f] color_space[0] Display mode: 3840x2160p30 clk[297000] real_clk[297000] type[40] flag[5] H: 3840 4016 4104 4400 V: 2160 2168 2178 2250 win0-0: DISABLED win1-0: DISABLED win2-0: ACTIVE format: AB24 little-endian (0x34324241) SDR[0] color_space[0] csc: y2r[0] r2r[0] r2y[0] csc mode[0] zpos: 0 src: pos[0x0] rect[3840x2160] dst: pos[0x0] rect[3840x2160] buf[0]: addr: 0x0000000000866000 pitch: 15360 offset: 0 win2-1: DISABLED win2-2: DISABLED win2-3: DISABLED win3-0: DISABLED win3-1: DISABLED win3-2: DISABLED win3-3: DISABLED post: sdr2hdr[0] hdr2sdr[0] pre : sdr2hdr[0] post CSC: r2y[0] y2r[0] CSC mode[1] VOP [ff8f0000.vop]: DISABLED ``` ``` rk3399_firefly_aiojd4:/ # cat /d/dri/0/summary VOP [ff900000.vop]: ACTIVE Connector: HDMI-A overlay_mode[0] bus_format[100a] output_mode[f] color_space[0] Display mode: 1920x1080p60 clk[148500] real_clk[148500] type[48] flag[5] H: 1920 2008 2052 2200 V: 1080 1084 1089 1125 win0-0: ACTIVE format: AB24 little-endian (0x34324241) SDR[0] color_space[0] csc: y2r[0] r2r[0] r2y[0] csc mode[0] zpos: 0 src: pos[0x0] rect[3840x2160] dst: pos[0x0] rect[1920x1080] buf[0]: addr: 0x0000000000866000 pitch: 15360 offset: 0 win1-0: DISABLED win2-0: DISABLED win2-1: DISABLED win2-2: DISABLED win2-3: DISABLED win3-0: DISABLED win3-1: DISABLED win3-2: DISABLED win3-3: DISABLED post: sdr2hdr[0] hdr2sdr[0] pre : sdr2hdr[0] post CSC: r2y[0] y2r[0] CSC mode[1] VOP [ff8f0000.vop]: DISABLED ``` 通过对比你提供的同一份固件在“接不同屏幕”时的 `/d/dri/0/summary` 日志,可以清晰看到 **固件根据屏幕的“物理能力”自动适配了硬件输出分辨率**,同时暴露了“UI 渲染分辨率与硬件输出分辨率的缩放关系”,以下是逐段拆解和核心结论: ### 一、先明确日志中的关键信息:RK3399 的双 VOP 与显示逻辑 RK3399 芯片有两个独立的 VOP(Display Controller,显示控制器):`ff900000.vop`(主 VOP,通常对应 HDMI-A 等主接口)和 `ff8f0000.vop`(副 VOP,可接第二屏幕)。日志中 `ff8f0000.vop` 均为 `DISABLED`,说明当前仅用 **单 VOP 接单屏幕**(并非双屏同时连接,而是“分别接两个不同屏幕测试”),核心关注 `ff900000.vop` 的「Display mode」(硬件输出分辨率)和「winX-X」(显示窗口的渲染/缩放参数)。 ### 二、两份日志的核心差异对比 | 对比维度 | 日志1(接屏幕A) | 日志2(接屏幕B) | |-------------------------|----------------------------------------------------------------------------------|----------------------------------------------------------------------------------| | **1. 硬件输出分辨率(Display mode)** | `3840x2160p30` → 4K 分辨率,30Hz 刷新率<br>(clk=297000:像素时钟频率 297MHz,匹配 4K@30Hz 需求) | `1920x1080p60` → 1080P 分辨率,60Hz 刷新率<br>(clk=148500:像素时钟频率 148.5MHz,匹配 1080P@60Hz 需求) | | **2. 显示窗口状态(winX-X)** | `win2-0: ACTIVE`(仅 win2-0 激活)<br>`src: 3840x2160`(UI 渲染分辨率)<br>`dst: 3840x2160`(硬件输出分辨率) | `win0-0: ACTIVE`(仅 win0-0 激活)<br>`src: 3840x2160`(UI 渲染分辨率)<br>`dst: 1920x1080`(硬件输出分辨率) | | **3. 缩放关系** | `src = dst` → 无缩放(UI 渲染的 4K 图像,直接以 4K 输出到屏幕) | `src(4K) > dst(1080P)` → 缩小 2 倍(UI 渲染的 4K 图像,被压缩到 1080P 输出到屏幕) | ### 三、核心结论:固件的“自适应逻辑”与视觉差异的根源 同一份固件接不同屏幕时,表现出 **“UI 渲染分辨率固定(4K),硬件输出分辨率随屏幕能力自适应”** 的特点,这也解释了为什么可能出现“视觉差异不明显”或“差异符合屏幕能力”的现象: #### 1. 固件的核心逻辑:UI 渲染分辨率固定为 4K,硬件输出“跟着屏幕走” 从两份日志的 `src` 字段(`src: 3840x2160`)可明确: **这份固件的“UI 渲染分辨率被固定为 4K”**(无论接什么屏幕,系统在软件层都会生成 4K 分辨率的 UI 图像),而硬件输出分辨率(`Display mode`)则会根据屏幕的“物理支持能力”自动调整: - 当接 **支持 4K 的屏幕**(日志1):硬件输出 4K@30Hz,UI 图像无缩放(4K 渲染 → 4K 输出),此时屏幕能完整呈现 4K 细节(文字/图像边缘细腻); - 当接 **仅支持 1080P 的屏幕**(日志2):硬件输出 1080P@60Hz,UI 图像被缩小 2 倍(4K 渲染 → 1080P 输出),此时 4K 细节被压缩,但因缩放比例是整数(2 倍),画面不会出现明显模糊(非整数缩放才易出现锯齿/模糊)。 #### 2. 视觉差异的关键:屏幕是否支持 4K,决定“是否能呈现 4K 细节” - 接 4K 屏幕(日志1):无缩放,能看到 4K 级的精细度(比如文字边缘无锯齿、图像纹理清晰),适合看 4K 片源、精细设计; - 接 1080P 屏幕(日志2):缩放后细节丢失(4K 渲染的细节被压缩),视觉效果等同于“1080P 原生渲染”,但因是 4K 缩小而来,画面会比“原生 1080P 渲染”更细腻一点(类似“超采样抗锯齿”效果,边缘更平滑)。 #### 3. 为什么副 VOP(ff8f0000.vop)始终是 DISABLED? 当前仅为“单屏测试”(分别接两个屏幕,未同时连接双屏),若要实现双屏同时显示,需要: - 屏幕分别接 RK3399 的两个显示接口(如 HDMI-A + HDMI-B,或 HDMI + LVDS); - 固件需开启“双 VOP 支持”(默认可能关闭,需修改设备树或显示配置); - 此时日志中 `ff8f0000.vop` 会变为 `ACTIVE`,并出现第二个 `Connector`(如 HDMI-B)的分辨率信息。 ### 四、补充:如何验证屏幕的“真实支持能力”? 若想确认屏幕是否真的支持 4K,可通过以下命令查看屏幕上报的“EDID 信息”(包含屏幕支持的所有分辨率/刷新率): ```bash # 查看 HDMI-A 接口的 EDID 信息(RK3399 通常对应 /sys/class/drm/card0-HDMI-A-1/edid) cat /sys/class/drm/card0-HDMI-A-1/edid | hexdump -C ``` EDID 信息中会列出屏幕支持的所有 `mode`(分辨率+刷新率),若包含 `3840x2160`,则说明屏幕确实支持 4K;若仅包含 `1920x1080`,则说明屏幕是 1080P 屏。 综上,这份固件的显示逻辑非常清晰:**UI 固定 4K 渲染,硬件输出自适应屏幕能力**,视觉效果的差异完全由屏幕是否支持 4K 决定——4K 屏显细节,1080P 屏显平滑,无缩放异常。
上一篇:
下一篇:
情绪价值与游戏