正常
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=1 | VOP 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/RESNAP | tiled 读 staging(否定:周期噪声)/恒覆盖快照(否定:黑化覆盖) |
3. tick 期翻译三连坑(本夜主战场)
va_pa_user(当前 AS)tick 期任意 → 全 AS 一致性翻译改用- 一致性翻译被跨 VM 别名判歧义 → bg_pa 缓存 + bg_as 捕获
- 捕获错 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 布局悬案)