Skip to content

Note 111 · panthor M2n:确定性显示接管基建 + staging 碎片悬案 ​

日期:2026-09-11(夜)· 战役七第三十篇 · 上一节:note 110(真壁纸全屏)

0. 摘要 ​

用户复检 note 110 截图:"熊猫露出来的是 1/4,而且位块错位"。本轮 以此开局,建成了确定性显示接管基建(帧节拍重绘+屏级快照+AS 捕获+标记取证),把"坐标映射"与"内容来源"彻底分离:标记五点 精确落位证明写入→显示坐标链路分毫不差;剩余的碎片化定位到 staging 缓冲自身的渐进状态(GNOME 渐进上传/释放理论),悬案 移交下轮。

1. 取证链(标记方法论) ​

  • 五点纯色标记(ff0000/00ff00/0000ff/ffff00/00ffff 注入 fullres st2)→ 屏上 (8,8)/(512,300)/(8,591) 等精确落位 = 写入→VOP 解码→显示的坐标映射零误差(旧"错位"不在坐标层)
  • 屏内容 vs fullres 输出差 21(staging 采样层自洽差 7)→ 错位 在"谁最后写"与"内容本身"
  • VOP 翻页在 2-3 个扫描缓冲间轮换,fullres 只写当前一个 → 翻到没画过的缓冲=显示 mutter 合成残迹
  • 扫描缓冲头布局考古:0x9400(线性 try_blit 系)与 0x4000(不明) 与我的 tiled 0xA000 并存=多写者战场

2. 基建(全部 env 门控,默认关) ​

机制开关内容
帧节拍重绘FSQUAD_REPAINT=1VOP 60fps tick 里用 BG 重铺当前扫描缓冲+last_mst=0 失效 console 缓存(面板只在几何变化时重 decode——否则永远显示旧快照)
屏级快照自动rjob 期采样成功→st2 快照进 QEMU 侧缓存;tick 期只写缓存。staging BO 被 mutter 释放后 tick 直读=黑屏的解法
快照择优自动64 点非黑计数,只接受更好的(渐进上传会变好、BO 释放会变黑)
AS 捕获自动staging 注册时记 bg_as+bg_pa;tick 期 stitch 走查强制用(自证门:走查复现 bg_pa 才启用)
全缓冲镜像自动fullres 遍历 scan_msts 全部近期扫描缓冲逐一铺
标记注入FSQUAD_MARK=1五点纯色=坐标链路取证标准仪器
staging 直采自动线性 ≥1024×768 源 plane 8/8 命中→注册 BG
A/B 开关FSQUAD_STGTILED/RESNAPtiled 读 staging(否定:周期噪声)/恒覆盖快照(否定:黑化覆盖)

3. tick 期翻译三连坑(本夜主战场) ​

  1. va_pa_user(当前 AS)tick 期任意 → 全 AS 一致性翻译改用
  2. 一致性翻译被跨 VM 别名判歧义 → bg_pa 缓存 + bg_as 捕获
  3. 捕获错 AS 把好路径带黑 → 自证门(走查复现 bg_pa 才启用) 另:快照保存条件须测 &0xffffff(alpha 位恒 1,原条件恒真=黑快照 入库后永远黑)。

4. staging 碎片悬案(现状与假说) ​

  • 线性读:浣熊居中碎片+右下多余簇(两 boot 一致)
  • u-tiled 读:周期纹理噪声(否定)
  • 现行最优假说:GNOME 渐进上传(分片上传中=碎片;右簇=后到的 带;staging 释放后采样渐黑与 54 次 snap 演化吻合)
  • 反证待解:64/64 非黑快照仍碎片(探针测非黑测不出完整性)
  • 下轮刀口:①上传完成检测(色彩数/直方图熵做择优度量)②tick 期 周期性重采样(自证 AS 已可用)③直接跟 mutter 的上传 draw 找 "完成"信号

5. 验收 ​

  • 受控 7/7 PASS(本轮全部改动不破受控面)
  • REPAINT 形态:稳定 100% 非黑/714 色/0 黑行,机器长活
  • 标记五点精确落位(坐标链路定谳)
  • 证据:sim/logs/m2n-repaint-fragmented.ppm(git)+ Windows 桌面 gpu-repaint-state.png

(战役七链:…真壁纸全屏✅(note 110 宣称过度,实为碎片态)→ 显示接管基建✅+坐标链路定谳✅→余=staging 完整性/staging 布局悬案)

由 rk-forge pdf/2026-06-23-1120-192-gd5045ae 构建