[Docs] (P13): W9 moves to the post-P13 perf pass as a debt, and the README records the '# P13' gate and the §1.3 cleanup.

This commit is contained in:
2026-10-06 21:43:28 -04:00
parent cd4f2db53c
commit 45513aef51
2 changed files with 4 additions and 0 deletions
+1
View File
@@ -23,6 +23,7 @@
| P8 转出(B):`PipeCalls.def:260` `GenerateMipmap` 仍是 `kWaitApplied`,裁定 14 的理由(CPU 滤波碰 client 影子)已不成立,可改 `kWaitNone` | 性能工作(协议行为变更,需单独裁定) |
| P8 转出(C):server SSBO 标记过近似(窗口内每个绑定的 SSBO 都标);一个留在 SSBO 绑定上又当 restart EBO 用的 buffer 每次 draw 都回读 | 性能工作 |
| P13 转出(W5 翻转后,ID-P13-2 记录项,用户裁定记为债务):Magma monolith 走记录臂比前端臂慢约 16%——Y700 上 FCL MC 1.21.5、RD2 小场景、时钟未钉:记录臂 168 / 176 fps,同库强制前端臂 206 / 204 fps,即每帧 CPU 约 5.8 ms 对 4.9 ms(渲染线程都约占满一核);Espryt 持平(224 / 226 对 222)。疑因:`VulkanRenderer::SetupDraw` 在记录臂直接进 `SetupWireDraw`,绕过只在前端臂跑的 `TrySetupDrawFastPath`(PLAN-P13 §1.3 已提示「换臂前先量」)。W6 删前端臂后这部分成本固定下来 | P13 收官后(用户裁定:P13 内不做性能工作):性能工作的「之前」基线是 `dev` 分支构建(pull monolith),不是 W6 前的 feat 构建;在设备上钉时钟对比 dev 与 feat,场景为 FCL MC 与 anland glmark2,两个后端都测;再用 simpleperf profile Magma monolith 每 draw 成本,决定是否给 wire draw 臂补快路径 |
| P13 转出(W9,用户裁定:P13 内不做性能工作):缓存容量重调(CSO / 描述符 / 管线缓存容量按 `MOBILEGL_PIPE_STATS` 读数定初值、设备复核)未做,容量仍是 P8 时的值 | P13 之后的性能轮:以 `dev` 构建为基线(同 Magma 16% 那行),先在主机语料取 `MOBILEGL_PIPE_STATS` 读数定初值,再在设备上钉时钟复核 |
| P13 转出(FCL 浸泡,用户裁定:FCL 暂不改、MobileGL 不做规避):FCL game process can die silently (exit SIGNALED status=34, SIGRTMIN+2): the JVM signal reset after renderer selection drops libcore's AsynchronousCloseMonitor handler, and FCL's okhttp/Okio watchdog then kills the process; renderer-independent (reproduced on P12 and P13 libraries, both backends; untested with other renderers)。浸泡:P13 库 30 次(Magma 22 / Espryt 8)死 18 次、P12 库 10 次死 2 次;P12 / P13 逐次交替的对照(同场景同网络时段)P12 4/10、P13 2/10,时间线(`Renderer:` 行到 MobileGL 首行约 6.2 s、晚死固定在其后约 9.4 s)两库相同,无证据表明 MobileGL 拉高概率;全部 status=34,无 tombstone、无 kgsl;证据与机理见 [`p13/fcl-soak/README.md`](p13/fcl-soak/README.md) | fix belongs in FCL (save/restore libcore's SIGRTMIN+2 sigaction around JVM creation); left for the user |
| 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 换臂) |
+3
View File
@@ -32,6 +32,9 @@
| W6d | 本地完成 | `8abae647` `8bc39c79` | Espryt 各族臂谓词(framebuffer / texture / sampler / program / buffer / vertex input 及其别名)折为记录臂,`g_fboTextureSyncList` 等前端遍历删;启动时只查色彩附件上限(`ResolveRecordArmFamilies`);未迁移仿真名单清空(审计保留,守 0) |
| W6e–f | 本地完成 | `dab827d5` `737ef5e9` `922507f8` | 后端表里 verb port 在各模式都覆盖的前端对象入口(`ClearNamedFramebuffer*`、`BlitNamedFramebuffer`、`GetTex(ture)Image`、`MultiDrawElements`)及其实现删;Magma 前端 render pass、pending clear、renderbuffer 半边删。Magma 管线构建只读 draw framebuffer 记录,其后的前端纹理同步删。link ratchet 171 → 49,`# P13` 95 → 9(余下见 HANDOFF §3d,转 W7) |
| W7 | 本地完成 | `9fa61b84` | D12:`SOURCE_FILES` 按 link ratchet 的 PARTITION 拆成 7 个 OBJECT 库(`mg_util` / `mg_pipe` / `mg_backend` / `mg_frontend` / `mg_remote_transport` / `mg_remote_client` / `mg_remote_server`),`MobileGL` 与 `MobileGL_s` 链同一批对象(每个文件只编一次),编译侧使用要求集中在接口目标 `mgl_build_iface`。新目标 `MobileGL_server_linkcheck`(split、Linux):只链 server 与 shared 模块、`--no-undefined`,基线里每条前端引用经 `scripts/ci/server_link_check.py` 生成的 `--defsym` 具名豁免到一个 abort 桩;基线没列的 server→前端引用在链接前按名拒绝(两个阴性对照已验:少一条基线、少一条豁免都红)。当前 65 条豁免:49 条来自 server 对象(即基线),16 条来自 shared 的入口胶水(`Init` / 全局对象)。`link_ratchet.py` 改为同时扫 `mg_*.dir` |
| `# P13` 出口门 | 本地完成 | `fa77b187` `9987e57f` | 死亡通知带 handle(`StateObjectDeathOps.OnDestroyed(kind, lifetimeId, handle)`),Espryt 按 handle 放孪生(`ReleaseTwinsForWireObjectDeath`,与 server 的 object_death 同一释放),槽由 client 在通知后释放;Espryt 前端键槽表入口(`GetOrCreate(StatePtr)` / `Find(object)` / `HandleOf` 及其记忆 / `Note/StateForHandle` / 寿命 id 死亡遍历)、遗留 map 臂与 GC、注册表拒绝、`MGPipeApplierIsUnbarrieredApply` 与两个空作用域删掉;`InvalidateCompileEnv` 走 `MGPipeNotifyCompileEnvChanged()` 钩子,`HasOpenTransformFeedbackSpan` 改读 applier 的 `StreamOutputSpans`;link ratchet 49 → 36,`--assert-monotone` 拒绝任何 `# P13` 注解;10 个 `DirectGLESSlotTable` 用例改驱 handle 入口,9 个用例退役(记入 ci-cleanup-log) |
| §1.3 残留 | 本地完成 | `de6ab167` | 删遗留 `BufferBackendOps` 表(前端分派、两后端 Ops_*、`BufferObject` Get/SetBackendResource)、Magma 从未填充的缓存(`VkTextureManager` 前端键 map 与记忆、`VkRenderPassManager` 的 render pass / renderbuffer / 待清除 / 追踪附件缓存与驱逐观察者)和 `VkClearManager`;约 30 个 BufferTest mock 用例与 1 个 SplitBufferSet 用例改驱 `MGPipeResourceOps` mock,未退役;ratchet 36 → 27 |
| W9 | 移出 P13 | | 缓存容量重调属性能工作,按用户裁定移到 P13 之后的性能轮(DEBTS.md 对应行) |
### G1 退役读数(ID-P13-4,2026-10-06)