[Docs, MG_Remote] (Disaggregated): close out P5c - the inproc split's direct cross-role access is zeroed

ROADMAP marks P5c closed at the triage head and P6 next; CURRENT_STAGE_PROGRESS carries
the current-head gate table (unit 2187/2187, integration-split 111/111, the census
classification with every newly-red entry evidenced by its Fatal name, the three named G1
resizes, the 0xDD audit, the per-frame rsp measurements, and the two items deliberately
not done locally: the Redmi retest and the 79-trace census); MEASUREMENTS gains section 8
with the per-gate evidence. CONTRACT-P5C takes the amendments ratified at gt's landing
and at the regression triage: per-level extent is retired at the sites rather than
guarded on the accessor, the strict CI lane is two-sided (unit green gate plus
expected-red scenario lane with the marker asserted), the drain points are two classes
(the EGL RPC returns beside EmitAndWait), and oversized writebacks are client-sliced at a
quarter of the event ring.
This commit is contained in:
2026-09-17 13:15:57 -04:00
parent b88e848761
commit 36176b9dbc
3 changed files with 58 additions and 22 deletions
+35 -20
View File
@@ -1,6 +1,6 @@
# 当前阶段进度 # 当前阶段进度
分支 `feat/disaggregated`;代码头 `82683d4a`2026-09-16),其后只有文档提交。本文随每次落地更新。ID-1..75 的逐条裁定长文在 git 历史(`ef35ea0c` 之前版本的本文件)。 分支 `feat/disaggregated`;代码头 `39d1a5d3`2026-09-17P5c 收官)。本文随每次落地更新。ID-1..75 的逐条裁定长文在 git 历史(`ef35ea0c` 之前版本的本文件)。
## 1. 阶段状态 ## 1. 阶段状态
@@ -9,27 +9,41 @@
| P0 / P0.5 / P1 / P2 / P3a / P4amonolith 跑道) | 已落地 | `ROADMAP.md` 阶段表;`MEASUREMENTS.md` §1–§5 | | P0 / P0.5 / P1 / P2 / P3a / P4amonolith 跑道) | 已落地 | `ROADMAP.md` 阶段表;`MEASUREMENTS.md` §1–§5 |
| **P5** 首个 IPC 帧(reduced pathlockstep inproc | 已收官 | `ff2994d9..37fc4fdb``MEASUREMENTS.md` §6 | | **P5** 首个 IPC 帧(reduced pathlockstep inproc | 已收官 | `ff2994d9..37fc4fdb``MEASUREMENTS.md` §6 |
| **P5b** inproc 下的 verb 迁移(Minecraft 优先) | **已收官(2026-09-16** | `37fc4fdb..82683d4a``MEASUREMENTS.md` §7 | | **P5b** inproc 下的 verb 迁移(Minecraft 优先) | **已收官(2026-09-16** | `37fc4fdb..82683d4a``MEASUREMENTS.md` §7 |
| **P5c** `inproc` 共享内存读点归零 | **已审计、已计划2026-09-17,未开始** | 审计 `~/w7/notes/p5c/p5c-audit-v1.md`59 行,头 `a79a0af6`);计划 `ROADMAP.md` "P5c 计划";设计 `ARCHITECTURE.md` §17.6 | | **P5c** `inproc` 共享内存读点归零 | **已收官2026-09-17** | `11ac3de6..39d1a5d3` + triage 修复;契约 `MobileGL/MG_Remote/CONTRACT-P5C.md`;审计 `~/w7/notes/p5c/p5c-audit-v1.md` |
| P6 spawn transport | P5c 之后 | 届时只是传输替换 | | P6 spawn transport | **下一个** | 届时只是传输替换 |
## 2. 当前头实测 ## 2. 当前头实测
| 门 | 结果 | | 门 | 结果 |
|---|---| |---|---|
| 构建 | pull / push / verify / split 四个 flavour 全部通过 | | 构建 | pull / push / verify / split 四个 flavour 全部通过 |
| G1pull 符号恒等) | `.text +0`27814 符号 0 增 / 0 删 / 0 resize / 0 重命名 | | G1pull 符号恒等) | `.text` 16 B0 增 / 0 删 / **3 认定 resize** / 0 重命名`SwapchainObject::Create` ev 的表面事件化、`CopyTexSubImage2D` hd 的传输臂、`ScopedRestartIndexSubstitution` 的 server-shadow 臂,均已在合并提交具名);pull 构建零 `MG_Remote` 符号 |
| 发射表分区(`EmitTables.cpp``static_assert` | A(本地回答)2 / B(发射)54 / C(具名拒绝)15,共 71 槽 | | 发射表分区(`EmitTables.cpp``static_assert` | A 2 / B 54 / C 15,共 71 槽(未变) |
| unit | pull / push / verify 各 1817split 2138(含 `7cb29d46``UserIndexSpan` 3/3 | | unit | split **2187/2187**`MOBILEGL_IPC_STRICT_ERRORS=1` 下同绿 |
| `integration-split`inproc | **107/107**P5 收官时 22 | | `integration-split`inproc | **111/111**107 + ct 的 4 条 CtWireScenario |
| `integration-gpu` | push 1148/1148split 单体传输 1267/1267 | | `integration-gpu` 普查(inproc,对 11ac3de6 同机基线逐名比对) | 修复后 newly-failing 全部归类:设计红(传输下旧臂具名拒绝的对照车道 + Magma P7 未迁移面,逐条 Fatal 名证据在案);三个真回归(默认 FBO 格式时序、大 writeback 切片、XFB scatter 读 server shadow)已修并回归绿 |
| G5p3a / p4a 保护区) | 双绿 | | G5p3a / p4a 保护区) | 双绿`11ac3de6` ↔ 收官头字节一致) |
| 主机收尾全门(`348d22a4` | complete=trueexit 031 步 rc=0retrace-push 79/79、retrace-verify 79/79(钉住库续跑合并);OpenRA 2/2 | | 生成器 / 卫生门 | `gen_pipe` / `gen_pipe_field_ownership` 的 --check/--self-test 绿;doc 引用 0 probleminclude 闭包 0 problemdirty-surface rc=0 |
| 集成普查(inproc 车道,`348d22a4` | 1267 selected = 811 passed / 203 skipped / 62 aborted / 191 failed;对 c0b 基线零回退 | | 纹理 `0xDD` audit`MOBILEGL_IPC_AUDIT=1` | bsl in-world100000 调用)与 iris-complementary in-world 全程零 Fatal |
| 79 trace 普查(inprocstage 256 MiB`348d22a4` | **72 passed / 6 aborted / 1 failed** | | `rsp` 按帧实测(`MOBILEGL_PIPE_STATS_PERIOD=1` | bsl 948.5/帧(38.7/draw)、complementary 1591.9/帧;值类 = 0,残留即 FieldOwnershipTest 钉住的 15 行对象类 |
| Redmi 正确性(`82683d4a`APK `p5bcodex2`stage 256 MiB | **8/8**:四条 A/B trace × 双后端首次在设备上 inproc 渲染 | | Redmi 四臂复测 | **未做**E-P5c #5 是记录项;本机无设备,需 Redmi `2f7cbe2e` 窗口) |
| Redmi 四臂 A/B | 24/32 组 200 帧尾验证全绿;barrier taxsplitpush 逐线程 CPU p50+5.9% +18.2%iris-bsl 8 组为 fixture 123 帧上限(pull 同失败),补充表另记 | | 79 trace 普查 | **未重跑**(全集语料不在本机;本机可用语料的实测见 `rsp` 与 audit 行)。P5b 收官数字(72/6/1)仍以其头为准 |
## 3. P5b 落地内容 ## 3. P5c 落地内容
| 包 | 内容 | 效果 |
|---|---|---|
| c0c | `MG_Remote/CONTRACT-P5C.md`:纹理 staged shadow 所有权 / SEG_EVENT blobref 约定 / 按句柄解析 / 两条控制记录 / 残余值字段表 / 角色守卫语义;落地偏差全部写回 | 六包按同一契约施工 |
| tx | `StagedTextureStore`(句柄为键、整段覆盖、defined-ness 追踪);`SyncMipmapsToBackend` 四臂改读 store + 描述符;Magma mip 改标 server shadow | 纹理纹素不再回读 client;`0xDD` audit 覆盖纹理 |
| ev | `SEG_EVENT` 三个 producer + `kEventGlError`producer 归 server session 安装;消费端三臂(拆 monolith guard);`InvalidateCompileEnv` forward 删除 | 反向通道零裸指针 |
| hd | sink / twin 按记录句柄解析(具名 blit 经 verb 句柄工作区、CopyTex、mip、间接族);`HasDefinedContent` 读描述符位 | 守卫面闭合前的解析层 |
| 合并协调 | 两个具名豁免 scope(通告家族 P4b/P7、G6 registry 家族 P3b/P4b);PrimitiveRestart 改读 server shadowMagma 具名 blit 的 G6 消费臂 | 审计漏报的三个无句柄家族有具名归宿 |
| ct | `applier_reset`77/ `object_death`78framebuffer 首个 wire delete);GL 线程直调 `MGPipeApplierReset` 成 RoleViolation | 控制面补全 |
| rv | `set_context_values`79);值类 BARRIER-PULLED 清零;三 shutter 自答;`MGPAttribValue` 三视图 | rsp 值类 = 0 |
| gt | 纹理九表面 layer-1 守卫(挂 MipmapStorage 汇聚点);`InBarrierWait` 接线成 gPipeInputs 单写者规则的 client 半边;strict CI 车道(unit 绿门 + 场景预期红);rsp 按帧实测 | 每层守卫 red-once 按名验证 |
| triage 修复 | 默认 FBO 格式事件的第二类排空点(EGL RPC 返回);大 writeback 的客户端切片(环 1/4);XFB scatter 改读 server staged shadow | 普查三个真回归修复 |
## 4. P5b 落地内容
| 包 | 迁移的槽 / 内容 | 效果 | | 包 | 迁移的槽 / 内容 | 效果 |
|---|---|---| |---|---|---|
@@ -58,7 +72,7 @@
| MagmaDirectVulkansplit compute/image 路径:89 个错答中 82 个 | `p5b-results/i1-v1.md` | | MagmaDirectVulkansplit compute/image 路径:89 个错答中 82 个 | `p5b-results/i1-v1.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` | | 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` |
| RGB 三通道 CPU mip 回退仍是具名 Fatal | `p5b-results/mip-codex-v1.md` | | RGB 三通道 CPU mip 回退仍是具名 Fatal | `p5b-results/mip-codex-v1.md` |
| **`inproc` 仍有 59 处不经 wire 的直接内存访问**2026-09-17 审计):纹理纹素已过 `SEG_STAGE` 却被 applier 丢掉、Espryt 回读 client `MipmapStorage`(整个纹理家族不在 `FieldOwnership.def``rsp` / strict / audit 看不见);反向通道是 apply 线程直接调进 client`OnBufferWriteback` 传裸指针,`SEG_EVENT` 零 producer,十个回调只装两个);server 用前端 `GetLifetimeId()` 查 / 铸 client 的 slot 分配器(记录已带句柄);Magma 四处直读 client caps 镜像、直接 `MarkGpuWritten`、直接写 client mip 存储;`MGPipeApplierReset` 与对象死亡经裸指针跨角色;`InBarrierWait` 从未接线。P5b 记下的三处 inproc 依赖只是其中三行 | `~/w7/notes/p5c/p5c-audit-v1.md``ROADMAP.md` "P5c 计划"T1A1 清单、包、出口门) | | ~~`inproc` 仍有 59 处不经 wire 的直接内存访问~~2026-09-17 审计) | **P5c 已收官归零**:四族修复(tx/ev/hd/ct/rv/gt+ 普查 triage 三真回归修复;剩余为具名债——两个豁免 scope(通告家族 P4b/P7、G6 registry 家族 P3b/P4b)内的只读探测与对象类 15 行 BARRIER-PULLED,全部可 grep、有退役阶段 | `MobileGL/MG_Remote/CONTRACT-P5C.md``MEASUREMENTS.md` §8 |
| 27 个 P5 inproc 错答:22 纹理读回走 client-shadow 回退、3 query、1 inspection、1 FBO/RBO 删除后生命期 | P4b / P7 / P6 债 | | 27 个 P5 inproc 错答:22 纹理读回走 client-shadow 回退、3 query、1 inspection、1 FBO/RBO 删除后生命期 | P4b / P7 / P6 债 |
| `rsp` 残余输入;`SEG_REPLY` 2 MiB 单槽上限;GetCaps 两个 blobref 的载体;PACK-PBO 读回真实形式 | P3b/P4b、P6+ | | `rsp` 残余输入;`SEG_REPLY` 2 MiB 单槽上限;GetCaps 两个 blobref 的载体;PACK-PBO 读回真实形式 | P3b/P4b、P6+ |
| 15 个 class-C 槽(query / sync 尾 / `GetTexImage` / `SetSwapInterval` 等)无负载命中,仍具名拒绝 | P9 / P10 | | 15 个 class-C 槽(query / sync 尾 / `GetTexImage` / `SetSwapInterval` 等)无负载命中,仍具名拒绝 | P9 / P10 |
@@ -67,10 +81,10 @@
## 6. 下一步 ## 6. 下一步
1. **P5c**c0c 契约 → tx(纹理 staged shadow/ ev`SEG_EVENT` producer/ hd(按句柄解析、caps 改读 server backend)并行 → ct`applier_reset` / `object_death` 记录)/ rv(值类残余值记录)→ gt(角色守卫门、`rsp`帧实测)。出口门 E-P5c 见 `ROADMAP.md` 1. **P6 spawn transport**`SocketTransport` + `ServerMain` + 握手 / 退出语义 + EGL forwarder 的控制面帧;P5c 之后这只是传输替换。注意 P5c 留下的:`s_synced` / `g_syncedRenderStateParameters` context 世代重置;两个豁免 scope 里的探测在 spawn 下根本不存在对应内存,P6 第一天的红就是它们的清单
2. **P6 spawn transport**`SocketTransport` + `ServerMain` + 握手 / 退出语义 + EGL forwarder 的控制面帧;届时只换传输 2. 剩余首阻塞一轮(Magma compute/image、rd12、RGB mip、`texture-remint-pull` 仿真槽)
3. 剩余首阻塞一轮(Magma compute/image、rd12、RGB mip、`texture-remint-pull` 仿真槽) 3. P6 出口门:P5b 的完整渲染路径在 `spawn` 下绿;OpenRA 在 Adreno 830 上 split SSIM ≥ 0.99
4. P6 出口门:P5b完整渲染路径在 `spawn` 下绿;OpenRA 在 Adreno 830 上 split SSIM ≥ 0.99 4. Redmi 四臂复测(P5c记录项,需设备窗口);79 trace 普查重跑(需全集语料)
## 7. 记录位置 ## 7. 记录位置
@@ -84,6 +98,7 @@
| P5b 设备证据 | `~/w7/notes/p5b/apk/p5bcodex2/`APK + proof);`MobileGL/.trace-work/p5b-redmi/p5bcodex2/2f7cbe2e/`correctness 8/8、`ab-tables.md` 与 bsl 补充表) | | P5b 设备证据 | `~/w7/notes/p5b/apk/p5bcodex2/`APK + proof);`MobileGL/.trace-work/p5b-redmi/p5bcodex2/2f7cbe2e/`correctness 8/8、`ab-tables.md` 与 bsl 补充表) |
| class-C 普查 | `~/w7/notes/p6/census-classC.md`;基线 `~/w7/p5b-c0b-census-logs/results.json` | | class-C 普查 | `~/w7/notes/p6/census-classC.md`;基线 `~/w7/p5b-c0b-census-logs/results.json` |
| P5c 审计 | `~/w7/notes/p5c/p5c-audit-v1.md`59 行清单、wire-clean 清单、与契约的分歧、已有 `rsp` 数字)+ `BRIEF-p5c-audit.md`Kimi K3 只读静态审计,头 `a79a0af6`,关键行已由集成者逐条抽查 | | P5c 审计 | `~/w7/notes/p5c/p5c-audit-v1.md`59 行清单、wire-clean 清单、与契约的分歧、已有 `rsp` 数字)+ `BRIEF-p5c-audit.md`Kimi K3 只读静态审计,头 `a79a0af6`,关键行已由集成者逐条抽查 |
| P5c 契约 / 实测 | `MobileGL/MG_Remote/CONTRACT-P5C.md`(含落地修订);`MEASUREMENTS.md` §8(逐门数字);普查逐名 Fatal 证据 `~/p5c-fatal-map.tsv`G1 报告 `~/p5c-g1-report.json`audit 日志 `~/p5c-audit-{bsl,comp}.log` |
| 门日志 | `~/w7/p5-joint-gate.log``~/w7/p5b-quickgate.log``~/w7/p5-joint-evidence/` | | 门日志 | `~/w7/p5-joint-gate.log``~/w7/p5b-quickgate.log``~/w7/p5-joint-evidence/` |
| 脚本 | `~/w7/notes/tools/``wsl_p5_gate.sh``p5_ab_redmi.sh``p5b_codex_redmi.sh``wsl_build_p5_apks.sh``p6_census_*.{sh,py}``p5b-c0b-census.sh` | | 脚本 | `~/w7/notes/tools/``wsl_p5_gate.sh``p5_ab_redmi.sh``p5b_codex_redmi.sh``wsl_build_p5_apks.sh``p6_census_*.{sh,py}``p5b-c0b-census.sh` |
+21
View File
@@ -426,3 +426,24 @@ Redmi `2f7cbe2e`,证据根 `MobileGL/.trace-work/p5b-redmi/p5bcodex2/2f7cbe2e/
splitctlpush 全部在 ±1.6% 内(增量来自 inproc 传输与 barrier,不是 APK / 构建差);p99 同向放大(sodium DirectVulkan 帧 p99 +107.7% 为离群尾帧)。inproc 臂 peak RSS 389 MiB 2.5 GiB,全角色映射 560.5 MiB(256 MiB × 角色视图是虚拟映射容量,不是 RSS 增量)。 splitctlpush 全部在 ±1.6% 内(增量来自 inproc 传输与 barrier,不是 APK / 构建差);p99 同向放大(sodium DirectVulkan 帧 p99 +107.7% 为离群尾帧)。inproc 臂 peak RSS 389 MiB 2.5 GiB,全角色映射 560.5 MiB(256 MiB × 角色视图是虚拟映射容量,不是 RSS 增量)。
**fixture 受限的 8 组**`iris-bsl-in-world` 只有 123 个 benchmark 帧,低于 200 帧尾规则,四臂 × 双后端验证全部失败(pull 同失败,是 fixture 上限不是回归);123 帧完整序列按同法折算成补充表 `ab-tables-bsl-123frame-supplement.md`barrier tax CPU p50 DirectGLES **+7.1%**、DirectVulkan **+9.1%**,不混入上表。性能仍只记录、不作阻塞门。 **fixture 受限的 8 组**`iris-bsl-in-world` 只有 123 个 benchmark 帧,低于 200 帧尾规则,四臂 × 双后端验证全部失败(pull 同失败,是 fixture 上限不是回归);123 帧完整序列按同法折算成补充表 `ab-tables-bsl-123frame-supplement.md`barrier tax CPU p50 DirectGLES **+7.1%**、DirectVulkan **+9.1%**,不混入上表。性能仍只记录、不作阻塞门。
## 8. P5c`11ac3de6..b88e8487`,同日收官)
出口门(E-P5c)实测:
| 门 | 结果 |
|---|---|
| 守卫开启下 unit | **2187/2187**strict `MOBILEGL_IPC_STRICT_ERRORS=1` 下同绿) |
| 守卫开启下 `integration-split` | **111/111**107 + ct 的 4 条 CtWireScenario,全真跑) |
| 每层守卫 red-once | layer-1MipmapStorage 守卫短路 → `TextureMapMipmapDataFromTheApplyThreadIsFatalByName` 红)与 layer-2`RefusePipeInputsTouchWhileApplierOwnsIt` 短路 → `ClientPipeInputsFillWhileTheApplierOwnsItIsFatalByName` 红)各红一次并复原;tx 的采纳改回丢指针 → 恰 `StagedTextureProductionTest` 红;ev 的 writeback 改回裸指针 → `AtomicCounterScenario.SubDataAfterDispatchSurvivesAnImmediateReadback` 按名红;ct 的发射短路 → Ct 4/4 按名红;rv 的发射门短路 → 7 条按名红 |
| 纹理 `0xDD` audit | bsl in-world100000 调用)与 iris-complementary in-world 全程零 Fatal |
| `SEG_EVENT` 往返 | 三种事件 + `kEventGlError` 各有单元往返;排空点 `eventDropped == 0` |
| `rsp` 分类 | 值类 = 0rv 的 FieldOwnershipTest 钉住);按帧实测:bsl 948.5/帧(38.7/draw123 帧)、complementary 1591.9/帧(151 帧)、iterationrp 286.2/帧(108 帧后止于既有具名 `texture-remint-pull`);残留全为对象类 15 行 |
| 普查(integration-gpu @ inproc,对同机 11ac3de6 基线逐名比对) | 基线 253 红 / 收官头 423 红;183 条 newly-failing 中 11 条为三个真回归(默认 FBO 格式时序、大 writeback 溢出、XFB scatter 读前端)——已修并回归绿;其余 172 条全部带 Fatal 名证据归类为设计红(传输下旧臂具名拒绝的对照车道 14 条 + Magma P7 未迁移面 156 条)与 2 条 DirectVulkan CtWire(改按名 skipMagma 无 object_death 生产者,P7 |
| G1pull 符号恒等,`11ac3de6` ↔ 收官头,CI 同款 sym 构建) | 0 增 / 0 删 / **3 认定 resize** / 0 重命名,`.text` 16 B`SwapchainObject::Create`ev 表面事件化)、`CopyTexSubImage2D`hd 传输臂)、`ScopedRestartIndexSubstitution`server-shadow 臂);pull 构建零 `MG_Remote` 符号 |
| G5p3a / p4a 保护区) | 字节一致 |
| 生成器 / 卫生门 | 双生成器 --check/--self-test 绿;doc 引用、include 闭包、dirty-surface 绿 |
| Redmi 四臂复测 | **未做**(记录项,需设备窗口;barrier tax 重测随之) |
| 79 trace 普查 | **未重跑**(全集语料不在本机;P5b 的 72/6/1 仍以其头为准) |
审计的 59 处直接访问的终态:纹理纹素 / 形状 / 脏区改读 server staged shadowtx);反向通道四条事件(ev);句柄解析全部按记录(hd);`applier_reset` / `object_death` 上 wire(ct);值类残余读清零(rv);双层角色守卫 + `InBarrierWait`gt)。**未到期的具名债**`MGPipeReverseAnnouncementScope`(绑定记录 P4b 才发射的 ensure/通告族)与 `MGPipeFrontendKeyedRegistryScope`G6 前端键 twin registryP3b/P4b 重键)两个 scope 内的只读探测,以及对象类 15 行 BARRIER-PULLED——全部具名、可 grep、有退役阶段。
+2 -2
View File
@@ -1,6 +1,6 @@
# MGPipe 路线图 # MGPipe 路线图
> 状态:**P0、P0.5、P1、P2、P3a、P4a、P5、P5b 已收官**2026-09-16,代码头 `82683d4a`)。当前头、逐门数字、开放项与下一步见 **[`CURRENT_STAGE_PROGRESS.md`](CURRENT_STAGE_PROGRESS.md)**;设计见 `ARCHITECTURE.md`;逐阶段实测见 `MEASUREMENTS.md`。**下一个是 P5c**`inproc` 的共享内存读点归零,2026-09-17 已审计、已计划、未开始,见下文"P5c 计划"),**然后才是 P6 spawn transport**。 > 状态:**P0、P0.5、P1、P2、P3a、P4a、P5、P5b、P5c 已收官**2026-09-17,代码头 `39d1a5d3`)。当前头、逐门数字、开放项与下一步见 **[`CURRENT_STAGE_PROGRESS.md`](CURRENT_STAGE_PROGRESS.md)**;设计见 `ARCHITECTURE.md`;逐阶段实测见 `MEASUREMENTS.md`。**下一个是 P6 spawn transport**(此时只是传输替换)
## 通用纪律(每个 commit ## 通用纪律(每个 commit
@@ -26,7 +26,7 @@
| **P4a** handle wave 2Espryt):FBO / 纹理 / sampler / program | ✅ `8c458cd5` | 十四条族调用接线(framebuffer state、sampler state / view、texture params、shader images、shader state、draw / dispatch program、global constants);纹理 / renderbuffer 复用 `resource_*`(目录不加行);六种 kind 按 `{slot, gen}` 重键;`CompositeResolver``Named = 3` framebuffer 记录;消费者门 + 客户端依赖表;位 9–12,push 默认 `0x1fff`emulation 在 split 下具名 Fatal | 全门:G1 0/0/0/0G5 17 区;G2 2902;单元 1785×3`integration-gpu` 1117 七臂;verify 920retrace 79/79;八族拒绝普查 0`PipeApplyPeek` 白盒对照。实际 1 天。§5 | | **P4a** handle wave 2Espryt):FBO / 纹理 / sampler / program | ✅ `8c458cd5` | 十四条族调用接线(framebuffer state、sampler state / view、texture params、shader images、shader state、draw / dispatch program、global constants);纹理 / renderbuffer 复用 `resource_*`(目录不加行);六种 kind 按 `{slot, gen}` 重键;`CompositeResolver``Named = 3` framebuffer 记录;消费者门 + 客户端依赖表;位 9–12,push 默认 `0x1fff`emulation 在 split 下具名 Fatal | 全门:G1 0/0/0/0G5 17 区;G2 2902;单元 1785×3`integration-gpu` 1117 七臂;verify 920retrace 79/79;八族拒绝普查 0`PipeApplyPeek` 白盒对照。实际 1 天。§5 |
| **P5** 传输 + inproc applier + 发射表 | ✅ `ff2994d9..37fc4fdb` | 同一 codec 上的 `InProcessTransport`;四种 build flavour;发射表三类 / caps mirror / reply mailboxapply-thread context 终身持有;lockstep verb barriertight ReadPixelspersistent-map 块推送;G8 字段归属生成器;split 测试 / CI / APK 车道;八包(c0 契约、w1 codec、s1 session、p1 归属、b1 persistent map、t1 车道、c1 路由、v1 server+ j0 / x2 / v1-r3 收尾 | jointOpenRA inproc 2/2 SSIM 1.0`integration-split` 21/21E1 14/14 红;G1 0/0/0/0。收尾头全门在 E3(a) 停止(设计性 skip 被判红),Part 2/4 未到达;收官审查 1 blocker / 10 major / 2 minor → P5b r1/r2。§6 | | **P5** 传输 + inproc applier + 发射表 | ✅ `ff2994d9..37fc4fdb` | 同一 codec 上的 `InProcessTransport`;四种 build flavour;发射表三类 / caps mirror / reply mailboxapply-thread context 终身持有;lockstep verb barriertight ReadPixelspersistent-map 块推送;G8 字段归属生成器;split 测试 / CI / APK 车道;八包(c0 契约、w1 codec、s1 session、p1 归属、b1 persistent map、t1 车道、c1 路由、v1 server+ j0 / x2 / v1-r3 收尾 | jointOpenRA inproc 2/2 SSIM 1.0`integration-split` 21/21E1 14/14 红;G1 0/0/0/0。收尾头全门在 E3(a) 停止(设计性 skip 被判红),Part 2/4 未到达;收官审查 1 blocker / 10 major / 2 minor → P5b r1/r2。§6 |
| **P5b** `inproc` verb migration | ✅ `37fc4fdb..82683d4a` | class-C 普查决定顺序;d1 19 / i1 7 / t2 6 / f1 11 槽迁移;sync 五槽;具名 blitGLES mip descriptorr1 / r2;收官审查三项修复。发射表 A=2 / B=54 / C=15 | 主机全门 `348d22a4` complete`integration-split` 107/107;合并普查零回退、79 trace 72/6/1**Redmi 正确性 8/8 + 四臂 A/B、barrier tax 首测**。§7 | | **P5b** `inproc` verb migration | ✅ `37fc4fdb..82683d4a` | class-C 普查决定顺序;d1 19 / i1 7 / t2 6 / f1 11 槽迁移;sync 五槽;具名 blitGLES mip descriptorr1 / r2;收官审查三项修复。发射表 A=2 / B=54 / C=15 | 主机全门 `348d22a4` complete`integration-split` 107/107;合并普查零回退、79 trace 72/6/1**Redmi 正确性 8/8 + 四臂 A/B、barrier tax 首测**。§7 |
| **P5c** `inproc` 共享内存读点归零 | **下一个**2026-09-17 已计划,未开始) | server 端纹理 staged shadow`SEG_EVENT` 三个 producersink / twin 按记录里的句柄解析;`applier_reset` / `object_death` 控制记录;值类 BARRIER-PULLED 行改残余值记录;角色守卫门。详见下文"P5c 计划" | 角色守卫开启下 `integration-split` / 普查 / 79 trace 全绿且每层守卫能红;纹理 `0xDD` audit 红一次;`SEG_EVENT` 往返红一次;`rsp` 只剩对象类行且按帧测得;Redmi 四臂复测记录 | P5b | | **P5c** `inproc` 共享内存读点归零 | `11ac3de6..39d1a5d3` | server 端纹理 staged shadow`StagedTextureStore`,句柄为键、整段覆盖、defined-ness 追踪)`SEG_EVENT` 三个 producer + `kEventGlError`(反向通道零裸指针)sink / twin 按记录句柄解析(blit 具名臂经 verb 句柄工作区,Magma 走 G6 消费臂)`applier_reset` / `object_death` 控制记录opcode 77/78framebuffer 首个 wire delete);`set_context_values`79)退役全部值类 BARRIER-PULLED 行,三 shutter 自答;双层 `Fatal{RoleViolation}` 守卫 + `InBarrierWait` 接线;两个具名豁免 scope(通告家族 P4b/P7、G6 registry 家族 P3b/P4b)承接未到期的债 | 角色守卫开启下 unit 2187/2187strict 下同绿)、`integration-split` 111/111、每层守卫 red-once 按名变红;纹理 `0xDD` audit 在 bsl / complementary 两条 in-world trace 零 Fatalrsp 按帧实测(bsl 948.5/帧,残留全为钉住的对象类 15 行);G1 三个认定 resizeSwapchainObject::Create / CopyTexSubImage2D / ScopedRestartIndexSubstitution,均已具名)+ `.text` 16 B、pull 构建零 MG_Remote 符号;G5 保护区字节一致;双生成器 --check/--self-test 绿 | P5b |
| **P6** spawn transport | P5c 之后 | `SocketTransport`socketpair + fork/execveenvp 剔除 + 强制 monolith 双保险);`ServerMain``MOBILEGL_IPC_SERVER_PATH` + `dladdr` 兜底;有界重试握手;EOF 即时退出;device-lost latchEGL forwarder 的控制面帧;P5c 留下的 `s_synced` / `g_syncedRenderStateParameters` 按 context 世代重置 | P5b 的完整渲染路径在 `spawn` 下绿;进程树只多一个子进程;`HeadlessGL` fork 预检无孤儿;OpenRA 在 Adreno 830 上 split SSIM ≥ 0.99 | | **P6** spawn transport | P5c 之后 | `SocketTransport`socketpair + fork/execveenvp 剔除 + 强制 monolith 双保险);`ServerMain``MOBILEGL_IPC_SERVER_PATH` + `dladdr` 兜底;有界重试握手;EOF 即时退出;device-lost latchEGL forwarder 的控制面帧;P5c 留下的 `s_synced` / `g_syncedRenderStateParameters` 按 context 世代重置 | P5b 的完整渲染路径在 `spawn` 下绿;进程树只多一个子进程;`HeadlessGL` fork 预检无孤儿;OpenRA 在 Adreno 830 上 split SSIM ≥ 0.99 |
| **P3b / P4b** 深化(Espryt) | 待排 | 按存储属主键控的发射游标与 view 索引重映射;`g_fboTextureSyncList``ResolvedTextureBindingMemo` / `SamplerPassMemo` / image sweep / program registry 重键;XFB scatter 搬到 client;删 fragColor 重推导 workaround 与 `g_broadcastMemo*`raw-depth-fetch sampler 原生化;回读 / pack stateP4a 记下的 R-3 / R-4 / R-5 / R-7 / R-10 / R-11`ProgramArtifacts.h` 的 NDK 尺寸钉 | 纹理 / program 场景;CTS `texture_*` / `shader_image_*` / `packed_pixels` 在 0.5 pp 内;每一个 Iris trace`TextureUploadShapeScenario` 升级成门 | | **P3b / P4b** 深化(Espryt) | 待排 | 按存储属主键控的发射游标与 view 索引重映射;`g_fboTextureSyncList``ResolvedTextureBindingMemo` / `SamplerPassMemo` / image sweep / program registry 重键;XFB scatter 搬到 client;删 fragColor 重推导 workaround 与 `g_broadcastMemo*`raw-depth-fetch sampler 原生化;回读 / pack stateP4a 记下的 R-3 / R-4 / R-5 / R-7 / R-10 / R-11`ProgramArtifacts.h` 的 NDK 尺寸钉 | 纹理 / program 场景;CTS `texture_*` / `shader_image_*` / `packed_pixels` 在 0.5 pp 内;每一个 Iris trace`TextureUploadShapeScenario` 升级成门 |
| **P7** DirectVulkanMagma)全量迁移 | 待排 | 其余 10 个子系统:`SetupDrawSnapshot` 探测字段塌成 dirty mask;占位纹理原生化;具名 UBO host payloadD-B8);内部 shader 烘焙;`VertexInputStateFactory` 内容寻址 CSO;D18 容器纪律保留 | 集成 + trace 在 Magma 的 push 与 split 下全绿;verify 零分歧;`nm -D libMobileGLServer.so \| grep glslang` 为空;CTS 0.5 pp 内。**再基线检查点:中点完成子系统 < 40% 立即重定基线** | | **P7** DirectVulkanMagma)全量迁移 | 待排 | 其余 10 个子系统:`SetupDrawSnapshot` 探测字段塌成 dirty mask;占位纹理原生化;具名 UBO host payloadD-B8);内部 shader 烘焙;`VertexInputStateFactory` 内容寻址 CSO;D18 容器纪律保留 | 集成 + trace 在 Magma 的 push 与 split 下全绿;verify 零分歧;`nm -D libMobileGLServer.so \| grep glslang` 为空;CTS 0.5 pp 内。**再基线检查点:中点完成子系统 < 40% 立即重定基线** |