2026-10-07 定位结论:内屏"竖块乱序 / 左半幅镜像"
现象:内屏(eDP,GPD1001H)显示为左半幅水平镜像 —— 用 4x4 十六格编号测试图判定,每行呈 2 1 3 4 / 6 5 7 8 / 10 9 11 12 / 14 13 15 16,右半幅正常。肉眼表现为"左红右蓝对半分、像同一张壁纸在循环"。
判别方法(可复用于任何"屏幕显示不对"的排查)
- 生成 4x4=16 格、每格一色 + 大号编号的测试图(不依赖字体库,手写点阵字体绘制)。
- 用
spectacle -b -n -f -o shot.png抓全桌面(帧缓冲),按合成器几何裁出目标屏区域,程序采样每格 → 得到"合成器以为画成什么样"。 - 手机拍摄实际面板 → 得到"肉眼看到什么"。
- 两者比对即可把故障切分到"软件侧"或"链路/面板侧"。
证据(逐条)
| 编号 | 观测 | 结论 |
|---|---|---|
| R01 | 合成器帧缓冲里内屏区域 4x4 采样为标准 1..16 | Plasma / KWin / 壁纸配置侧无问题 |
| R02 | qdbus org.kde.KWin /KWin supportInformation 的 Screen 几何与 xrandr 完全一致 | 无几何错位、无缩放错配 |
| R03 | DRM 原子状态中 eDP 所在 plane(crtc-0)rotation=1、src-pos=2560.0x1600.0+4000.0+0.0 | 显示管线未启用任何镜像/旋转变换 |
| R04 | 面板 EDID 仅含 2560x1600@60.01 与 2560x1600@40.00 两条详细时序;8 条标准时序全部未使用;无扩展块 | 无 scaler 的定频面板 |
| R05 | 内核给 eDP 的模式表为 2560x1600 x2、1920x1200、1920x1080、1600x1200… 即除前两条外均为驱动补的 VESA 兜底模式 | 1920x1080 并非面板声明支持的时序 |
| R06 | dp_dsc_fec_support:DSC_Sink_Support: no;dsc_* 全 0 | 非 DSC 切片问题 |
| R07 | link_settings: 4 0xa 0(4 lane @2.7Gbps = 10.8Gbps),原生 2560x1600@60 只需 6.88Gbps | 链路带宽不是瓶颈 |
| R08 | 把内屏切回原生 2560x1600 后,镜像依然存在 | 不是"当前模式"在持续作用 |
| R09 | 对 eDP 做一次断电重初始化(output.eDP.disable → enable)后,镜像消失 | 面板 TCON 锁存进入错误相位,只有断电重锁才能清除 |
根因
内屏是无 scaler 的定频面板,只按 2560x1600 采样。当它被喂过非 EDID 声明的兜底模式(本次为 1920x1080)时,面板按自己的行缓冲切流、锁错了相位,产生"左半幅镜像";该错误锁存会跨多次 modeset 存活(切回原生也不自愈),只有面板断电重新上电才会重新锁定。故障发生在链路/面板侧,与 X / KWin / Plasma / 壁纸配置无关。
修复(一条命令)
kscreen-doctor output.eDP.disable && sleep 3 && kscreen-doctor output.eDP.enable output.eDP.mode.93 output.eDP.position.4000,0
(mode.93 = 内屏原生 2560x1600;mode id 可用 kscreen-doctor -j 查 eDP 的 2560x1600 条目确认。)
规避建议
- 内屏保持原生 2560x1600;若想让界面更大,用 KDE 的缩放(如 125%/133%)得到更小的逻辑分辨率,而不是切非原生模式。
- 若为多屏带宽/布局原因确需非原生模式,出现镜像后按上面的命令断电重锁。
本机环境(发生时的状态)
| 项 | 值 |
|---|---|
| 机型 | GPD G1619-04(内屏 GPD1001H,2560x1600) |
| 系统 | NixOS 26.05.11045 / 内核 6.18.54 LTS |
| 会话 | X11 + KDE Plasma 6.6.6(startplasma-x11) |
| 显示配置 | services.xserver.videoDrivers = [ "amdgpu" "nvidia" ],hardware.nvidia.prime.reverseSync.enable = true(4060 输出以 reverse PRIME 接入核显主屏) |
| 当时连接 | 内屏 + 屏1(4060 DP)+ 屏2(屏1 菊花链,竖屏) |