diff --git a/docs/Disaggregated/notes/p13/HANDOFF-2026-10-06.md b/docs/Disaggregated/notes/p13/HANDOFF-2026-10-06.md index 7efa821e..86b6a6bf 100644 --- a/docs/Disaggregated/notes/p13/HANDOFF-2026-10-06.md +++ b/docs/Disaggregated/notes/p13/HANDOFF-2026-10-06.md @@ -55,6 +55,17 @@ - **FCL 开关**:`MOBILEGL_PIPE_PERSISTENT_MPROTECT=0` 不装跟踪器的 SIGSEGV 处理器(JVM 隐式空指针检查也用 SIGSEGV,处理器按设计链式转交,但从未在 HotSpot 里跑过)。设备上 FCL 冒烟仍是延后检查项。 - **剩余**:S8(unifdef 掉 `RECORD_ARM`、`!RECORD_ARM` 臂、`retired_switches` 规则、`wire_declines_audit` 回到单守卫);测试文件里仍有 DISAGG 守卫的记录臂用例(`SplitBufferTest` 等)随 S8 / W6 处理。 +## 3d. W6 要点(删 monolith 前端臂,2026-10-07) + +- **找死代码的办法**(脚本在会话 scratchpad,思路可复用):split 形态的库用 `-ffunction-sections -fdata-sections -fno-inline` 另建一棵树,链接时加 `--gc-sections --print-gc-sections` 和把 `_Z*` 设为 local 的 version script,取「所有副本都被回收」的函数;再开 `-Wunused-function/-Wunused-private-field/-Wunused-member-function` 找静态与成员残留;`lld --why-live=` 回答「谁还引用它」。每轮删完重建、再列,直到收敛。删函数时注意重载(同名多个定义)和只在其他平台 `#if` 里用到的函数(Android 的 AHB / YUV 导入保留)。 +- **谓词折叠**:前端臂的选择器都已恒真——`DataArmIsRecord()`(W6a 起 constexpr)、Espryt 各族 `*SubsystemEnabled()` / `UnitTexturesByHandle()` / `ProgramHandleArm()` / `VertexInputReadsRecords()` / `MGB_TEXTURE_RECORD_ARM_SELECTED()` 及局部别名、Magma `MagmaProgramSource::IsWire()`。族谓词的锁存函数还在(集成 peek 读它们),启动时只剩 `ResolveRecordArmFamilies()` 查色彩附件上限;掩码由 ConfigLoader 拒绝。 +- **后端表**:verb port 在两种模式都覆盖、记录 sink 又不调用的后端入口(`ClearNamedFramebuffer*`、`BlitNamedFramebuffer`、`GetTexImage`、`GetTextureImage`、`MultiDrawElements`)从两后端的表里删了;`DirectGLESSanity.ProvidesNamedFramebufferBlitForDirectStateAccess` 改为断言 verb port 提供它们。 +- **link ratchet**:171 → 49,`# P13` 95 → 9。余下 9 条留给 W7(都是分区问题,不是前端臂): + - Espryt 以前端对象铸句柄的 slot 表入口与 apply 线程拒绝函数 7 条(`MGPipeSlots()`、`MGPipeSlotAllocator::{Acquire,FindByLifetimeId,Free}`、`MGPipeRefuse{Allocator,FrontendKeyedRegistry}FromApplyThread`、`MGPipeApplierIsUnbarrieredApply`):`SlotTables.h` 的 `GetOrCreate(StatePtr)` / `HandleOf` / `NoteStateForHandle` / `StateForHandle` / `OnFrontendObjectDestroyed` 与 `MGPipeFrontendKeyedRegistryScope` 的 8 处(纹理同步、unit sampler、`HandleOfBuffer`、`HandleOfSamplerViewForTexture`、`ResolveOwnRecord`、sampler / RBO 的前端 `SyncToBackend`)。这些路径在记录臂上收到的前端指针应恒为空,逐个证明后折掉即可; + - `PipeInputs::HasOpenTransformFeedbackSpan`(Magma XFB 计数槽选择)与 `PipeInputs::InvalidateCompileEnv`(Magma caps 变更):计划说要 pipe 侧替身——前者应由 applier 自己记开着的 span,后者用一个 MG_Pipe 钩子由前端静态注册。 + - 断言「`# P13` 行为 0」随这 9 条一起加。 +- **仍留着但已空转的**:`VkTextureManager` 以前端纹理为键的表(`m_aliveObjects` / `m_textureResources` 等)与其 GC、`VkClearManager` 类本身(只剩 Initialize/Shutdown)、`MG_Backend::...` 里若干只被单元测试用的纯函数(`ResolveSampledImageViewAspectMask`、`ConvertReadbackPixels`、`SamplerOverlapsWritableImageSubresource`)。机械清理,不影响行为。 + ## 4. 下一步 1. W2/W3a 的 CI:看完归类;然后推 W3b/W3c(普查基线已同提交退役名字)。 diff --git a/docs/Disaggregated/notes/p13/README.md b/docs/Disaggregated/notes/p13/README.md index 9b3a0632..2e21e796 100644 --- a/docs/Disaggregated/notes/p13/README.md +++ b/docs/Disaggregated/notes/p13/README.md @@ -30,7 +30,7 @@ | W6b | 已推(同上) | `742d43ae` `e0113503` `3aed7ae0` `e822c933` | 数据臂谓词从两后端所有分支折掉,记录臂 return 之后的前端臂代码删;XFB 角色状态只留一份;10 个前端臂单元用例删(逐条记入 `docs/ci/ci-cleanup-log.md`),两条 GL 采样规则移到 `TextureUnitSamplingScenario` | | W6c | 本地完成 | `dc1e95b4` | Magma 前端臂:前端 `MagmaProgramSource` 构造与 `IsWire()` 折掉,前端采样集遍历、占位纹理、VAO draw memo、`MagmaPipeIdentityTables` 与 ABA 旋钮、`TrySetupDrawFastPath` 与快照、前端 fallback 纹理删(约 7100 行) | | W6d | 本地完成 | `8abae647` `8bc39c79` | Espryt 各族臂谓词(framebuffer / texture / sampler / program / buffer / vertex input 及其别名)折为记录臂,`g_fboTextureSyncList` 等前端遍历删;启动时只查色彩附件上限(`ResolveRecordArmFamilies`);未迁移仿真名单清空(审计保留,守 0) | -| W6e | 本地完成 | `dab827d5` `737ef5e9` | 后端表里 verb port 在各模式都覆盖的前端对象入口(`ClearNamedFramebuffer*`、`BlitNamedFramebuffer`、`GetTex(ture)Image`、`MultiDrawElements`)及其实现删;Magma 前端 render pass、pending clear、renderbuffer 半边删。link ratchet 171 → 58,`# P13` 95 → 11(余下 11 条:Espryt 以前端对象铸句柄的 slot 表入口与 apply 线程拒绝函数 7 条、`PipeInputs` 访问器 3 条、FBO 附件 `IsComplete` 1 条) | +| 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) | ### G1 退役读数(ID-P13-4,2026-10-06)