From b127822301c26e75d8d73fe0c7e9d96e1f28ce4a Mon Sep 17 00:00:00 2001 From: OpenAI Codex Date: Thu, 3 Sep 2026 13:44:45 +0800 Subject: [PATCH] docs: close GPU particle time interpolation validation --- .../STEP-041_Android双时间片GPU时间插值_v1.md | 6 ++--- .../STEP-043A_40-02C源码审查后最小修正_v1.md | 4 ++-- ...-043B_40-02C_Android到Core_MIX属性桥接_v1.md | 4 ++-- ...02C_Android双时间片GPU时间插值最终修正_v1.md | 4 ++-- ...´片GPU时间插值_最终验收关闭_Codex完成报告_v1.md | 23 +++++++++++++++++++ ...ndroid到Core_MIX属性桥接_Codex完成报告_v1.md | 4 ++++ 粒子开发记录.md | 6 +++++ 7 files changed, 42 insertions(+), 9 deletions(-) create mode 100644 docs/报告/40-02_双时间片GPU时间插值_最终验收关闭_Codex完成报告_v1.md diff --git a/docs/50_Step记录/STEP-041_Android双时间片GPU时间插值_v1.md b/docs/50_Step记录/STEP-041_Android双时间片GPU时间插值_v1.md index d490ea215..45b485b61 100644 --- a/docs/50_Step记录/STEP-041_Android双时间片GPU时间插值_v1.md +++ b/docs/50_Step记录/STEP-041_Android双时间片GPU时间插值_v1.md @@ -1,10 +1,10 @@ # STEP-041 Android 双时间片 GPU 时间插值 -- 状态:`IMPLEMENTED / WAITING FOR ANDROID VALIDATION` +- 状态:`CLOSED / PASS` - 前置:STEP-040(40-01)已在 Android OpenGL 手工验收为 PASS。 - 目标:在唯一正式链路 `RasterArraySource -> RasterParticleLayer -> GPU Simulation -> Trail -> Composite` 中,把单 Field 扩展为 T0/T1 两个独立 GPU Field,并在 State pass 对速度作 GPU `mix`。 - 实现提交:`4675a8a29dd6fc7b684bfb64913a8c9075ad8583`(`feat: add GPU particle time interpolation`)。 -- 40-02C 最终修正:原实现的 MIX fallback、GPU identity 与 NORTH Mercator displacement 问题由 STEP-043 修正;在 Android T1--T10 前仍不得判 PASS。 +- 40-02C 最终修正:原实现的 MIX fallback、GPU identity 与 NORTH Mercator displacement 问题由 STEP-043/043A/043B 修正;Android T1--T10 已完成并全部 PASS。 ## 本轮实现 @@ -18,7 +18,7 @@ - Linux OpenGL 受影响 Core 与 source test object:通过。 - shader generator、二次生成稳定性、C++ format、`git diff --check`:通过。 -- 未运行 Android Gradle、ADB、APK 安装或设备测试;T1--T10 必须由用户在 Android OpenGL 上验证。 +- Codex 未运行 Android Gradle、ADB、APK 安装或设备测试;用户已在 Android x86_64 OpenGL 完成 T1--T10,全部 PASS。 ## 不在本 Step 范围 diff --git a/docs/50_Step记录/STEP-043A_40-02C源码审查后最小修正_v1.md b/docs/50_Step记录/STEP-043A_40-02C源码审查后最小修正_v1.md index f819c94da..c74439871 100644 --- a/docs/50_Step记录/STEP-043A_40-02C源码审查后最小修正_v1.md +++ b/docs/50_Step记录/STEP-043A_40-02C源码审查后最小修正_v1.md @@ -1,7 +1,7 @@ # STEP-043A 40-02C 源码审查后最小修正 - 基线:`5dd4dbf4967c1238e1bde8fb66fe3dbd2c4fe52a` -- 状态:`IMPLEMENTED / WAITING FOR ANDROID VALIDATION` +- 状态:`CLOSED / PASS` - 修正:GPU texture reuse 保留旧 backing 但消费 wanted snapshot revision;MIX_REJECTED 不再改变 timeMix;增加 Layer/Resource/Field upload/reuse/reset 生命周期日志;所有 Style reload 调用点有具体 reason。 - 检查:shader generator、Linux Core/source-test object、format、diff check 通过;未运行 Android Gradle、ADB 或设备。 -- Android 设备验证发现 Java peer lookup 对自定义 raster-particle 不适用,STEP-043B 以最小 Core property bridge 接续修正。 +- Android 设备验证发现 Java peer lookup 对自定义 raster-particle 不适用,STEP-043B 以最小 Core property bridge 接续修正;最终 T1--T10 均 PASS。 diff --git a/docs/50_Step记录/STEP-043B_40-02C_Android到Core_MIX属性桥接_v1.md b/docs/50_Step记录/STEP-043B_40-02C_Android到Core_MIX属性桥接_v1.md index 68f4a1a05..215318e96 100644 --- a/docs/50_Step记录/STEP-043B_40-02C_Android到Core_MIX属性桥接_v1.md +++ b/docs/50_Step记录/STEP-043B_40-02C_Android到Core_MIX属性桥接_v1.md @@ -1,10 +1,10 @@ # STEP-043B Android 到 Core MIX 属性桥接 -- 状态:`IMPLEMENTED / WAITING FOR ANDROID VALIDATION` +- 状态:`CLOSED / PASS` - 根因:Android `Style.getLayer()` 需要自定义 layer 的 Java peer;raster-particle Core layer 无 peer,导致 false `LAYER_NOT_READY`。 - 实现:最小 `NativeMapView.setStyleLayerFloatProperty(layerId, propertyName, value)`,JNI 通过 `Style::getLayer()` 与正式 `Layer::setProperty()` 更新 Core 属性;没有完整 RasterParticle Java peer。 - Host:MIX 不再查询 Java Layer peer,bridge 成功后才更新 `timeMix`。 -- 未运行 Android Gradle/ADB;T4--T10 待用户验收。 +- Codex 未运行 Android Gradle/ADB;用户已在 Android x86_64 OpenGL 完成 T4--T10,全部 PASS。MIX bridge 成功且无 MIX 引起的 Style reload、Field upload 或 simulation reset。 ## Android 编译修正 diff --git a/docs/50_Step记录/STEP-043_40-02C_Android双时间片GPU时间插值最终修正_v1.md b/docs/50_Step记录/STEP-043_40-02C_Android双时间片GPU时间插值最终修正_v1.md index 1f7947b33..05f9f74e1 100644 --- a/docs/50_Step记录/STEP-043_40-02C_Android双时间片GPU时间插值最终修正_v1.md +++ b/docs/50_Step记录/STEP-043_40-02C_Android双时间片GPU时间插值最终修正_v1.md @@ -1,9 +1,9 @@ # STEP-043 40-02C Android 双时间片 GPU 时间插值最终修正 -- 状态:`IMPLEMENTED / WAITING FOR ANDROID VALIDATION` +- 状态:`CLOSED / PASS` - 修正:MIX hard property-only guard、revision/content identity 分离、A/B→B/C content reuse、Mercator Y displacement 与 north-positive V 的边界转换。 - 规则:generation 仍是 source revision;GPU reuse 比较 fixtureID、dataVersion、已验证 `fieldSha256` 和 grid compatibility。MIX 未就绪只记录 `MIX_REJECTED`,不 reload style。 - 检查:shader generator、Linux Core/source test object、format、diff check 通过;未运行 Android Gradle/ADB。 -- Android:T1--T10 仍待用户执行,不能判 PASS。 +- Android:用户已完成 x86_64 OpenGL T1--T10,全部 PASS;MIX property-only、B→C reuse 与 lifecycle 均无异常 reset。 - STEP-043A 源码审查发现 reuse revision、MIX reject state、diagnostics 与 Style reason 缺口,均已最小修正;状态不变。 - STEP-043B 处理 Android Java Layer peer 缺失导致的 false LAYER_NOT_READY,改用 Android→Core property bridge;状态不变。 diff --git a/docs/报告/40-02_双时间片GPU时间插值_最终验收关闭_Codex完成报告_v1.md b/docs/报告/40-02_双时间片GPU时间插值_最终验收关闭_Codex完成报告_v1.md new file mode 100644 index 000000000..86c7e189b --- /dev/null +++ b/docs/报告/40-02_双时间片GPU时间插值_最终验收关闭_Codex完成报告_v1.md @@ -0,0 +1,23 @@ +# 40-02 双时间片 GPU 时间插值最终验收关闭报告 + +## 最终状态 + +`40-02`、`40-02C`、`STEP-043B`:`CLOSED / PASS`。 + +最终代码基线为 `4703d87e2305c2f7c13d605c296e900d7a05e408`,STEP-043B 使用 `RasterParticleLayer::setTimeMix(float)` 完成 Android→Core property bridge。 + +用户已手工完成 Android x86_64 OpenGL Debug 编译、APK 安装和 App 启动;Codex 本收尾任务未运行 Android Gradle、ADB 或设备操作,未修改 runtime,也未加入/执行 Jest。 + +## T1--T10 + +- T1 EAST、T2 NORTH:PASS;`U=east-positive`、`V=north-positive` 且 shader Mercator 边界 `dy=-v` 正确。 +- T3 TIME_WINDOW:PASS;Layer/resource 保持,simulation 未 reset。 +- T4 MIX 50%、T5 MIX 100%、T6 MIX 0:PASS;均为 property-only,零 Style reload、Field upload、simulation reset。 +- T7 DISABLE→MIX:PASS;`MIX_REJECTED reason=DISABLED`,旧 timeMix 保持。 +- T8 DISABLE→ENABLE:PASS;资源重建符合 RESOURCE_CREATE 生命周期。 +- T9 ADVANCE B→C:PASS;`OLD_T1→NEW_T0` reuse,只上传 C,reset delta 为零。 +- T10 综合回归:PASS;Layer/resource identity 连续,未出现异常 simulation reset。 + +ADVANCE 后 `uniform-north + vortex` 的 MIX 50% 局部低速或近零速是逐点向量插值的正常结果:局部 north 与 vortex 向量可相反,不代表 GPU 卡死、reuse 污染或 reset。 + +APK x86_64 单 ABI 约 696.5 MiB;其中 `libmaplibre.so` 约 338 MiB。该 packaging/ZIP 中间产物体积技术债不影响安装、启动或本阶段功能验收,独立后续处理,不阻塞本次关闭。 diff --git a/docs/报告/STEP-043B_40-02C_Android到Core_MIX属性桥接_Codex完成报告_v1.md b/docs/报告/STEP-043B_40-02C_Android到Core_MIX属性桥接_Codex完成报告_v1.md index e6332d975..2340f2a28 100644 --- a/docs/报告/STEP-043B_40-02C_Android到Core_MIX属性桥接_Codex完成报告_v1.md +++ b/docs/报告/STEP-043B_40-02C_Android到Core_MIX属性桥接_Codex完成报告_v1.md @@ -26,3 +26,7 @@ cd /mnt/sda1/MapLibreParticleLab/platform/android ``` APK:`./MapLibreAndroidTestApp/build/intermediates/apk/opengl/debug/MapLibreAndroidTestApp-opengl-debug.apk`。 + +## 最终 Android 验收关闭 + +用户已完成 Android x86_64 OpenGL Debug 编译、安装、启动和 T4--T10:全部 PASS。MIX 0/50/100 均得到 bridge `SUCCESS` 与 `TIME_MIX_UPDATE`,没有 MIX 引起的 Style reload、Field upload 或 simulation reset;DISABLED reject 保持旧 timeMix;B→C 保持 OLD_T1→NEW_T0 reuse 且只上传 C。STEP-043B / 40-02C / 40-02 现为 `CLOSED / PASS`。Codex 未运行 Android Gradle、ADB 或设备操作,未加入/执行 Jest。 diff --git a/粒子开发记录.md b/粒子开发记录.md index efb9172d2..b0a3f4e94 100644 --- a/粒子开发记录.md +++ b/粒子开发记录.md @@ -252,3 +252,9 @@ ## 2026-09-03 — STEP-043B Android→Core MIX 属性桥接 - 自定义 raster-particle 没有 Android Java Layer peer,`Style.getLayer()` 不能作为 Core layer readiness;新增最小 NativeMapView bridge 走正式 Core `Layer::setProperty`,MIX 仅 bridge 成功后更新状态。 + +## 2026-09-03 — 40-02 双时间片 GPU 时间插值 Android 最终验收完成 + +- STEP-043B 最终使用 `RasterParticleLayer::setTimeMix(float)`;Android x86_64 OpenGL Debug 编译、安装、启动通过,T1--T10 全部 PASS。 +- A/B→B/C GPU texture reuse、MIX property-only、DISABLE/ENABLE 生命周期通过;`uniform-north + vortex` 的 MIX 50% 局部低速/近零速是正常逐点插值。 +- 单 ABI APK 约 696.5 MiB 是独立 packaging 技术债,不阻塞本阶段。40-02 / 40-02C / STEP-043B 正式 `CLOSED / PASS`。