Files
MobileGL/docs/Disaggregated/ROADMAP.md
T

5.0 KiB
Raw Blame History

路线图(索引)

2026-09-29:P0 到 P7、P12、P9、P10 已完成(P10:fence 轮询不再往返——server 报告完成的 fence、client 本地作答,真机两后端 0 次往返;最后一个 class-C 清零;credit 1/2/3 在设备 loopback 上量过、默认保持 1;契约 MG_Remote/CONTRACT-P10.md,G1 成立);下一阶段 P11(IPC 跑道)与 P8(monolith 跑道)。每个阶段的计划、验收结果、实测与报告在 notes/<阶段>/(点阶段名进入)。

目标

client(跑应用的一方)与 server(跑驱动的一方)可以在不同机器、不同系统上经 TCP 相连;在同一台机器上则用两个进程 + 共享内存。传输分控制面与数据面两层,可各自选择、混搭。

两条路线

  • 单进程路线:先把接口建起来,让单进程版本也受益(后端拥有自己的状态、可以挪到渲染线程)。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。

阶段一览

阶段 做什么 状态
P0 打地基:计数器、调用目录与生成器、CI 门;验证 Android 能拉起第二个进程 ✅ 09-05
P0.5 抽出前后端共用的数据类型头,切断后端对前端头文件的依赖 ✅
P1 后端改读一个"输入块",并能逐 draw 核对它与前端真实状态一致 ✅
P2 前端开始主动推送渲染状态;接口代价实测 +6–12%,决定继续 ✅ 09-08
P3a GLES 后端的 buffer、顶点数组改用句柄 ✅ 09-08
P4a GLES 后端的帧缓冲、纹理、sampler、program 改用句柄 ✅ 09-08
P5 第一次拆成两线程:命令队列 + 后端线程(每条命令都等) ✅ 09-16
P5b 把剩余命令迁到队列上;真机首次以独立后端线程跑通目标游戏 ✅ 09-16
P5c 两线程之间不再偷偷共享内存,只经队列交换 ✅ 09-17
P5d 两线程版本的性能:游戏内 7–13 fps → 103–106 fps ✅ 09-18
P5e client 发完就走,不再每条命令等后端;重负载下与单线程持平 ✅ 09-19
P5f 所有状态都经队列传递,为拆进程扫清最后障碍;Vulkan 后端也能发完就走 ✅ 09-20
P6 拆成两个进程;真机上两进程与两线程成本持平 ✅ 09-22
P6.5 传输分控制面 / 数据面;电脑当 client、手机当 server 经 TCP 跑通 第一波 ✅,余项交 CI
Ph server 能安全地接受外来连接:令牌、限额、坏数据不致崩溃 必需项 ✅(随 P7)
P3b / P4b GLES 后端的深化与收尾 大部分 ✅,余项并行
P7 Vulkan 后端完整迁移;真机画面检查 36/36 通过 ✅ 09-23
P12 server 自己开窗口上屏,client 不需要窗口 ✅ 09-29:出口门 B(跨机 TCP)✅ 09-28、A(FCL + 杀 server)✅ 09-29;契约 MG_Remote/CONTRACT-P12.md;G1 成立;余项进 DEBTS.md
P8 把剩余的仿真路径挪到正确的一侧,补齐协议 待排
P9 反向通道:回读、日志、重铸不再同步等待 client ✅ 09-29:PACK-PBO 回读 fire-and-forget(两后端)、日志分级转发、重铸无拉取(OnLog / OnTexturePullRequest 删,回调 9 → 7),F1 / F2;契约 MG_Remote/CONTRACT-P9.md;G1 成立;事件量批处理无实测需求不做;余项进 DEBTS.md
P10 同步对象、查询与帧节奏 ✅ 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
P11 同机大缓冲零拷贝共享 进行中(09-29):已合并 dev;采纳档位在握手时定、落档断言三臂登记;T0 在 app 域两后端 GO;B(同机外部 client 的共享内存 + T0)已排期,B0 探针在跑
P13 删掉旧的"后端直接读前端"路径 待排

另见