[Docs] (Disaggregated): record the CI/inproc close-out in the roadmap and stage status

This commit is contained in:
2026-09-21 03:24:31 -04:00
parent 0689fc9637
commit eb2747c966
2 changed files with 38 additions and 4 deletions
+35 -2
View File
@@ -1,6 +1,6 @@
# 当前阶段进度
**P5f 已收官(2026-09-20)**。最终行为验收头:WSL `cfca93c7885fd8db1e881f91189ba59090ae9c52`,Windows `c42577a4` 等价;本次整合来自 `codex/p5f-close`,主分支合入记录见 [`notes/p5f/close-report.md`](notes/p5f/close-report.md)。P6 的 P5f 前提已解除,a6 / c6 / spawn 尚未实施。以下 §2 为当前验收;其后的 P5c/P5d/P5e 数字与性能章节保留为历史,不替代当前结果。
**P5f 已收官(2026-09-20)**。最终行为验收头:WSL `cfca93c7885fd8db1e881f91189ba59090ae9c52`,Windows `c42577a4` 等价;本次整合来自 `codex/p5f-close`,主分支合入记录见 [`notes/p5f/close-report.md`](notes/p5f/close-report.md)。P6 的 P5f 前提已解除,a6 / c6 / spawn 尚未实施。**CI / inproc 功能补齐已收官(2026-09-21)**并合入 `feat/disaggregated`(合并头 `e1bf3677`):拆分主产物 + inproc 主验收、完整 retrace 双 transport、18 项 CI 门、双 ABI APK / AVD 全绿,见 §2.8。以下 §2 为 P5f 验收、§2.8 为当前验收;其后的 P5c/P5d/P5e 数字与性能章节保留为历史,不替代当前结果。
## 1. 阶段状态
@@ -236,6 +236,39 @@ p50 181(约 1.10 倍)——那一次不可配对,只能作为方向性提
| 3 | gl | 生成式采纳谓词、strict 旋钮的第三态、车道两侧棘轮、`ResourceCopyRegion` 等待类、Magma 车道切分;以及两处潜伏崩溃(ID-111 的盖章、ID-112 的编译期绊线) | 车道成为可被脚本判定的硬绿 |
| 3 | ra2 | 翻开开关后暴露的竞态(守卫把"关于未来的断言"当豁免依据);`BoundDrawIndirectBufferId` 退役并撤回升级 (iii)(ID-136) | 翻开开关后 `isplit` 112→179 |
## 2.8 CI / inproc 功能补齐(2026-09-21,当前验收)
范围:`feat/disaggregated` 主产物按拆分实现编译(`MOBILEGL_BUILD_DISAGGREGATED` / `MOBILEGL_PIPE_PUSH`)并以 `MOBILEGL_TRANSPORT=inproc` 执行主验收;普通 GL 功能场景与完整 retrace 矩阵(77 case/backend × 2 transport)全跑,不以 skip / 降阈值 / 缩矩阵替代实现;验证 monolith 内部机制的对照保留 monolith。工作分支 `codex/fix-github-ci`,已合入 `feat/disaggregated`(`30b1bf25` FF 至 `d56c0e83` + Gradle plumbing `17bbb448` + 合并 `e1bf3677`)。
修复(均有红→绿证据;起点与过程见 [`notes/p5f/HANDOFF-CI-INPROC-20260920.md`](notes/p5f/HANDOFF-CI-INPROC-20260920.md)):
| 主题 | 提交 |
|---|---|
| SEG_STAGE 内容分块(清偿 R-10 的"提前分块"一半) | buffer 范围走查 `1e7c372e`;纹理整宽 slab + `StagedTextureStore::AdoptRun` `9469d48e`;预算 `MGPipeStageChunkBytes()`(segment/4) |
| 零字节 `glBufferData` 的 respecify 误报 `Fatal{InitialBytesNotCarried}` | `07f91f35`(谓词改按字节数,契约 R-13.3 形状不变) |
| DirectVulkan 默认帧缓冲图像身份跨 swap(inproc 读回黑屏) | `f1d3fa8f`(GL 可见后缓冲索引与 acquire 轮转解耦 + 读未定义图像告警) |
| texture view 的 mip 生成窗口裁剪(GLES / Magma 后端 + 前端 monolith 臂守卫) | `73b37bbe`、`fd30b5c3`、`ed919f0d` |
| DirectGLES FBO 附件同步 memo 改为对象级(improved-transparency 冻结帧) | `e004269d` |
| monolith 客户端数组(baseInstance / GPU 写 EBO / indirect 形状,含一处 Vulkan SEGV) | `62bfe461..e258a822` |
| monolith 深度/模板读回编码(signed/half、单 aspect 经 buffer 中转) | `5264f9a9..d56c0e83` |
| pipe-gates 字段表覆盖 `MGPSubData` 新成员、P7 packed-float mip 探针由 known-red 翻绿 | `3542f64f`、`e4ae1964` |
| barrier 看门狗 30 s → 120 s:它是死锁检测而非性能门;lavapipe 的 texture-handle 注册(`vkCreateImageView → llvmpipe_register_texture`)单次停顿实测 29.3–39.7 s、整轮累计 ~44.6 s,monolith 同路径同样停顿但无上限(用户裁定:两臂同现即属可接受环境开销) | `68b55ea3` |
| CI artifact cleanup 先读完整分页 inventory 再删除、等 retrace-split 车道、保留失败 case 产物 | `5cbf29b0` |
验收数字(WSL `p5f-int`:`d56c0e83` 全量实测 + `0689fc96` 定向复测):
| 门 | 结果 |
|---|---|
| unit | 2328,**零失败**(10 个既有 skip) |
| `integration-gpu` × inproc | 1455,**零失败**(221 skip 经逐条审计全部为既有类别:机制对照车道、驱动/能力门、单后端专属等) |
| `integration-gpu` × monolith | 1455,**零失败**(两臂逐名比对仅 76 条合法的 split-runtime 自声明 skip 差异) |
| retrace 77 例 × monolith | **77/77** |
| retrace 77 例 × inproc | 76/77;唯一失败 `bsl-esc-menu-854` DirectVulkan 是上述 lavapipe 停顿间歇越过旧 30 s 预算,预算修正后隔离 **10/10 绿**(ssim 恒 0.998402) |
| CI 门 18 项(split strict / dual-block / clientarray / E1 / E3 / run-ahead 负控与同步验证 / flatc / include 闭包 / gen_pipe / pipe-gates 等) | **18/18 绿**,strict 与双块棘轮均为空 |
| Android | 两 ABI(arm64-v8a + x86_64)trace/plugin Release APK 在最终头重建并验明正身;AVD(api35 x86_64)上 OpenRA monolith / inproc 冒烟均 ssim=1.0,Activity 重建 reattach 与重复 JNI 回放拒绝(`7fd83133`)探针通过 |
最终合并头的完整矩阵以远端 GitHub CI(test.yml / apk.yml)为准。已知边界:lavapipe 的 texture-handle 注册停顿本身(性能现象,两臂同有)未消除;`iterationrp` 的 DirectGLES 不在 CI 矩阵内(本机 llvmpipe 无法 lower 其 256-bit half 转换,`LLVM ERROR: Cannot select: intrinsic %llvm.x86.vcvtps2ph.256`);`rd12-odinlite-in-world` 不在 77 矩阵内、本轮未单独复跑;wire view 缓存键含全局 image epoch 导致的冗余重建(实测 173 次 vs 按需 ~39 次)是已证伪与本次卡死无关的纯性能机会,未动。
## 3. 历史:P5c 落地内容
| 包 | 内容 | 效果 |
@@ -277,7 +310,7 @@ p50 181(约 1.10 倍)——那一次不可配对,只能作为方向性提
|---|---|
| ~~`SEG_STAGE` 默认 32 MiB 装不下目标负载的单次 128 MiB 上传~~ | **内容侧分块已落地(2026-09-20)**:buffer 范围走查 `1e7c372e`、纹理整宽 slab `9469d48e`,预算 `MGPipeStageChunkBytes()`(默认 segment/4 = 8 MiB),默认 32 MiB 即可容纳;未接入分片的 record 类型与专用 carrier 仍归 P8(`ROADMAP.md` 开放问题 11)。历史证据 `p5b-results/blit-codex-v1.md`;`MEASUREMENTS.md` §7.2 |
| Magma P7 剩余功能与性能 | 应用 VBO/EBO/UBO、已对齐 SSBO/atomic/texel、persistent 和 indirect 消费已随 `38919d45` 实际游戏修复落地;XFB buffer capture、部分不对齐 range/UBO byte-tail、placeholder/native-format 及批处理性能仍待做。P5b “82个错答”只属历史计数;见 [修复报告](notes/p5f/magma-inproc-fix.md) |
| rd12 GLES `InitialBytesNotCarried/resource_respecify`、rd12 VK `BarrierTimeout/Present`、`iris-bsl-esc-menu-854` GLES、三条 `texture-remint-pull` 仿真槽、`create-indirect` VK 内存膨胀 | 79 trace 普查 `counts.json` / `trace-transitions.json` |
| ~~`iris-bsl-esc-menu-854` 的 `InitialBytesNotCarried/resource_respecify`~~(两后端,`07f91f35` 已修,CI 矩阵内实测通过;rd12 GLES 的同型 Fatal 同根因已修,但该 case 不在 CI 77 矩阵内、未单独复跑)、rd12 VK `BarrierTimeout/Present`、三条 `texture-remint-pull` 仿真槽、`create-indirect` VK 内存膨胀 | 79 trace 普查 `counts.json` / `trace-transitions.json` |
| RGB 三通道 CPU mip 回退仍是具名 Fatal | `p5b-results/mip-codex-v1.md` |
| ~~P5c 历史跨角色清单与对象类残余~~ | **P5f 已全部收口**:双块空棘轮、零 BARRIER_PULLED、两后端逐帧 rsp=0;旧指针 accessor 以 FATAL 保持边界,未伪标为 record-supplied。见 [`close-report`](notes/p5f/close-report.md) |
| 27 个 P5 inproc 错答:22 纹理读回走 client-shadow 回退、3 query、1 inspection、1 FBO/RBO 删除后生命期 | P4b / P7 / P6 债 |
+3 -2
View File
@@ -1,6 +1,6 @@
# MGPipe 路线图
> 状态:**P0、P0.5、P1、P2、P3a、P4a、P5、P5b、P5c、P5d、P5e、P5f 已收官**。P5f 于 2026-09-20 完成主机门、Redmi 六个 clean-boot 臂、跨模型族审查及修复验证;最终验收代码为 WSL `cfca93c7885fd8db1e881f91189ba59090ae9c52`(Windows `c42577a4` 等价)。证据见 [`notes/p5f/close-report.md`](notes/p5f/close-report.md)、[`close-review.md`](notes/p5f/close-review.md)、[`device-report.md`](notes/p5f/device-report.md)。**P6 的 P5f 前提已解除,a6 / c6 / spawn 实施尚未开始**。逐门数字、主分支合入记录和下一步见 [`CURRENT_STAGE_PROGRESS.md`](CURRENT_STAGE_PROGRESS.md) 与收官报告;设计见 `ARCHITECTURE.md`。P5e 的历史性能与 E1 对照债保留在阶段行、[`P5E-RUNAHEAD.md`](P5E-RUNAHEAD.md) 和 `MEASUREMENTS.md`,不由 P5f 的新对照代为关闭。
> 状态:**P0、P0.5、P1、P2、P3a、P4a、P5、P5b、P5c、P5d、P5e、P5f 已收官**。P5f 于 2026-09-20 完成主机门、Redmi 六个 clean-boot 臂、跨模型族审查及修复验证;最终验收代码为 WSL `cfca93c7885fd8db1e881f91189ba59090ae9c52`(Windows `c42577a4` 等价)。证据见 [`notes/p5f/close-report.md`](notes/p5f/close-report.md)、[`close-review.md`](notes/p5f/close-review.md)、[`device-report.md`](notes/p5f/device-report.md)。**P6 的 P5f 前提已解除,a6 / c6 / spawn 实施尚未开始**。逐门数字、主分支合入记录和下一步见 [`CURRENT_STAGE_PROGRESS.md`](CURRENT_STAGE_PROGRESS.md) 与收官报告;设计见 `ARCHITECTURE.md`。P5e 的历史性能与 E1 对照债保留在阶段行、[`P5E-RUNAHEAD.md`](P5E-RUNAHEAD.md) 和 `MEASUREMENTS.md`,不由 P5f 的新对照代为关闭。**CI / inproc 功能补齐已收官(2026-09-21)**:拆分主产物 + inproc 主验收、完整 retrace 双 transport、18 项 CI 门、双 ABI APK / AVD 全绿并合入 `feat/disaggregated`(`e1bf3677`),见 `CURRENT_STAGE_PROGRESS.md` §2.8。
> **P5f 后续 Magma run-ahead 已完成**(`194382c9`,2026-09-20):主机真实排队、credit、负控及 Vulkan 同步验证通过,Redmi 同包 Magma 开/关与 GLES 三臂 FCL 世界实测通过。见 [报告](notes/p5f/magma-runahead.md)。P6 / P7 全阶段状态不因此改变。
@@ -111,6 +111,7 @@ P5c 当时移交的对象类 BARRIER-PULLED、transport registry 前端键、EGL
- **P5 出口(2026-09-16)**:缩减路径首个 IPC 帧;最终全门在 E3(a) 停止;红米四臂的 split 均停在索引 draw,barrier tax 未测(归 P5b)。
- **P5b 出口(2026-09-16,已达成)**:主机全门 `348d22a4` complete;79 trace 72/6/1;设备源头 `82683d4a`(APK `p5bcodex2`)Redmi 正确性 8/8——四条 A/B trace 双后端首次在设备上 inproc 渲染;barrier tax 首测 split−push 逐线程 CPU p50 +5.9% – +18.2%。
- **P5f 出口(2026-09-20)**:双块和 strict 空棘轮、逐帧 rsp=0、零 BARRIER_PULLED、主机全门、异模型族审查修复和 Redmi 六 clean-boot 臂全部完成;P6 前提解除,实施未开始。
- **CI / inproc 收尾出口(2026-09-21)**:`feat/disaggregated` 主产物拆分编译 + inproc 主验收全绿——unit 2328 零失败、`integration-gpu` 双 transport 各 1455 零失败、retrace 77 例 monolith 77/77 且 inproc 的唯一间歇项(`bsl-esc-menu-854` DirectVulkan,lavapipe 固有 texture-handle 注册停顿越过旧 30 s barrier 预算)在预算修正为 120 s 后隔离 10/10 绿、18 项 CI 门全绿、双 ABI APK 与 AVD 生命周期验证通过;合入头 `e1bf3677`,最终矩阵以远端 CI 为准。
- 仍是方向、不据此伪造新日历:全功能 split(P8 之后)、纯度门在非 verify 构建上转绿(P13)。
再基线检查点仅剩一条:**P7 中点完成子系统 < 40% 立即重定基线**(P3a 的检查点发现不了 Magma 特有的超期)。
@@ -127,7 +128,7 @@ P5c 当时移交的对象类 BARRIER-PULLED、transport registry 前端键、EGL
| ABI fingerprint | 不混 segment sizes;改变 8/32/16 MiB + 256 KiB ledger 时仍欠这项 |
| 默认 32 MiB staging | 目标负载单次 128 MiB 上传装不进默认 stage;**内容侧分块已落地**(buffer 范围走查 `1e7c372e`、纹理整宽 slab `9469d48e`,预算 `MGPipeStageChunkBytes()` = 默认 segment/4 = 8 MiB),故普查 / Redmi 的显式 256 MiB profile 不再是这两条路径的必需;未接入分片的 record 类型与专用 carrier 仍归 P8(开放问题 11) |
| P5b 的 inproc 依赖 | 历史的 scoped client binding、mip registry 查询与 FBO death mailbox 已经 P5c/P5f 改为记录、句柄和控制/事件路径;P6 核验并装配已有载体,不再重做这些迁移 |
| 未迁移与仿真路径 | 15 个 class-C 槽(query / sync 尾 / `GetTexImage` / `SetSwapInterval`)→ P9 / P10;client vertex arrays、multi-draw client indices、RGB 三通道 CPU mip、renderbuffer copy endpoint、未绑定 named clear、`texture-remint-pull` 仿真保留具名拒绝 → P8 / P9;Magma split compute / image 的“82 个错答”是 P5b 历史普查计数,不是当前失败清单;P5f 后续已补应用 buffer consumers 与 Android 旋转 blit,Magma inproc 已能运行所测 MC 世界;后续 run-ahead 已完成([报告](notes/p5f/magma-runahead.md));XFB、部分不对齐范围、placeholder/native-format 及进一步性能工作仍归 P7([报告](notes/p5f/magma-inproc-fix.md)) | **P5e 补**:client vertex arrays 在 run-ahead 下是**具名拒绝**(ID-82,`Fatal{UnmigratedVerb, "DrawArrays+CLIENT_ARRAYS"}`),并有自己的预期红车道 `integration-clientarrays-split`(ID-134);staging 仍归 P8
| 未迁移与仿真路径 | 15 个 class-C 槽(query / sync 尾 / `GetTexImage` / `SetSwapInterval`)→ P9 / P10;~~client vertex arrays~~(已实现:`beba0256` 起 wire 复制到 owned buffer 并保留 baseVertex/baseInstance/drawID,本轮补齐 monolith 臂 `62bfe461..e258a822`)、multi-draw client indices、RGB 三通道 CPU mip、renderbuffer copy endpoint、未绑定 named clear、`texture-remint-pull` 仿真保留具名拒绝 → P8 / P9;Magma split compute / image 的“82 个错答”是 P5b 历史普查计数,不是当前失败清单;P5f 后续已补应用 buffer consumers 与 Android 旋转 blit,Magma inproc 已能运行所测 MC 世界;后续 run-ahead 已完成([报告](notes/p5f/magma-runahead.md));XFB、部分不对齐范围、placeholder/native-format 及进一步性能工作仍归 P7([报告](notes/p5f/magma-inproc-fix.md)) | **P5e 补 → CI 收尾更正**:client vertex arrays 曾是 run-ahead 下的具名拒绝(ID-82)与预期红车道 `integration-clientarrays-split`(ID-134);`beba0256` 起已实现,`347bb90c` 已把该车道翻转为**硬绿门**并纳入主 GPU/split 标签,本轮补齐 monolith 臂(`62bfe461..e258a822`);staging 仍归 P8
| E2 wire 内容控制 | draw-drop 是 OpenRA 的有效控制(758 draws,SSIM 0.000036);clear-drop 被全屏 overdraw 掩盖,不能作控制 |
| max record bytes | 实测 reduced / OpenRA `maxrec=784 B`,默认 cap 4 MiB;只代表所测负载,后续索引 / indirect 尾仍须记录 |
| 树外脚本 | 普查跑器、`wsl_p5_gate.sh`、Redmi 定频行都在 `~/w7/notes/`,git merge 不会传播 |