mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-11-16 06:23:23 +09:00
[Docs] (P13): progress through W3c and how W4a switched Espryt's monolith arm
This commit is contained in:
@@ -33,6 +33,16 @@
|
||||
- 工具:scratchpad 下 `pyunifdef.py`(W3b 用的部分求值器)、`retire_names.py`(从普查基线退役具名用例)。
|
||||
- `~/mgl-p13-apitrace`:apitrace CLI(`apitrace dump`)。
|
||||
|
||||
## 3b. W4 设计要点(W4a 落地时的实际做法)
|
||||
|
||||
- **谓词**:`MG_Config::DataArmIsRecord()` / `RecordArmAliasesFrontend()`(`Config.h`)。monolith 的 `MonolithTakesRecordArm` 由 `MOBILEGL_PIPE_DATA_ARM`(默认 `record`,W4-W6 专用)且后端为 DirectGLES 时才为真;Magma 在其一次性换臂时加入。无 MG_Remote 构建恒 false(W5 改)。
|
||||
- **三类分支**:K(生命周期、角色、caps 来源、传输层级)留 `Transport`;F(数据臂)改谓词;S(store 是否复制)问 `CopiesIntoServerStorage()`——`M:3910` 那处若误用谓词会把所有别名基址清空。
|
||||
- **verb 端口**(`EmitTables.cpp`「THE MONOLITH VERB PORT」):monolith 下被端口接管的槽位跑 EmitTables 的同一套规划与 pre-verb 钩子,再把记录交给进程内 `ServerVerbSink`(它写 `VerbIndirectBuffer` 等并调真表)。由 `MobileGL/Init.cpp`(SHARED)安装,不由 `MG_Backend/Init.cpp` 装——后者是 server 对象,装会让链接棘轮报新前端引用。W4a 端口槽位:20 个 draw + 2 个 dispatch。后续波把新 verb 同时加进 `InstallMonolithVerbPort` 与 `ApplyOnMonolithPort` 的 switch。
|
||||
- **§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 随前端臂删。
|
||||
- 完整的 site 分类表与后续步骤(W4b 纹理别名 store、W4c、Magma)见 Plan 代理的设计(会话 scratchpad `W4-design.md`;要点已并入本节)。
|
||||
|
||||
## 4. 下一步
|
||||
|
||||
1. W2/W3a 的 CI:看完归类;然后推 W3b/W3c(普查基线已同提交退役名字)。
|
||||
|
||||
@@ -8,7 +8,11 @@
|
||||
|---|---|---|---|
|
||||
| CI 基线 | 完成 | `cde6512b` `0cbb1a84` `c9085533` | 托管 Test `37414803850`、APK `37405703442` 的红全部归类修复:1.17 名字表(apitrace 分支 `45843686`)、CTest include 的 `IN_LIST`、环回 TCP 端口、spawn Welcome 冷启动预算 |
|
||||
| W1 | 完成 | `5ff33cbb` | `runtime_mode_proof` 的 monolith = 无 MG_Remote;push 无 MG_Remote 控制库 + 零 MG_Remote 符号检查;retrace-split 不再因控制库失败整体跳过;skip 普查 |
|
||||
| W2 | 本地 | `3c42fef8` `d0019120` | CMake 默认 push;Gradle 删 `pipePush`(FCL 内嵌 push monolith、无 MG_Remote);撤 pull 控制库 |
|
||||
| W2 | 完成 | `c6cb5dea` `68b56165` `9f05e665` `3e11c848` | CMake 默认 push;Gradle 删 `pipePush`(FCL 内嵌 push monolith、无 MG_Remote);撤 pull 控制库。Test `37433779649` 三红均为非产品问题,已修(ci-cleanup-log 的基础设施表) |
|
||||
| W3a | 完成 | `55de98a0` | `MOBILEGL_PIPE_PUSH` 不再是选项(旧缓存 OFF 警告并忽略) |
|
||||
| W3b | 完成 | `9e14c16d`…`a4d10dd9`、`daf2b44c`…`883b8614`、`c0404018` | 删 `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 | 进行中 | 14a `3e2aff1d` `cef29781`;谓词 `8b907220`;Espryt 换臂(本地) | Espryt monolith 走记录臂:缓冲、indirect、client 数组、绑定点、GPU 写标记、fp64、重启索引、multi-draw;进程内 verb 端口;§1.4 别名刷新。XFB 依赖 program 档案,随 W4c;Magma 一次性换臂(入口按 verb 选臂,不能按族),在 Espryt 全部换完后 |
|
||||
|
||||
### G1 退役读数(ID-P13-4,2026-10-06)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user