[Docs] (P8): close the phase - ruling ID-P8-19 (the exit device check and the P12 cross-host rerun), the P8 README and PLAN, the roadmap row and header, MEASUREMENTS row 19, the status page and the last debt

This commit is contained in:
2026-09-30 08:25:38 -04:00
parent b4bee9dd38
commit 648800a2da
8 changed files with 26 additions and 33 deletions
+5 -4
View File
@@ -1,4 +1,4 @@
# 当前阶段:P8 进行中(2026-09-29 起)
# 当前阶段:P8 已收官(2026-09-30);下一阶段 P13
> **更新 2026-09-30**。这一页只有摘要;计划与裁定在 [`notes/p8/PLAN-P8.md`](notes/p8/PLAN-P8.md)、[`notes/p8/INTEGRATOR-DECISIONS-P8.md`](notes/p8/INTEGRATOR-DECISIONS-P8.md)。上一阶段 P11 于 09-29 收官,见 [`notes/p11/README.md`](notes/p11/README.md)。
@@ -20,11 +20,12 @@
| F 死闩清理与重分类 | ✅(ID-P8-6) |
| G 大 blob 分片 | 不做(ID-P8-5) |
| 第一波集成头 `39cd8fb7` | ✅ 整套门全绿,G1 不变(ID-P8-12) |
| 第二波 SE / SV(split 余项) | 进行中 |
| 第二波 MD(dev:create-* 在 Adreno 上的三条) | 进行中 |
| 第二波 SE / SV(split 余项) | ✅(ID-P8-15、-16) |
| 第二波 MD + MF(Create 在 Adreno 上) | ✅ dev `f973008c` + feat 镜像:create-instancing × Espryt × monolith 0.870 → 0.99998;create-indirect 坏在 fixture(ID-P8-14) |
| 出口 | ✅ 候选头 `49430538` 整套门全绿;设备矩阵无一格变差;P12 跨机门复跑一致(ID-P8-18、-19) |
## 下一步
第二波(ID-P8-13):SE、SV 串行合入 `p8/main`;MD 在 dev 上修,集成者推 dev 后合回 `p8/main`(G1 换基线)。之后出口:trace 双后端 SSIM 复跑、收官。
**P13**:删掉旧的「后端直接读前端」路径,monolith 换到 P8 已修好的记录臂(P8 留下的 9 条 monolith 缺陷随之消失,`DEBTS.md`)。开工前先做只读核查。
**待用户决策**:[`DEBTS.md`](notes/DEBTS.md) 六项「需裁定」(CI 触发条件、`TCP_USER_TIMEOUT`、HyperOS 下 FCL 保活、Mali 复测、TLS、`IDLE_EXIT_S`)。
+1
View File
@@ -50,3 +50,4 @@
| 16 | P12 | 审查后真机复测:Espryt SSIM 1.0;Magma 1.0 / 0.999999511;P12 定向 CTest 46/46;纹理上传回包等待 1→0(主机机制门,真机墙钟待测);**P12 已收官(09-29)**:跨机 TCP 门 (b) 通过(rd12 ssim 0.999883、稳态 17–22 fps);FCL 门 (a) 通过(Minecraft 上屏到 render server 窗口,杀 server 后 33–54 ms 闩住 device-lost) | [`notes/p12`](notes/p12/README.md) |
| 17 | 五臂传输测量(2026-09-28,非阶段) | inproc/shm 重负载比 monolith 快 ~1/3;tcp localhost 瓶颈是 credit=1 + 唤醒税(SPIN_US=2000 → 2.9×);跨主机 hang 实为主机 xray TUN 代理造成;直连 Wi-Fi 稳态 rd12 17–22 fps、openra 105–133 fps | [`notes/perf-five-arm-20260928`](notes/perf-five-arm-20260928/README.md) |
| 18 | P11 | 同机零拷贝(T0)MC 26.3 峰值内存 Espryt −41–42%、Magma −18–26%,ssim / 帧时 / CPU 不变;外部 client 走共享内存 rd12 Espryt 约 119 fps(TCP 40–53);split T2 相对单进程采纳 p99 Espryt +37–42%、Magma 约 2.5×。未量:M2 后 split server 上纹理无 GPU 写时 Espryt 自己按存储阈值取舍精确写入框,非 ring 路径可能多发几个小框 | [`notes/p11`](notes/p11/README.md) |
| 19 | P8 | 真实内容只 Magma wire indirect 命中(MC 26.3 × Magma inproc 1,300 万 draw CPU 展开)→ 原生后 create-indirect 每次整 GPU 等待 321 → 0;红米 create-instancing × Espryt × monolith 0.870 → 0.99998(Adreno 丢排队环形拷贝,dev + feat 两条阶梯);最大 program archive 355 KB = arena/4 的 4.2 %(不分片);出口设备矩阵 77 格 / 臂无一变差 | [`notes/p8`](notes/p8/README.md) |
+3 -3
View File
@@ -1,6 +1,6 @@
# 路线图(索引)
> **2026-09-29**:P0 到 P7、P12、P9、P10、**P11** 已完成——拆分路线走完。P11:同机大缓冲零拷贝(T0,默认开、用不了静默退回共享内存;MC 26.3 峰值内存 Espryt −41 %、Magma −18–26 %),同机其他 app 启动的 GL 程序(Termux 类)经 `app_process` helper 与令牌 broker 走共享内存,连接按 nonce 配对;契约 `MG_Remote/CONTRACT-P11.md`,G1 仅 Magma 空 uniform 修复 +224 字节 `.text`。当前阶段 **P8**(09-29 起,重定界:~~仿真路径下放与协议广度~~ → 补齐 server 侧仿真缺口与 split 覆盖,[`PLAN-P8.md`](notes/p8/PLAN-P8.md)),之后 P13。每个阶段的计划、验收结果、实测与报告在 `notes/<阶段>/`(点阶段名进入)。
> **2026-09-30**:P0 到 P7、P12、P9、P10、P11、**P8** 已完成——拆分路线走完,单进程路线只剩 P13。P8(重定界):server 侧仿真缺口补齐(Espryt 生成 mip、暂存副本与 GPU 写、驱动拒读;Magma wire 原生 indirect),246 个 monolith 用例登上 split 各臂并由覆盖门守住;红米上 Create 画错在 dev 与 feat 两条 flush 阶梯修好;契约 `MG_Remote/CONTRACT-P8.md`,G1 整阶段符号不变。下一阶段 **P13**(删掉旧的「后端直接读前端」路径;P8 已把 monolith 要换到的记录臂修好,9 条 monolith 缺陷随之消失)。每个阶段的计划、验收结果、实测与报告在 `notes/<阶段>/`(点阶段名进入)。
## 目标
@@ -8,7 +8,7 @@ client(跑应用的一方)与 server(跑驱动的一方)可以在**不
## 两条路线
- **单进程路线**:先把接口建起来,让单进程版本也受益(后端拥有自己的状态、可以挪到渲染线程)。P0 → P0.5 → P1 → P2 → P3a → P4a → P3b/P4b → P7 → P8 → P13。
- **单进程路线**:先把接口建起来,让单进程版本也受益(后端拥有自己的状态、可以挪到渲染线程)。P0 → P0.5 → P1 → P2 → P3a → P4a → P3b/P4b → P7 → **P8** → P13。
- **拆分路线**:在接口之上逐步拆开前后端。P5 → P5b → P5c → P5d → P5e → P5f → P6 → P6.5 → Ph → P12 → P9 → P10 → **P11**(走完)。
## 阶段一览
@@ -33,7 +33,7 @@ client(跑应用的一方)与 server(跑驱动的一方)可以在**不
| [P3b / P4b](notes/p34b/README.md) | GLES 后端的深化与收尾 | 大部分 ✅,余项并行 |
| [P7](notes/p7/README.md) | Vulkan 后端完整迁移;真机画面检查 36/36 通过 | ✅ 09-23 |
| [**P12**](notes/p12/README.md) | **server 自己开窗口上屏,client 不需要窗口** | ✅ 09-29:出口门 B(跨机 TCP)✅ 09-28、A(FCL + 杀 server)✅ 09-29;契约 `MG_Remote/CONTRACT-P12.md`;G1 成立;余项进 [`DEBTS.md`](notes/DEBTS.md) |
| [**P8**](notes/p8/README.md) | ~~把剩余的仿真路径挪到正确的一侧,补齐协议~~ → **补齐 server 侧仿真缺口与 split 覆盖**:Espryt 生成 mip(RGB16F / RGB32F、存储窗口)、Espryt 暂存影子与 GPU 写对账、Magma wire 原生 indirect、CopyImage 在 server store 上处理、monolith 用例登记到 split 各臂;原范围 6 项前序阶段已完成([`PLAN-P8.md`](notes/p8/PLAN-P8.md)) | 进行中(09-29 起) |
| [**P8**](notes/p8/README.md) | ~~把剩余的仿真路径挪到正确的一侧,补齐协议~~ → **补齐 server 侧仿真缺口与 split 覆盖** | ✅ 09-30:重定界(原 10 项里 6 项前序已完成);Espryt 生成 mip / 暂存副本与 GPU 写 / 驱动拒读、Magma wire 原生 indirect 与 dispatch;246 例登上 split 三臂(`split_coverage.py`);Create 在 Adreno 上的丢拷贝修到 dev 与 feat;契约 `MG_Remote/CONTRACT-P8.md`;余项进 [`DEBTS.md`](notes/DEBTS.md) |
| [**P9**](notes/p9/README.md) | **反向通道:回读、日志、重铸不再同步等待 client** | ✅ 09-29:PACK-PBO 回读 fire-and-forget(两后端)、日志分级转发、重铸无拉取(`OnLog` / `OnTexturePullRequest` 删,回调 9 → 7),F1 / F2;契约 `MG_Remote/CONTRACT-P9.md`;G1 成立;事件量批处理无实测需求不做;余项进 [`DEBTS.md`](notes/DEBTS.md) |
| [**P10**](notes/p10/README.md) | **同步对象、查询与帧节奏** | ✅ 09-29:fence 轮询由 server 报告本地作答(`kEventFenceSignaled`、`MOBILEGL_IPC_POLL_ESCALATE`;主机 Magma·tcp −37%,Adreno 830 上两后端 0 次往返);`SetSwapInterval` 转发、class C 清零;query / XFB / AsyncCompile 登记 split 各臂;credit 1/2/3 设备 loopback 在噪声内;契约 `MG_Remote/CONTRACT-P10.md`;G1 成立;余项进 [`DEBTS.md`](notes/DEBTS.md) |
| [**P11**](notes/p11/README.md) | **同机大缓冲零拷贝共享** | ✅ 09-29:T0 零拷贝导入(两后端,默认开,自测不过或 Stream 上静默退回 T2);同机外部 client 经 helper + 令牌 broker 走共享内存(B1);连接按 `PairBind` nonce 配对(修订 5);采纳档位在握手时定;契约 `MG_Remote/CONTRACT-P11.md`;余项进 [`DEBTS.md`](notes/DEBTS.md) |
+1
View File
@@ -24,6 +24,7 @@
| P8 转出(C):server SSBO 标记过近似(窗口内每个绑定的 SSBO 都标);一个留在 SSBO 绑定上又当 restart EBO 用的 buffer 每次 draw 都回读 | 性能工作 |
| P8 转出(monolith,ID-P8-13):9 条 monolith 缺陷真实内容 0 命中,不在 dev 上修——Espryt `*IndirectCount` / 原生 indirect `gl_BaseVertex` / fp64 收窄读未同步影子;Magma `glMultiDrawArraysIndirectCount` CPU 臂同病;Magma 录制中途 `SyncGpuWrites` → SIGSEGV;Espryt RGB16F / RGB32F CPU 滤波读陈旧影子、R11F / 深度链无视 BASE / MAX;Magma 无 BLIT 颜色格式缺着色器 mip 臂;Espryt 拷贝后 `glGetTexImage` 读拷贝前影子(证据见 `notes/p8/{B,C,D,E}.md`) | P13(monolith 换到已修好的记录臂) |
| P8 转出(monolith,feat,ID-P8-14):feat 的 monolith 臂每次 indirect draw 在命令缓冲有 GPU 写时整 buffer 同步回读(`SyncClientSideVertexArraysForIndirectFetch`,`62bfe461`,dev 无);Magma 的 split 构建 monolith 深度 mip 不传 view 类型,无深度 `BLIT_DST` 的设备上 1D 深度链会拿到 2D view(推断,Release 下断言编译掉,SV) | P13(monolith 换臂) |
| P8 转出(ID-P8-19):create-indirect × Magma × spawn 在红米上由 0.84 变为每次丢设备(该 fixture 的 indirect 命令本身是乱的;推断 D 原生化后乱命令直达 GPU,monolith 臂一直原生、基线上也偶发丢设备);坏命令能打挂 GPU 是 GL 未定义行为,robust buffer access 可兜住 | 待归因(fixture 重抓后复测) |
| P8 转出(ID-P8-14):create-indirect fixture 在桌面上抓(SSBO 偏移对齐 16),Adreno 要求 64,任何臂任何后端都过不了;设备车道记为不适用 | 需要时在对齐 64 的设备上重抓 |
| P8 转出(MD):dev 的 `RingAllocateSlow` 在出错的上下文上无上限地排水(设备上挂在 `glFinish`) | 小修(dev) |
| P8 转出:`LogForwardChannel.APeerThatStopsReadingCostsWarnLinesNotTheCallersTime` 在负载下超时(两次),单跑必过 | 小修(放宽时限或隔离) |
@@ -1,24 +1,2 @@
# P8 集成者裁定日志(server 侧仿真缺口与 split 覆盖)
> 形式沿用 [`../p11/INTEGRATOR-DECISIONS-P11.md`](../p11/INTEGRATOR-DECISIONS-P11.md):一条裁定一个 ID,只记「定了什么、为什么、影响哪些文件」。计划见 [`PLAN-P8.md`](PLAN-P8.md)。
| ID | 日期 | 裁定 | 理由 | 影响 |
|---|---|---|---|---|
| ID-P8-1 | 2026-09-29 | **重定界**(用户批准):原范围在 `README.md` 与路线图行里划掉保留;方向改为补 server 侧缺口与 split 覆盖;原 10 项里 6 项与 2 个门、开放问题 9 关闭(`PLAN-P8.md`「已关闭」表)。 | 只读核查逐项对代码:split 可达的仿真拒绝只剩 Espryt 生成 mip 两名;client 侧工作已由 P5b–P9 完成。 | `ROADMAP.md`、`notes/p8/` |
| ID-P8-2 | 2026-09-29 | 门改写:覆盖门 = 归一化后 split ⊆ monolith ∪ 豁免表;create-indirect 往返门 = 多帧设备 trace 加载帧非 `ResourceCreate` 等待 = 0。 | 原两门按字面不可达 / 是空的(trace 只 1 帧)。 | A 包、P8-0 |
| ID-P8-3 | 2026-09-29 | G1 不变;各包 split 半边放在 `MOBILEGL_BUILD_DISAGGREGATED` 下。monolith 半边(例如 B2 的 CPU 滤波读陈旧影子)若 red-once 证实,在 dev 上单独修再合并(用户同意)。 | 沿用 P9 / P11 做法。 | B、C、E |
| ID-P8-4 | 2026-09-29 | 第一波七包并行(P8-0、A、B、C、D、E、F,树 `~/w7/p8-<包>`,分支 `p8/<包>`,集成树 `~/w7/p9-main` 分支 `p8/main`);G 等 P8-0 的测量;C、D 为 P13 前置。设备只由 P8-0 使用(红米,约半天,用户同意)。 | 各包改动区域不重叠(`DirectGLES.cpp` 按行段分开)。 | 全部 |
| ID-P8-5 | 2026-09-30 | **P8-0 普查**(主机 80 + 78 次重放、红米 trace 语料 77 × 两臂、FCL 原版 26.3 实机;插桩不提交):真实内容里只有 D 命中——原版 MC 26.3 × Magma × inproc 把 44,768 次 indirect 调用 / 13,028,030 个 draw(约 870 / 帧)在 CPU 展开;B1 / B2 / C / E 的前提在真实内容 0 命中,靠构造的 red-once 成立。**G 不做**:最大 program archive 354,846 B = arena/4 的 4.2 %,最大 `draw_vbo` 记录 1,936 B。create-indirect 门(ID-P8-2)在多帧 trace 上成立:rd12(250 帧)与 improved-transparency-26.3(1210 帧)加载帧非 `ResourceCreate` 等待 = 0。设备语料 spawn 70/77、monolith 68/77 达 0.99,差的都在基线(未插桩对照)上复现。 | FCL 上只有原版 26.3(无 Iris / Complementary / Create,未下载),B2 实机对照做不了,改用两条 Complementary trace(生成 mip 只见 R11F 与 RGBA8)。 | [`S.md`](S.md);树外 `~/w7/notes/p8/s-report.md` |
| ID-P8-6 | 2026-09-30 | **F 落地**(`2b4ae539`):我们的 client 发不出的形状改判 `ProtocolCorruption`——multi-draw `CLIENT_INDICES` / `INSTANCED` 闩、Magma `client-vertex-array`;Magma 生成 mip 着色器形状在 wire 臂由 Fatal 改具名拒绝 `MipmapShaderFormatOrShape`(与 monolith 一致,判定在长链之前);`kCapViewportArray` / `kCapNeedsHost{Index,Ubo}Bytes` 与索引镜像哨兵标保留位、不改号。 | 只有外来 peer 能到;mip 形状是后端覆盖缺口不是坏记录。`@P` 标签本不计入 census(BRIEF-F 前提不成立)。 | [`F.md`](F.md) |
| ID-P8-7 | 2026-09-30 | **A 落地**(`8133cd52` + `24b8aef6`):246 个只在 monolith 登记的用例登上 split / spawn / tcp(`P8Coverage.cmake`);五条 server 读的旋钮车道各起一个 tcp supervisor;撤 `ClientSideIndices` / `GuiBatch` 排除;`split_coverage.py` + 豁免表(mechanism / single-backend / no-records / pending-fix)进 CI 与 `gate.sh`,断言归一化后 monolith ⊆ split ∪ 豁免(ID-P8-2)。按名普查 304 例:235 三臂全过、55 同因跳过、13 no-records、1 真红(Espryt spawn / tcp 默认帧缓冲深度读 0,pending-fix,第二波)。 | 旋钮只放 client 环境时 tcp 副本静默跑默认臂(旧 `ForcedDs` tcp 条目同病,已修)。**规则**:server 读的旋钮车道要么独立 tcp supervisor,要么只上 split + spawn,要么证明对其他用例惰性(E 的 13×7 extent 限域)。 | [`A.md`](A.md) |
| ID-P8-8 | 2026-09-30 | **B 落地**(`2f530ad8`):Espryt server 按记录的生成窗口 [BASE+1, min(MAX+1, 存储层数, 链长)) 生成 mip(B1,与 Magma 同口径);RGB16F / RGB32F 先试驱动原生,驱动拒绝时 server 从驱动读回基级做 2×2 box(不读 client 影子;读回被拒且暂存覆盖整级才用暂存);split 名 `generate-mipmap-storage` / `generate-mipmap-cpu-filter` 退役。 | 基线 B1 六例 × 三臂、B2 四例 Fatal;只修检查不修链时 BASE=1 会被 level 0 覆盖。强制 CPU 臂旋钮 `MGITEST_ESPRYT_FORCE_CPU_MIPMAP` 只上 split + spawn(合 ID-P8-7 规则)。 | [`B.md`](B.md) |
| ID-P8-9 | 2026-09-30 | **C 落地**(`94410715`):split server 给 shader 写过的 buffer 孪生体打标(SSBO / 原子计数、可写 buffer image、XFB),restart 重写、multi-draw rebase、`*IndirectCount`、CPU 取用的 indirect 字段、XFB scatter、fp64 收窄一律经 `SplitHostBytesForCpuRead` 懒刷新后读;T0 臂先落排队常驻写再 `glFinish`(P11-B2 那条债的 split 半,主机无 T0、未能证红)。 | 前提成立:基线 Espryt split / spawn / tcp 21/21 红。monolith 13 条缺陷用例运行时按名跳过(`SkipBrokenMonolith`,原因写在代码里),第二波 dev 修复落地后解除。 | [`C.md`](C.md) |
| ID-P8-10 | 2026-09-30 | **D 落地**(`92eab9f3`):Magma wire 臂把 `glDraw*Indirect` / `glMultiDraw*Indirect[Count]` 直接录成 `vkCmdDraw*Indirect[Count]`;CPU 展开只留给设备发不出的 COUNT 形态(与 monolith 同条件);shader 写过的 store 在首个 indirect 读前录一次屏障;范围 / 对齐 / 缺 store 四条具名拒绝。 | create-indirect split 上 321/322 次 indirect 读每次一整 GPU 等待(每次回放约 8 s)→ 0。去屏障的像素用例在 lavapipe 上不红(顺序执行),如实记录。 | [`D.md`](D.md) |
| ID-P8-11 | 2026-09-30 | **E 落地**(`39cd8fb7`):审计前提不成立——split 的 `glGetTexImage` 只读 GPU、不碰影子;真实缺口是驱动拒绝 attach(Adreno RGB16 / 16 位 SNORM)时会话以 `Fatal{ReplyError,"ReadPixels"}` 结束。改为由 server 暂存 store 作答(整级、extent 相符、未被驱动写过),store 跟随同格式 `glCopyImageSubData`(FollowCopy),跟不了的打粘性 driver-written 标;否则具名拒绝。死闩 `CopyImageSubData+RENDERBUFFER` 删除,census 79 → 78。 | red-once 11 条。E 的 monolith 半(拷贝后读拷贝前的 CPU 影子)归第二波 dev。 | [`E.md`](E.md) |
| ID-P8-12 | 2026-09-30 | **第一波集成头 `39cd8fb7` 整套门**:G1 符号增 0 减 0、`.text` `0xa5ba13`(pull 不变);fatal census 78;link ratchet 172;parity 0;修订 5;wire-declines 58 / 59 站点;卫生 12/12 + `split_coverage`(两后端 monolith 701,Espryt 门控 612 + 豁免 89,missing 0);unit 2721;split / spawn / tcp 735 / 649 / 661;Magma 271 / 248 / 216 / 668;gpu monolith / inproc 3684 / 3684;verify 5471;retrace 230/236(已知 6 例 iterationrp)。集成者裁定:契约旧措辞加 P8 修订注(`CONTRACT-P5B.md`、`CONTRACT-P5E.md`、`CONTRACT-P7.md`);monolith 缺陷共 12 条(报了 13 条,C、D 各报一次 Magma `glMultiDrawArraysIndirectCount`),取舍见 ID-P8-13;开放问题 9、11 关闭,15 答「是缺口」。 | 串行集成六次,每次整套门;两处追加冲突(`CMakeLists.txt`、`WireDeclines.def`)都两块保留,一次合并修复(A 的豁免行)。 | 树外 `~/w7/notes/p8/int-*.md` |
| ID-P8-13 | 2026-09-30 | **第二波**:split 两包(SE Espryt + 文档、SV Magma)串行合入 `p8/main`;dev 一包(MD)只修 create-* 在 Adreno 上的三条真实负载缺陷,其余 9 条 monolith 缺陷留给 P13(`DEBTS.md`)。 | ID-P8-3 原意是「B2 的 monolith 半边上 dev」,第一波报出 12 条(13 条报告去重),全在 monolith 专属臂里、P13 换臂即消失;按 P8-0 真实内容命中收窄,只修 Create 在 Adreno 上会碰到的三条(dev 是现行产品)。这是对 ID-P8-3 的收窄,已告知用户。 | `PLAN-P8.md` 第二波 |
| ID-P8-14 | 2026-09-30 | **MD + MF:Create 在 Adreno 830 上的真实缺陷**。(1) Espryt 部分范围失效映射越过排队的环形拷贝,Adreno 丢拷贝 → create-instancing 整块地形空(0.870);dev 修(`f973008c`,已推 origin dev),feat 的 push 阶梯镜像同一守卫(MF),G5 两条阶梯正文按本裁定重钉;红米两构建 monolith 0.870 → 0.99998 ×3,关守卫回 0.870。spawn 未受影响是时序运气(同样隐患,前面一串整 buffer 映射先把拷贝提交了),现在靠设计。(2) **create-indirect 在红米上坏(ID-P7-4)不是 MobileGL 缺陷**:fixture 在桌面上抓(SSBO 偏移对齐 16),Adreno 要求 64,按 GL 规则被拒的 `glBindBufferRange` 让 Flywheel 的拷贝着色器写乱 indirect 命令;接受 16 字节偏移的诊断构建让 Magma 到 0.99999。该 fixture 的设备车道记为不适用。(3) 每次 indirect draw 整 buffer 同步回读只在 feat 的 monolith 臂(`62bfe461`),dev 无;Magma「计算写 → indirect 读无依赖」被证伪(加屏障不变)。 | 设备 red-once 各一;主机无法显出丢拷贝(llvmpipe 不丢)。 | `Managers.cpp`、`Managers.h`、`p3a_untouched_regions.sh`、`p4a_untouched_regions.sh`;[`MF.md`](MF.md);树外 `md-report.md` |
| ID-P8-15 | 2026-09-30 | **SE 落地**:spawn / tcp 的默认帧缓冲把 surface 发布给 client(原先前端占位为空就提前返回,client 留着 D32F_S8 猜测,blit 丢深度模板);A 的 pending-fix 豁免删除;CPU 生成 mip 在基级被驱动写过且读回被拒时具名拒绝;D 的 case 3 在 Espryt split 臂放开;`unmigrated_emulation_sites.py` 进 CI 与门,死名 `copy-image-shadow-mirror` 删除;包说明 87 处行号按内容重对。 | red-once 9 条。副作用:P12 server 自有窗口的尺寸事件在 spawn / tcp 下第一次生效(设计如此),由出口设备检查验证。 | [`SE.md`](SE.md) |
| ID-P8-16 | 2026-09-30 | **SV 落地**:Magma 3D 原生 mip blit 用 1 层(校验层 VUID-00240 / 01707 / 01708 消失);深度模板 mip 拒绝有了 tally 行 `MipmapDepthStencilAspect`;1D 深度 mip 具名拒绝;wire 臂 `glDispatchComputeIndirect` 原生(无 CPU 路径,沿用 D 的屏障规则)。 | red-once 9 条;`.Mip3DValidation.` 需要校验层,只放在装了层的车道。 | [`SV.md`](SV.md) |
| ID-P8-17 | 2026-09-30 | **合并 dev `f973008c`**(`37174242`):dev 的 Magma 空 uniform 修复与 P11 的 `7784d6bb` 是同一处,合成一条代码路径;dev 的 `UnboundUniformBlockScenario` 登上 split 各臂。G1 符号 0 / 0,pull `.text` `0xa5ba13` → `0xa5ba43`(dev 修复)。 | dev 是现行产品;ID-P8-3。 | `UniformManager.cpp`、`P8Coverage.cmake` |
| ID-P8-18 | 2026-09-30 | **第二波集成头 `49430538` 整套门**:G1 符号 0 / 0、`.text` `0xa5ba43`;census 78;ratchet 172;parity 0;修订 5;wire-declines 61 / 66 站点;卫生 14/14(含 G5 两个、`split_coverage`、`unmigrated_sites`);unit 2724;split / spawn / tcp 747 / 661 / 673;Magma 277 / 253 / 220 / 678;gpu monolith / inproc 3744 / 3744;retrace 230/236(已知 6);verify 5514 中 1 例 `LogForwardChannel.APeerThatStopsReadingCostsWarnLinesNotTheCallersTime` 负载下超时,单跑 5/5 过(入债)。SV 的集成门途中 WSL 自动升级重启,重启后首轮 gpu monolith 的 664 个 tcp 失败是残留的 fixture 状态文件,重跑 3744 全过。 | 串行合入 dev、SE、SV、MF 四次,每次整套门。 | 树外 `~/w7/logs/p8/int-*-summary.log` |
| ID-P8-19 | 2026-09-30 | **P8 收官**(候选头 `49430538`)。出口设备检查(红米,两后端 × monolith / spawn,77 格 / 臂):66 行与 P8-0 基线在 1e-6 内一致,**无一格变差**;create-instancing × Espryt × monolith 0.870 → 0.99998;低于 0.99 的只有已知集合(create-indirect 不适用、1.21.11-main-menu、derivative-main Espryt、photon)。P12 跨机门 (b) 复跑:DirectGLES openra 1.0 / rd12 0.999883010(与 P12 记录一致),DirectVulkan openra 1.0 / rd12 0.999884191;server 自有窗口上 openra 两后端 1.0,Espryt 第一次发出 640×480 尺寸事件(SE 的副作用),转屏会话存活。trace split 双后端 SSIM 门(主机 230/236,仅已知 6 例)成立。收官不派 agent 审:契约 `CONTRACT-P8.md` 各条对代码逐条核对,G1 整阶段符号 0 / 0。 | create-indirect × Magma × spawn 由 0.84 变为每次丢设备(该 fixture 的 indirect 命令本身是乱的;推断 D 原生化后乱命令直达 GPU,monolith 臂一直如此且基线上也偶发丢设备),入债。 | `CONTRACT-P8.md`;树外 `~/w7/notes/p8/x-report.md` |
+4
View File
@@ -66,3 +66,7 @@
| Espryt RGB16F / RGB32F CPU 滤波读陈旧影子;R11F / 深度链无视 BASE / MAX | B | 0 | 留给 P13 |
| Magma 无 BLIT 颜色格式缺着色器 mip 臂 | B | 0 | 留给 P13 |
| Espryt 拷贝后 `glGetTexImage` 读拷贝前影子 | E | 0 | 留给 P13 |
## 收官(2026-09-30,ID-P8-19)
两波全部合入;第二波另加 MF(feat 的 push 阶梯镜像 dev 修复)与出口设备检查 X。结果见 [`README.md`](README.md)。
+10 -2
View File
@@ -1,4 +1,4 @@
# P8 — ~~emulation 下放 + 索引宿主镜像 + 协议广度~~ → server 侧仿真缺口与 split 覆盖(进行中,2026-09-29 起)
# P8 — ~~emulation 下放 + 索引宿主镜像 + 协议广度~~ → server 侧仿真缺口与 split 覆盖(已收官,2026-09-30)
> **2026-09-29 重定界**(用户批准):只读核查发现原范围 10 项里 6 项已由前序阶段完成,剩下的缺口都在 server 侧,不是"搬到 client"。计划 [`PLAN-P8.md`](PLAN-P8.md);裁定 [`INTEGRATOR-DECISIONS-P8.md`](INTEGRATOR-DECISIONS-P8.md)。下面原范围照录并划掉,不删。
@@ -15,7 +15,15 @@
| F | 死闩清理与重分类 | ✅([`F.md`](F.md),ID-P8-6) |
| G | 大 blob 分片 | 不做(ID-P8-5) |
第一波集成头 `39cd8fb7` 整套门全绿(ID-P8-12)。第二波见 [`PLAN-P8.md`](PLAN-P8.md)。
第一波集成头 `39cd8fb7` 整套门全绿(ID-P8-12)。
| 第二波 | 内容 | 结果 |
|---|---|---|
| SE | Espryt split 余项 + 文档行号 | ✅ spawn / tcp 默认帧缓冲发布 surface;CPU mip 拒读时具名拒绝;名单对调用点的门([`SE.md`](SE.md),ID-P8-15) |
| SV | Magma split 余项 | ✅ 3D mip blit 1 层、深度 mip 拒绝入账、1D 深度拒绝、`glDispatchComputeIndirect` 原生([`SV.md`](SV.md),ID-P8-16) |
| MD + MF | Create 在 Adreno 830 上 | ✅ dev `f973008c` + push 阶梯镜像:create-instancing × Espryt × monolith 0.870 → 0.99998;create-indirect 坏在 fixture(对齐 16 vs 64),不是 MobileGL([`MF.md`](MF.md),ID-P8-14) |
契约 `MobileGL/MG_Remote/CONTRACT-P8.md`;收官 ID-P8-19(出口设备检查无一格变差,P12 跨机门复跑一致)。
## 摘要(原文,已划掉)
+1 -1
View File
@@ -42,6 +42,6 @@
## 设备上基线就有的问题(两臂都有,不归 P8)
- create-indirect 在 Adreno 830 上 kgsl `Preemption Fault`(两后端两臂;ID-P7-4)。
- create-indirect 在 Adreno 830 上 kgsl `Preemption Fault`(两后端两臂;ID-P7-4)——**原因已查明**(ID-P8-14):fixture 在桌面上抓,SSBO 偏移对齐 16,Adreno 要求 64,被拒的绑定让 indirect 命令写乱;不是 MobileGL 缺陷。
- 1.21.11-main-menu(Espryt 0.890、Magma 0.165)、derivative-main(Espryt 0.851)SSIM < 0.99。
- create-instancing × Espryt × monolith 0.870(spawn 0.99998)——monolith 缺陷,进第二波 dev。