Files
MobileGL/docs/Disaggregated/notes/p5f/close-report.md
T

116 lines
8.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# P5f 收口报告
**状态:DONE,2026-09-20。** f0 / f1 / fc / fe / fm / fs / fr / fv 已全部集成,
字段归属、主机出口门、Redmi 设备门与跨模型族阶段审查均完成。P6 前置条件解除,
其 a6 / c6 / spawn 仍未实施。本报告取代各分包报告中的阶段中间状态。
最终行为验收头 **`cfca93c7885fd8db1e881f91189ba59090ae9c52`**(WSL `codex/p5f-final`),
包含 Windows 收口头 `c42577a4` 的全部修复;之后仅补文档与设备复现工具。
交付分支为 `feat/disaggregated`。包提交与环境入口见 [HANDOFF-P5F.md](HANDOFF-P5F.md)。
用户随后要求的 [首次 FCL 游戏端到端补测](fcl-e2e-report.md) 暴露 Magma inproc 的 P7
`buffer-legacy-arm`。后续 [Magma 游戏修复](magma-inproc-fix.md) 补齐 buffer consumers 与
Android 旋转 blit,`38919d45` 已在同一 MC `26.3-rc-3` 世界正常运行。本文余下数字保留原
P5f 收口快照。随后 `194382c9` 已完成 [Magma run-ahead](magma-runahead.md),
有独立主机门和 FCL 实测证据;P7 全量迁移仍未收官。
## 1. 完成的行为
波次 2 的 fc / fe / fm 已把 EGL 控制面、Espryt 对象读点、XFB Begin 快照与 Magma 可达
资源/渲染路径改成值帧、server archive / handles / staged bytes。波次 3 完成剩余边界:
- **fs**:unpack/render shadow 按 native generation、served context serial 和角色核键;
XFB server namespace 以 lifetime id 索引,包括 name 0 的 native 对象隔离。served context
切换保留仍活着的 paused span,native context 销毁清旧世代。raw-depth sampler 走纯 native
对象;server liveness 只由控制生命周期提供,verb stamp 不会复活它;双块诊断位按角色持有。
- **fr**:apply-side frontend registry / allocator 不再允许任何旧 scope 豁免;wrapper 在
选择 legacy 臂前拒绝。无调用的前端 program-name helper 从 D-P 编译中移除,pull 不变。
- **fv**:错误经保留 message 的 OnGlError 发到事件环;callback 安装/关闭/重接受和单 owner
CAS 有明确生命周期。旧 GPU-written object fallback 在解引用前拒绝,Magma transport
初始化不再构造两组隐藏 frontend 资源。四个 callback 统一投递实际 active session。
字段机器表最终为 **41 RECORD_SUPPLIED / 6 APPLIER_DERIVED / 0 BARRIER_PULLED / 16 FATAL**。
带 client 指针的旧 getter 为 FATAL;消费者直接读取 server records,没有把句柄记录谎称为
“供给整个旧指针字段”。`EmittedCallSuppliesTheWholeField` 的 8 个拒绝保留。
生成器拒绝任何 production BARRIER_PULLED 行,历史 debt 仅在 synthetic admission fixture
中测试。即使伪造 fresh stamp,FATAL getter 也必须拒绝;sticky forwards 同样执行归属。
新 `EachWireFrameHasZeroResidualPulls` 在两后端各注册独立 RSP 车道:连续三个改变 uniform
的帧逐个断言像素、真实 applied verbs 和 `rsp=0`。Magma 的 draws stat 尚未实现,绘制证据
取实际变化的像素,未以缺少 draws 计数假称执行过 draw。
## 2. 七项出口门
| 出口 | 最终结果 |
|---|---|
| 1 双块车道 | **212:206 PASS / 6 既有 skip / 0 failed**;两后端,同一归属与拒绝机制 |
| 2 strict / 棘轮 | ordinary / strict split **180:176 PASS / 4 skip / 0 failed**;Fatal、普通 Admitted、ESCALATED 均零;strict 与 dualblock 两份 expected 文件为空 |
| 3 字段 / 逐帧 RSP | production **0 BARRIER_PULLED**;`integration-p5f-rsp` **2 PASS / 0 skip**;设备 36 windows 全零 |
| 4 两后端能力声明 | GLES run-ahead ARMED;Magma 明确不发布 capability、运行 lockstep;理由如下,无 frontend 豁免 |
| 5 G1 / G2 / G14 | pull `.text` **10806051 → 10806051**,defined symbols **27815 → 27815**,added/removed/resized/renamed **0/0/0/0**,data/bss/rodata 不变;pull/push CTest **3016 == 3016**;f1 名集合 **3646 → 3744,+98 / -0**,无重复名 |
| 6 red-once | 逐包控制均真红后还原绿;f1 双块 knob=1 绿 / knob=0 真断言红;fresh FATAL、结果集完整性、非 singleton callback 修复均各有真实红转绿 |
| 7 Redmi | 指定 `2f7cbe2e`,六个不同 boot-id,同一最终库,两后端 role0/role1 clean-boot 配对及 monolith sanity;**60 PASS / 6 skip / 0 failed** |
Magma 不发布 run-ahead 的原因仍是 P7 buffer/native-format 功能边界,以及 wire render-pass
提交后等待 GPU 再退休对象的现有生命周期/性能契约。role-split 下 server 块没有 client
指针,lockstep 不能掩盖这种读;registry/allocator guard 对 barriered 记录同样拒绝。
fs/fv/字段收口已经完成,不再用这些已解决事项作为不发布 capability 的理由。
## 3. 主机完整验证与门的可信性
| 检查 | 结果 |
|---|---|
| split / pull / push 构建 | 全部通过 |
| unit | **2310:2300 PASS / 10 既有 skip / 0 failed** |
| GPU(审查修复后的最终代码) | **1377:1118 PASS / 259 既有功能、驱动、专属车道 skip / 0 failed** |
| field generator | check 通过;**19 个 negative controls + 13 个 synthetic admission controls** |
| pipe / dirty-surface / include closure | check 与现有 self-test 通过;include closure 4 probes、0 skipped / 0 problems |
| 文档引用 | 两处旧 basename 歧义改为完整路径,strict 检查通过 |
双块 gate 不只检查“空观测集合等于空预期集合”:必须有非空 discovery,JUnit 与发现集合
完整且一一对应,missing / extra / duplicate / notrun / disabled 均失败;绿和 skip 条目也
扫描 marker,GLES/Magma 私有日志均核所有权。CI 空 expected 表要求 ctest rc=0。
六个允许 skip 按**确切名称和原因**锁定:四个专属计数车道的 sibling,两个 Magma clip
功能限制。任何额外 skip 都失败;RSP 另有不可 skip 的双后端独立门。
P7 已知红 `integration-magma-p7-known-red` 真实执行唯一用例,**1 failed / 0 skip**,
退出码 8,具名 `Fatal{UnmigratedVerb, "Magma:mipmap-native-format@P7"}`。
这是保留的功能边界,不计入 PASS。旧 readback fixture 也已补完整 FBO/pack/context/sampler
records,在无 residual fill 时通过,`DstSize=80` / tight reply `48` 断言未放松。
## 4. 阶段审查与设备
跨模型族审查通过只读 Claude Code 完成,结果记录 `claude-opus-5[1m]` /
`claude-haiku-4-5`,实现方为 GPT 系列。发现 P1 结果集可不完整、P2 三个 callback 投错
singleton,均已修复并真跑红转绿;没有遗留本次审查 P0/P1/P2。详情、原文及局限见
[close-review.md](close-review.md)。
最终库 SHA256 `764a790d024fbe1b83ebdec5d896cc77ecda4f4a2698d63d2b2d16239f40e74c`,
六臂都核主机/设备 hash 一致。GLES 每臂 11 PASS;Magma 每臂 9 PASS + 两个既有
per-distance clip-enable skip。全部 36 个 stats windows `rsp=0`;两 inproc GLES 臂各
`vbs=72`,Magma 各 `vbs=68`,monolith 为 0。实际 backend、strict/role 和 capability
日志均核对,不以环境回显代替运行证据。
设备 runner 使用公开 GL/EGL、AImageReader native window:clip distance 3 项、layered copy
6 项、mipmap 2 项。没有把 host 私有 F1/Ct/DualBlock 测试冒称 Android 覆盖。
suite 时间只记录一次 clean-boot 样本,不作为 MC/FPS 性能结论;数值与全部 boot-id 见
[device-report.md](device-report.md)。复现工具位于 `tools/device_bench/p5f/`。
## 5. 证据索引与边界
主机证据根 `/home/swung/w7/p5f-logs/`:
- `exit-reviewed-{unit,gpu}.log/xml`:审查修复后的完整主机结果。
- `exit-reviewed-{strict,dualblock,negctl}-gate.log`:最终 marker、双块与机关控制。
- `exit-reviewed-g1.log`、`exit-reviewed-name-gates.log`:二进制与测试名门。
- `exit-rsp.log/xml`、`exit-rsp-lane.json`:双后端逐帧 RSP;`exit-known-red.log/xml`:P7 拒绝。
- `close-fresh-{red,green}.log`、`exit-review-gate-{red-once,green}.log`、`fv-review-*.log`:收口修复控制。
- 各分包报告列出该包独立门与 red-once;中间计数不替代本文最终计数。
设备证据 `C:/Users/geekerwan/.codex/tmp/p5f-redmi-exit-cfca93c7/`;审查原始结果
`C:/Users/geekerwan/.codex/tmp/p5f-final-review-de78f47d/result.json`。
P7 的 Magma buffer/native-format 等功能、P8 client arrays、P12 window/present 到达,
以及 P5e 历史 E1 对照设计条目继续按其原阶段跟踪。它们保留具名边界,不是未完成的 P5f。
本次不启动 P6,也不宣称两进程 spawn 已实现。