From 0e4afb624fe848e62cd4939d9131f4450d182012 Mon Sep 17 00:00:00 2001 From: Swung0x48 Date: Sun, 20 Sep 2026 03:38:44 -0400 Subject: [PATCH] [Docs] (Disaggregated): record repaired Magma gameplay and rotated window verification --- docs/Disaggregated/CURRENT_STAGE_PROGRESS.md | 15 +-- docs/Disaggregated/ROADMAP.md | 4 +- docs/Disaggregated/notes/p5f/HANDOFF-P5F.md | 12 +- docs/Disaggregated/notes/p5f/close-report.md | 7 +- .../Disaggregated/notes/p5f/fcl-e2e-report.md | 3 + .../notes/p5f/magma-inproc-fix.md | 107 ++++++++++++++++++ 6 files changed, 131 insertions(+), 17 deletions(-) create mode 100644 docs/Disaggregated/notes/p5f/magma-inproc-fix.md diff --git a/docs/Disaggregated/CURRENT_STAGE_PROGRESS.md b/docs/Disaggregated/CURRENT_STAGE_PROGRESS.md index 21eceed8..38571b8a 100644 --- a/docs/Disaggregated/CURRENT_STAGE_PROGRESS.md +++ b/docs/Disaggregated/CURRENT_STAGE_PROGRESS.md @@ -17,12 +17,13 @@ ## 2. P5f 最终验收 -**FCL 游戏补测**(源码 `aa78f102`,2026-09-20):已正常编译/安装到 Redmi 的 -`com.tungsten.fcl.mgdebug.debug`。MC `26.3-rc-3` 世界 `test`:GLES inproc / monolith、 -Magma monolith 均完成至少60秒连续运行及人工画面检查;**Magma inproc 未进世界, -真实触发 P7 `buffer-legacy-arm` 并退出**。另有一次 GLES 渲染初始化前 signal34 启动异常, -重试通过,未隐去。详细范围与证据见 [fcl-e2e-report.md](notes/p5f/fcl-e2e-report.md)。 -下面的六臂设备数字仍是先前公开 GL runner,不能冒充 FCL 测试结果。 +**Magma inproc 游戏修复**(行为头 `38919d45`,2026-09-20):已编入 Redmi 的 +`com.tungsten.fcl.mgdebug.debug`。MC `26.3-rc-3` 世界 `test` 的 Magma inproc、GLES inproc +与 Magma monolith 均完成至少60秒运行及人工验图;应用 buffer 拒绝与 Android 90° blit +错误已修复。Magma inproc 仍 lockstep,实测约20 FPS,性能没有冒称齐平。最新19项专项门、 +1387项GPU结果和剩余边界见 [修复报告](notes/p5f/magma-inproc-fix.md)。 +旧 [fcl-e2e-report.md](notes/p5f/fcl-e2e-report.md) 保留 `aa78f102` 失败;下面六臂数字 +仍是原 P5f 公开 GL runner 快照,不能冒充 FCL 测试或覆盖最新修复报告。 | 门 | 总条目 | PASS | skip | failed / 结论 | |---|---:|---:|---:|---| @@ -265,7 +266,7 @@ p50 181(约 1.10 倍)——那一次不可配对,只能作为方向性提 | 项 | 证据 / 去向 | |---|---| | `SEG_STAGE` 默认 32 MiB 装不下目标负载的单次 128 MiB 上传;**决定 = 默认不改**,普查与 Redmi 显式 `MOBILEGL_IPC_STAGE_MB=256`;分块 / 专用 carrier 留 P8(`ROADMAP.md` 开放问题 11) | `p5b-results/blit-codex-v1.md`;`MEASUREMENTS.md` §7.2 | -| Magma 应用 buffer、placeholder/native-format 等 P7 功能广度 | P5b 的“89 个错答中82个”是历史普查计数;P5f 已验证无应用 buffer 的 draw/compute、sampler/image record 子集,后续按新语料重新点名,不能继续把旧计数当当前失败数 | +| Magma P7 剩余功能与性能 | 应用 VBO/EBO/UBO、已对齐 SSBO/atomic/texel、persistent 和 indirect 消费已随 `38919d45` 实际游戏修复落地;XFB buffer capture、部分不对齐 range/UBO byte-tail、placeholder/native-format 及批处理性能仍待做。P5b “82个错答”只属历史计数;见 [修复报告](notes/p5f/magma-inproc-fix.md) | | rd12 GLES `InitialBytesNotCarried/resource_respecify`、rd12 VK `BarrierTimeout/Present`、`iris-bsl-esc-menu-854` GLES、三条 `texture-remint-pull` 仿真槽、`create-indirect` VK 内存膨胀 | 79 trace 普查 `counts.json` / `trace-transitions.json` | | RGB 三通道 CPU mip 回退仍是具名 Fatal | `p5b-results/mip-codex-v1.md` | | ~~P5c 历史跨角色清单与对象类残余~~ | **P5f 已全部收口**:双块空棘轮、零 BARRIER_PULLED、两后端逐帧 rsp=0;旧指针 accessor 以 FATAL 保持边界,未伪标为 record-supplied。见 [`close-report`](notes/p5f/close-report.md) | diff --git a/docs/Disaggregated/ROADMAP.md b/docs/Disaggregated/ROADMAP.md index 3a80a3be..eb56dffb 100644 --- a/docs/Disaggregated/ROADMAP.md +++ b/docs/Disaggregated/ROADMAP.md @@ -32,7 +32,7 @@ | **P5f** 一切状态上 wire | ✅ **已收官(2026-09-20)**;验收代码 Windows `c42577a4` / WSL `cfca93c7885f` | f0 普查、f1 双块、fc 控制帧、fe Espryt 字段、fm Magma record consumers、fs 静态世代/角色及 liveness、fr registry、fv 反向回调均已合并。字段归属 **41 RECORD_SUPPLIED / 6 APPLIER_DERIVED / 0 BARRIER_PULLED / 16 FATAL**;strict / dualblock 预期 marker 集合均空。控制帧与静态量工作已完成,不再列为 P6 待实现项 | unit **2310 = 2300 PASS + 10 skip**;GPU **1377** 零失败;ordinary / strict split **180 = 176 PASS + 4 skip**;双块 **212 = 206 PASS + 6 精确具名 skip**;双后端 RSP 门 **2 PASS / 0 skip**、逐帧 rsp=0。G1 `.text` 10806051、symbols 27815 恒等且 0/0/0/0;G2 3016 同名;G14 3646→3744 无删名。逐包与收官修复均有 red-once;Claude 异族终审 P1/P2 已修;Redmi 六 clean-boot 臂 **60 PASS / 6 skip / 0 failed**、36 个窗口 rsp=0。详见 [`close-report`](notes/p5f/close-report.md) | | **P6** spawn transport | **P5f 前提已解除,尚未实施**;a6 / c6 待开始 | `SocketTransport`(socketpair + fork/execve,envp 剔除 + 强制 monolith 双保险);`ServerMain`;`MOBILEGL_IPC_SERVER_PATH` + `dladdr` 兜底;有界重试握手;EOF 即时退出;device-lost latch。消费 P5f 已落地的值控制帧与 server-owned 状态,不重做 EGL 帧化或静态世代隔离。依赖序见 [`P6-SPAWN-PLAN.md`](P6-SPAWN-PLAN.md):**a6**(核验进程装配/链接边界)→ **c6**(契约)→ **so / sm / cp / st / t6**。契约草稿 [`P6-CONTRACT-DRAFT.md`](P6-CONTRACT-DRAFT.md)。边界仍为 pbuffer / surfaceless / 离屏;真窗口到达归 P12。需区分不等待的 client 与已死亡的 server,不以超时阈值代替 device-lost 判定 | P5b 的完整渲染路径在 `spawn` 下绿;进程树只多一个子进程;`HeadlessGL` fork 预检无孤儿;OpenRA 在 Adreno 830 上 split SSIM ≥ 0.99;`integration-spawn` 与 `integration-split` 名集合一致;每条私有日志证明子进程 pid 与 `transport=spawn`;socket 门铃代价实际测量,性能只记录 | | **P3b / P4b** 深化(Espryt) | 待排 | 按存储属主键控的发射游标与 view 索引重映射;`g_fboTextureSyncList`;`ResolvedTextureBindingMemo` / `SamplerPassMemo` / image sweep / program registry 重键;XFB scatter 搬到 client;删 fragColor 重推导 workaround 与 `g_broadcastMemo*`;raw-depth-fetch sampler 的 monolith 清理(transport 原生臂已由 P5f fs 落地);回读 / pack state;P4a 记下的 R-3 / R-4 / R-5 / R-7 / R-10 / R-11;`ProgramArtifacts.h` 的 NDK 尺寸钉 | 纹理 / program 场景;CTS `texture_*` / `shader_image_*` / `packed_pixels` 在 0.5 pp 内;每一个 Iris trace;`TextureUploadShapeScenario` 升级成门 | -| **P7** DirectVulkan(Magma)全量迁移 | 待排 | 其余 10 个子系统:`SetupDrawSnapshot` 探测字段塌成 dirty mask;占位纹理原生化;具名 UBO host payload(D-B8);内部 shader 烘焙;`VertexInputStateFactory` 内容寻址 CSO;D18 容器纪律保留 | 集成 + trace 在 Magma 的 push 与 split 下全绿;verify 零分歧;`nm -D libMobileGLServer.so \| grep glslang` 为空;CTS 0.5 pp 内。**再基线检查点:中点完成子系统 < 40% 立即重定基线** | +| **P7** DirectVulkan(Magma)全量迁移 | 部分已提前落地,阶段未收官 | `38919d45` 已补实际游戏的 server buffer consumers 和 Android 旋转 blit([报告](notes/p5f/magma-inproc-fix.md));其余工作: 其余 10 个子系统:`SetupDrawSnapshot` 探测字段塌成 dirty mask;占位纹理原生化;具名 UBO host payload(D-B8);内部 shader 烘焙;`VertexInputStateFactory` 内容寻址 CSO;D18 容器纪律保留 | 集成 + trace 在 Magma 的 push 与 split 下全绿;verify 零分歧;`nm -D libMobileGLServer.so \| grep glslang` 为空;CTS 0.5 pp 内。**再基线检查点:中点完成子系统 < 40% 立即重定基线** | | **P8** emulation 下放 + 索引宿主镜像 + 协议广度 | 待排 | `MG_Impl/Pipe/HostResolve.cpp`(client 数组范围、最大索引扫描、`*IndirectCount` 解析,逐站点 reconcile);`Server/IndexHostMirror`;CopyImage 镜像搬到 client;viewport-array 回放验证;`generate_mipmap` 计划 + CPU 回退纹素;大 blob carrier(开放问题 11);无 present fence tick;`kCapDriverOrderedXfbCapture` | `'^DirectGLES\.Split\.'` 与 `'^DirectGLES\.'` 逐名相同;trace split 双后端 SSIM ≥ 0.99 含两个 `coherent_as_flush` fixture;`ClientArrayAfterComputeWriteScenario`;`create-indirect` 上 `roundtrips-per-frame` 读零;`index-mirror-bytes` 逐用例发布 | | **P9** 反向通道 | 待排 | `SEG_REPLY` 异步 slot 池;PBO 回读 fire-and-forget;`OnGpuWritten` 收窄;`OnBufferWriteback` 批处理 + epoch 排序;`OnXfbScatterReady`;`OnTextureWriteback`;`OnMipLevelsGenerated`;纹理拉取四条缓解 + 终止符;`OnGlError` 有序;`OnSurfaceChanged`;`OnLog` 分级;`SEG_EVENT` 溢出策略;class-C 的 readback 尾 | 回读 / XFB 场景在 split 下绿;`TextureRemintPullScenario`(含无解用例);拉取计数逐 trace 发布;两条故障注入 | | **P10** sync / query / present 节奏 | 待排 | client 铸造 query handle;轮询入口成门铃点 + `MOBILEGL_IPC_POLL_ESCALATE`;fence 完成度来自逐 fence 退休;非 present fence tick;`present` 1:1;credit 默认 1;roundtrip 计数器与输入延迟直方图;class-C 的 query / swap-interval 尾 | query / XFB / `AsyncCompile` 场景在 split 下绿;trace 上 draw / state / upload 路径 roundtrip 读零;零 timeout 轮询有界退出;配对 A/B 记录 | @@ -125,7 +125,7 @@ P5c 当时移交的对象类 BARRIER-PULLED、transport registry 前端键、EGL | ABI fingerprint | 不混 segment sizes;改变 8/32/16 MiB + 256 KiB ledger 时仍欠这项 | | 默认 32 MiB staging | 目标负载单次 128 MiB 上传装不进默认 stage;普查 / Redmi 显式 256 MiB profile,默认不改;分块 / 专用 carrier 归 P8(开放问题 11) | | P5b 的 inproc 依赖 | 历史的 scoped client binding、mip registry 查询与 FBO death mailbox 已经 P5c/P5f 改为记录、句柄和控制/事件路径;P6 核验并装配已有载体,不再重做这些迁移 | -| 未迁移与仿真路径 | 15 个 class-C 槽(query / sync 尾 / `GetTexImage` / `SetSwapInterval`)→ P9 / P10;client vertex arrays、multi-draw client indices、RGB 三通道 CPU mip、renderbuffer copy endpoint、未绑定 named clear、`texture-remint-pull` 仿真保留具名拒绝 → P8 / P9;Magma split compute / image 的“82 个错答”是 P5b 历史普查计数,不是当前失败清单;P5f fm 的无应用 buffer draw/compute、sampler/image record 子集已通过,应用 buffer、placeholder/native-format 等剩余功能广度仍归 P7 | **P5e 补**:client vertex arrays 在 run-ahead 下是**具名拒绝**(ID-82,`Fatal{UnmigratedVerb, "DrawArrays+CLIENT_ARRAYS"}`),并有自己的预期红车道 `integration-clientarrays-split`(ID-134);staging 仍归 P8 +| 未迁移与仿真路径 | 15 个 class-C 槽(query / sync 尾 / `GetTexImage` / `SetSwapInterval`)→ P9 / P10;client vertex arrays、multi-draw client indices、RGB 三通道 CPU mip、renderbuffer copy endpoint、未绑定 named clear、`texture-remint-pull` 仿真保留具名拒绝 → P8 / P9;Magma split compute / image 的“82 个错答”是 P5b 历史普查计数,不是当前失败清单;P5f 后续已补应用 buffer consumers 与 Android 旋转 blit,Magma inproc 已能运行所测 MC 世界;XFB、部分不对齐范围、placeholder/native-format 及性能仍归 P7([报告](notes/p5f/magma-inproc-fix.md)) | **P5e 补**:client vertex arrays 在 run-ahead 下是**具名拒绝**(ID-82,`Fatal{UnmigratedVerb, "DrawArrays+CLIENT_ARRAYS"}`),并有自己的预期红车道 `integration-clientarrays-split`(ID-134);staging 仍归 P8 | E2 wire 内容控制 | draw-drop 是 OpenRA 的有效控制(758 draws,SSIM 0.000036);clear-drop 被全屏 overdraw 掩盖,不能作控制 | | max record bytes | 实测 reduced / OpenRA `maxrec=784 B`,默认 cap 4 MiB;只代表所测负载,后续索引 / indirect 尾仍须记录 | | 树外脚本 | 普查跑器、`wsl_p5_gate.sh`、Redmi 定频行都在 `~/w7/notes/`,git merge 不会传播 | diff --git a/docs/Disaggregated/notes/p5f/HANDOFF-P5F.md b/docs/Disaggregated/notes/p5f/HANDOFF-P5F.md index 45c86258..7245143d 100644 --- a/docs/Disaggregated/notes/p5f/HANDOFF-P5F.md +++ b/docs/Disaggregated/notes/p5f/HANDOFF-P5F.md @@ -3,12 +3,14 @@ > 2026-09-20。交付 worktree: > `C:/Users/geekerwan/AndroidStudioProjects/FoldCraftLauncher/MobileGL-disagg`,分支 `feat/disaggregated`。 > 完整结果见 [close-report.md](close-report.md),设备见 [device-report.md](device-report.md), -> 阶段终审见 [close-review.md](close-review.md)。最终行为验收头 `cfca93c7`,之后仅文档/复现工具。 +> 阶段终审见 [close-review.md](close-review.md)。原 P5f 行为验收头 `cfca93c7`; +> 后续 Magma 游戏修复的行为头为 `38919d45`,见下。 > -> **FCL 游戏补测(2026-09-20)**:源码 `aa78f102` 已编入并安装 `.mgdebug.debug` FCL, -> MC `26.3-rc-3` 的 GLES inproc / monolith 与 Magma monolith 各完成至少60秒世界运行; -> **Magma inproc 真失败于 P7 `buffer-legacy-arm`,尚不能跑该游戏**。 -> 见 [fcl-e2e-report.md](fcl-e2e-report.md),不要将前面的公开 GL runner 当成 FCL E2E。 +> **Magma inproc 游戏修复(2026-09-20)**:已补 server buffer consumers 与 Android quarter-turn +> color blit。`38919d45` 的 `.mgdebug.debug` FCL 在 MC `26.3-rc-3` 世界 `test` 上, +> Magma inproc、GLES inproc 和 Magma monolith 均完成至少60秒运行与人工验图。 +> Magma inproc 仍 lockstep、约20 FPS;不是 P7 全量完成。见 [修复报告](magma-inproc-fix.md)。 +> 旧 [fcl-e2e-report.md](fcl-e2e-report.md) 保留 `aa78f102` 的真实失败,不代表当前结果。 ## 0. 当前结论 diff --git a/docs/Disaggregated/notes/p5f/close-report.md b/docs/Disaggregated/notes/p5f/close-report.md index 704b9f2d..7ac96263 100644 --- a/docs/Disaggregated/notes/p5f/close-report.md +++ b/docs/Disaggregated/notes/p5f/close-report.md @@ -8,9 +8,10 @@ 包含 Windows 收口头 `c42577a4` 的全部修复;之后仅补文档与设备复现工具。 交付分支为 `feat/disaggregated`。包提交与环境入口见 [HANDOFF-P5F.md](HANDOFF-P5F.md)。 -用户随后要求的 [FCL 游戏端到端补测](fcl-e2e-report.md) 已实际执行:GLES inproc / monolith -与 Magma monolith 可进入 MC `26.3-rc-3` 世界并稳定运行;Magma inproc 真失败于 P7 -`buffer-legacy-arm`。本文的 P5f 完成不表示完整 Magma 游戏 split 工作负载已经可用。 +用户随后要求的 [首次 FCL 游戏端到端补测](fcl-e2e-report.md) 暴露 Magma inproc 的 P7 +`buffer-legacy-arm`。后续 [Magma 游戏修复](magma-inproc-fix.md) 补齐 buffer consumers 与 +Android 旋转 blit,`38919d45` 已在同一 MC `26.3-rc-3` 世界正常运行。本文余下数字保留原 +P5f 收口快照;最新修复没有宣称 P7 全量迁移或 Magma run-ahead 已完成。 ## 1. 完成的行为 diff --git a/docs/Disaggregated/notes/p5f/fcl-e2e-report.md b/docs/Disaggregated/notes/p5f/fcl-e2e-report.md index 84020448..e3630e88 100644 --- a/docs/Disaggregated/notes/p5f/fcl-e2e-report.md +++ b/docs/Disaggregated/notes/p5f/fcl-e2e-report.md @@ -1,5 +1,8 @@ # P5f FCL / Minecraft 端到端补测 +> 本文是 `aa78f102` 的历史失败记录。后续 `38919d45` 已修复应用 buffer 消费及 Android +> 90° window blit,Magma inproc 已能正常进入同一世界;见 [magma-inproc-fix.md](magma-inproc-fix.md)。 + 2026-09-20,Redmi `2f7cbe2e`,FCL `com.tungsten.fcl.mgdebug.debug`,Minecraft `26.3-rc-3`,现有单人世界 `test`。此前 [device-report.md](device-report.md) 是公开 GL 像素 runner,不是 FCL E2E;本文是用户要求后新增的真实游戏测试。 diff --git a/docs/Disaggregated/notes/p5f/magma-inproc-fix.md b/docs/Disaggregated/notes/p5f/magma-inproc-fix.md new file mode 100644 index 00000000..5e85c5e9 --- /dev/null +++ b/docs/Disaggregated/notes/p5f/magma-inproc-fix.md @@ -0,0 +1,107 @@ +# Magma inproc 实际游戏修复 + +> 当前行为头 `38919d45`,分支 `codex/magma-inproc`;本报告记录 P5f 后的实际游戏补修。 +> Redmi Magma inproc 已通过运行与人工图像检查;同 APK 的 GLES inproc 与 Magma monolith 复跑、最终 G1/G2/G14 均已通过。 +> 功能修复、主机门与真机验证完成;保留以下性能和功能边界,未宣称 P7 全阶段收官。 + +## 1. 问题与修复范围 + +P5f 原设备门验证的是公开像素子集,Magma 的应用 buffer 路径仍具名拒绝。 +Minecraft 26.3-rc-3 真正需要 VBO/EBO、UBO range、persistent writes 和 indirect draws; +因此“原像素门通过”不能推出游戏可用。本轮按用户要求补上这些 server record 消费路径。 + +`VkBufferManager` 新增按完整 `{slot,gen}` 管理的 server buffer storage 和 resource ops, +实际发布 buffer consumer bit。SubData 原位更新;busy store 使用 staging copy 或等待后精确 +写入,不拿 client 旧影子覆盖 GPU 结果。GPU-written / readback 走已有反向事件,persistent +map 保持 client-owned T2 emulation,不把 server 映射地址交给 client。 + +vertex/index 绑定从 wire VAO、逐属性 buffer records 和 server slices 解析,支持现有 +格式转换、offset/stride、base vertex/instance;indirect 与 line-loop 消费 server buffer 字节。 +UBO/SSBO/atomic/texel descriptors 从记录的 handle、range 和 program reflection 解析; +短 UBO 先零填完整反射块,再只复制绑定 range 内的 GPU 字节,避免 range 外毒值进入 shader。 + +Magma 继续不发布 `kCapRunAheadApply`,仍按 lockstep 生命周期运行。真实 bootstrap 单测同时 +检查 resource ops 与 consumer bits,不能把“支持 buffer”误写成“支持 run-ahead”。 + +## 2. 保留中间失败证据 + +最初将 17 条新 buffer 用例接到旧实现,**构建成功、17 条实际全红**,主要在旧 buffer 守卫 +abort。日志 `magma-buffer-baseline-red.log/xml` 保留;没有先改成弱断言来获得绿灯。 + +`31dc1a73` 修好 buffer 后,17 条门、unit/GPU 都绿,手机也能进世界,**但设备结果 NOT PASS**: +画面左半黑、右侧约 90° 旋转,并有条纹和彩噪。该阶段证据保存在 +`C:/Users/geekerwan/.codex/tmp/magma-inproc-fix/Magma-inproc-31dc1a73-run/`,不能由后续成功覆盖。 + +根因是 wire color blit 将 logical `2620×1280` 矩形直接写入 native `1280×2620`、 +`ROTATE_90` swapchain。monolith 的旧 shader 路线曾处理该转换,wire 路线没有继承。 +`38919d45` 加入纯 native Vulkan shader blit,使用 server-owned shader/pipeline/descriptors, +覆盖 identity/90/180/270,按 native viewport 绘制,并正确处理 GL scissor 和反向矩形; +没有恢复前端 ShaderObject/ProgramObject,也没有添加 test-only transform 开关。 + +## 3. 主机门与阴性对照 + +| 门 | 已取得结果 / 适用代码 | +|---|---| +| buffer + default-blit 严格车道 | **19 PASS / 0 skip / 0 failed**;role-split=1、strict=1;原17条全部保留。 | +| unit,`31dc1a73` | **2311:2301 PASS / 10 既有 skip / 0 failed**。 | +| 最终 integration-gpu | **1387:1119 PASS / 268 skip / 0 failed**(`magma-final-gpu.xml`)。 | +| 最终双块 split + Magma | **231:225 PASS / 6 既有 skip / 0 failed**;空字段 Fatal 棘轮(`magma-final-dualblock.xml`)。 | +| strict / 每帧 RSP,`31dc1a73` | strict **180 条零失败**;RSP 两后端 **2 PASS / 0 skip**。 | +| G1,`38919d45` | `.text` **10806051 → 10806051**;symbols **27815 → 27815**,增/删/变长/改名 **0/0/0/0**。 | +| G2,`38919d45` | pull / push 各 **3016** 名,集合相同。 | +| G14,`38919d45` | 审计基线 **3744 → 3774**,新增30、删除0;其中3768→3774是完整JSON机比,历史证据限制见下。 | + +G14 的历史机读集合由旧 XML/lane JSON 重建出3741名,另3名由 `aa78f102` 注册与未变测试 +源码补证;**不是对一份完整保存的3744名历史 CTest JSON 直接比较**。明细在 +`~/w7/p5f-logs/magma-final-summary.log`、`magma-g14.json` 和 `magma-final-names.log`。 +最终 pull/push 构建、生成器检查及字段 self-test 通过;include closure 4项、0skip/0problem。 + +新增 UBO 用例逐次核 offset、range rebind、handle rebind、SubData 与 block binding; +GPU SSBO 用例先直接消费 GPU 写出的 VBO/EBO 绘制,再精确回读并重画;persistent-map +复用同帧/跨帧变色场景。旧 `EnabledVertexBufferDrawKeepsNamedP7Fatal` 保留注册名,内容已 +改成64个真实绿色像素正例。两条 default-blit case 使用非方形四色源,核 viewport 无关、 +方向、反向目标矩形以及 scissor 内外像素;host identity 路线确实执行新 native blit。 + +真实 carrier 阴控:`MOBILEGL_IPC_PERSISTENT_BLOCK_KB=0` 让同一 persistent-map 变色用例 +实际失败(rc=8),随后恢复默认旋钮再跑为绿;保留 `magma-persistent-{green,red,restored}.log`, +以及 red XML / 私有日志。CI 固定核19名完整执行,未放宽六项 skip。PackedFloat known-red +也实跑1失败/0skip、rc8,保留其native-format边界(`magma-final-known-red.xml`)。 + +## 4. Redmi 实际游戏结果 + +设备 `2f7cbe2e`,既有 FCL 包 `com.tungsten.fcl.mgdebug.debug`,版本 `26.3-rc-3`、世界 `test`。 +最终 Magma inproc:**32.083 s 进世界,稳定65.109 s、1320帧,约20.274 fps**;PID `9993` +仍存活,所有记录的 `rsp=0`。约20fps 明显偏慢;本轮是功能修复,不能据此宣称性能合格。 + +主任务人工检查完整景物、方向、雨效及暂停菜单,原半黑/旋转错位/彩噪消失。 +runner 自动 summary 仍保留 `PASS_PENDING_SCREENSHOT_REVIEW`,人工结论单列于此,不篡改原证据。 +证据目录:`C:/Users/geekerwan/.codex/tmp/magma-inproc-fix/Magma-inproc-38919d45/`,含 +`final.png`、`pause.png`、游戏/library/logcat日志、boot-id、PID生命周期与 `summary.json`。 + +- 最终设备 `libMobileGL.so` SHA256:`5a264098f8916e811cd76ce82c3727d4f9a4a426a7b68b2fa812221e2ea41383`。 +- APK SHA256:`4b42b0f85b8f83e6648cc24665a8b5fbe83e7420b04459abe7507e32e2e8aba6`。 +- 同 APK GLES inproc:32.835秒进世界、60.287秒稳定窗口、10920帧,约181.134 FPS,人工验图通过。 +- 同 APK Magma monolith:32.795秒进世界、61.574秒稳定窗口、7080帧,约114.984 FPS,人工验图通过。 +- 三组均无定频,天气/时段在变化;FPS仅记录,不能据此建立严格性能倍率。三组rsp窗口均为零。 +- 分工独立复核覆盖了buffer同步/生命周期、binding布局、native blit资源销毁、push constants/SPIR-V及状态失效;没有放宽角色守卫。 +- 额外CLI只读审查扫描未返回最终结论,已停止,**不计为通过的审查门**。工具元数据实际模型为gpt-5.6-sol,未冒称异模型族;状态保存在证据根`review/status.json`。本轮不是P7阶段收官,未替换原P5f已完成的阶段终审。 + +## 5. 仍保留的边界 + +XFB buffer capture 仍在 `buffer-legacy-arm` 边界;client vertex arrays 仍属 P8。需要 UBO +重打包但起点/复制尾部不能满足4字节对齐时,仍为 `uniform-buffer-byte-tail@P7`;不满足 +native alignment 的 SSBO/atomic/texel range,以及超出 native range/format 的形状仍具名拒绝, +未实现 writable range 的额外 copyback 方案。PackedFloat mipmap 与其他已登记格式债继续保留。 +这次游戏可用不等于 P7 全部完成,也没有改变 P6/P12 的跨进程真窗口边界。 + +## 6. 交付与设备状态 + +修复已合入`feat/disaggregated`;被测APK保存在 +`C:/Users/geekerwan/.codex/tmp/magma-inproc-fix/FCL-magma-inproc-38919d45.apk`,已安装到指定FCL包。 +每组有不同boot-id,设备实际库hash与APK一致;三组共173个stats窗口全部rsp=0,只有inproc组 +有真实vbs。人工验图汇总`final-device-summary.json`保留机器原始summary,不篡改其待验图标记。 + +测试结束从菜单保存退出,恢复原`mg_transport.txt=inproc`和空`mg_env.txt`并核hash。 +现有FCL测试接线只有Espryt选项读这两个文件,Magma inproc测试通过该入口覆盖BACKEND_TYPE; +直接选择旧内置Magma选项仍默认monolith,不能只凭UI名称判断transport。父仓原冲突索引、 +用户Gradle修改和游戏数据未清理;本轮没有修改FCL源代码或推进P6。