From 96c3aff78f5cd4ffceddc54ee549f8cd2565002f Mon Sep 17 00:00:00 2001 From: Swung0x48 Date: Tue, 6 Oct 2026 09:16:57 -0400 Subject: [PATCH] [Docs] (P13): Magma's monolith flip and the W4d part that landed --- docs/Disaggregated/notes/p13/HANDOFF-2026-10-06.md | 2 ++ docs/Disaggregated/notes/p13/README.md | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/Disaggregated/notes/p13/HANDOFF-2026-10-06.md b/docs/Disaggregated/notes/p13/HANDOFF-2026-10-06.md index 58a66ed0..e74379e4 100644 --- a/docs/Disaggregated/notes/p13/HANDOFF-2026-10-06.md +++ b/docs/Disaggregated/notes/p13/HANDOFF-2026-10-06.md @@ -41,6 +41,8 @@ - **§1.4 别名刷新**:`RefreshAliasedStoreFromGpu`(`Managers.cpp`):读回 GL buffer → `OnBufferWriteback`(前端把字节拷进它的影子,即别名基址)→ 清 `serverGpuWritten`、盖 serial、bump epoch。前提:monolith 记录臂在 sub-data 与 respecify 时就铸 twin;孤立 respecify 也带影子基址(上传仍按描述符的 `HasDefinedContent` 门控);`contentSinceRespecify` 代替别名 store 没有的覆盖集回答流式写法。 - **GPU 写标记**:`GpuWriteSetIsClientSide()` 改谓词,client 侧的保守集由端口的 `MarkGpuWritesForDraw` 打;后端只标自己的 twin(`serverGpuWritten`)。image 单元仍在前端臂(W4c),其 buffer-texture 写在前端臂里额外标 twin。 - **单元测试**:`BufferTest` 三例断言前端臂的 map 推送,钉 `ScopedMonolithFrontendArm`,W6 随前端臂删。 +- **Magma 换臂**(同一会话稍后):一次性;`MonolithTakesRecordArm` 对两后端都为真。坑:服务端产生的字节(回读落入 pack buffer 的 `LandReadbackInBuffer`、纹理重铸 / 再生成的 `Adopt`)绝不能被别名 store 当基址——缓冲侧用 `MGPipeServerOriginatedWriteScope` 走「直接上传 GL + 标 GPU 写」,纹理侧 `Adopt*` 默认复制、只有客户端记录的 run 传 `frontendShadow=true`(曾造成 use-after-free:重铸后首 16 字节是 malloc 元数据)。 +- **本机 retrace**:`~/mgl-p13-tools/sync.sh` 才物化 LFS fixture(`sb.sh` 用的 `sync2.sh` 会把它们复原为指针);跑前设 `MOBILEGL_GPU_HANG_BUDGET_MS=0`。 - 完整的 site 分类表与后续步骤(W4b 纹理别名 store、W4c、Magma)见 Plan 代理的设计(会话 scratchpad `W4-design.md`;要点已并入本节)。 ## 4. 下一步 diff --git a/docs/Disaggregated/notes/p13/README.md b/docs/Disaggregated/notes/p13/README.md index 1122a69c..a59a7014 100644 --- a/docs/Disaggregated/notes/p13/README.md +++ b/docs/Disaggregated/notes/p13/README.md @@ -13,8 +13,8 @@ | W3b | 完成 | `9e14c16d`…`a4d10dd9`、`daf2b44c`…`883b8614`、`c0404018`、`a32ca001` | 删 `MOBILEGL_PIPE_LEGACY_MEMOS`、`MOBILEGL_PIPE_PUSH` 宏与 `MGB_CTX`;位图 bits 0-13 固定开,清位具名拒绝(`SubsystemMaskRefusal.*` 对照);删 HandleRecycle Legacy / AbaControl 车道;每条移除记在 ci-cleanup-log | | W3c | 完成 | `e2c90986` `be86ca17` | 删 `ResidualValueBlock`;op 46 退役为拒绝行;verify 的 A2 负对照接管能力比对 | | W4a–c(Espryt) | 本地完成 | 14a `3e2aff1d` `cef29781`;谓词、W4a、W4b/W4c(本地) | Espryt monolith 全部族走记录臂:缓冲、indirect、client 数组、绑定点、GPU 写标记、fp64、重启索引、multi-draw、纹理(别名式 staged 纹理 store)、读回(含 pack buffer)、帧缓冲、单元 / sampler / image、program(monolith CSO 记录带档案副本)、XFB;进程内 verb 端口;§1.4 别名刷新。本地 unit 2905/2905、integration-gpu 3650/3650、DirectGLES retrace 29/29(另 11 条缺 LFS fixture 或主机 llvmpipe 的 iterationrp) | -| W4(Magma) | 未开始 | | 入口按 verb 选臂,不能按族:先把前置(monolith 注册 wire 资源表、进程内持久映射捐赠、别名纹理 store 读、设备可选扩展)惰性落地,再一次性换臂 | -| W4d | 未开始 | | residual 填充与 `PipeInputs` 前端字段 | +| W4(Magma) | 本地完成 | 一次性换臂(本地) | monolith 注册 wire 资源表;进程内持久映射捐赠(`DonateWireBuffer`:wire store 本就 host-visible / coherent / 常驻映射,交给前端,取 T0 的「回读无字节」语义);`GetSyncStatus` 在记录臂上对同一未提交 fence 连续轮询 64 次后提交一次(split 由 apply 线程空闲时提交,monolith 无空闲时刻);ABA 对照车道钉前端臂(其对象是前端臂的身份表,W6 随之删);`DescriptorPoolGrowth` 的 wire 预算按记录臂而非传输判断。本地 integration-gpu 3650/3650、DirectVulkan retrace 29/29(本机须 `MOBILEGL_GPU_HANG_BUDGET_MS=0`,与 CI 相同,否则 llvmpipe 上 >2 s 的提交触发挂死看门狗) | +| W4d | 部分(本地) | | monolith 记录臂的 8 个值类字段改由 `set_context_values` 记录供给(不再 residual 填充)。转发访问器替身、`kFatal` 前端指针字段删除、`PipeInputs.h` 去 `MG_State` 头并入 W6/W7(它们是删前端臂与模块边界的一部分) | ### G1 退役读数(ID-P13-4,2026-10-06)