3.1 KiB
3.1 KiB
STEP-109 V23 CPU FieldSnapshot 深比较快路 v1
日期:2026-10-10(JST) 状态:进行中(源码已改;Mac Native 编译及设备 CPU 对照待验)
基线
- 设备:Mac.lan,仓库 /Users/tei/dev/MapLibreParticleLab。
- 分支:particle/main;起点 HEAD:5b8bdfbfbb4263fe12a060e77bc310cf77f27d61;起点工作区干净。
- 已发布基线:Android / RN 13.6.1-particle.23,iOS 6.29.0-particle.23;正式 V23 Tag、Source Lock 及制品均保持不变。
- V21 FZG1-2 曾有天气持续运行高 CPU 与疑似浮点数组比较样本;不是 V23 的测量结果。
调查依据
- render_particle_validation_layer.cpp 稳定每帧通过 sameFieldGpuEndpoint() 比较 T0/T1,比较包含整个 vector 与 valid。
- render_weather_color_layer.cpp 稳定每帧通过 sameFieldGpuContent() 比较完整 scalar/vector/valid。
- V23 源码中已保留 STEP-090 Fast Path;STEP-102/106 已处理部分 RenderSegment Placement 语义,不对 V23 再次假设 cache-invalid。
本次非正式修改
- ParticleGpuResources 记录与真实 GPU T0/T1 槽位相应的 shared_ptr。
- WeatherColor Resources 同样记录两帧快照身份。
- 相同不可变 shared_ptr 且资源代际未变时,跳过 O(N) 深比较。
- 新快照对象、窗口更换、旧资源不存在时保留严格内容/端点对比。
- 只有真实纹理安装成功或严格等价比较后更新资源绑定身份;clear、context loss 与资源重建自动丢弃旧身份。
- 保留 T0/T1、MIX、时间跳转、窗口重用、编码/内容身份、双平台 Renderer 语义。
- 未改公共 API、RN、JS/TS、RenderSegment 安全 Gate、任何发行制品。
构建与验收
- git diff --check PASS;只修改 2 个 C++ 文件。
- Mac Metal Native Core 编译:NOT COMPLETED / 用户验收前主动中止。
bazel build -c opt --//:renderer=metal //:mbgl-core因触发 649 个通用 Core actions 的大量重编译,尚未走到构建成功/失败结论;已中断 Bazel 客户端并核对其 PID 退出。日志 /tmp/maplibre_step109_cpu_field_identity_bazel_20261010.log。此项不能写为 PASS。 - C++ directed regressions(snapshot identity、new-object differing payload、window shift、clear/reload)。
- Android OpenGL / FZG1-2 同场景 V23 原版与修改版 CPU A/B:尚未执行。
- iOS Metal iPad 实际天气场/时间窗回归:尚未执行。
- 真实性能目标:至少比较相同场数据、帧率、图层与设备条件下的平均进程、RenderThread、JS CPU;同时检查 FieldTextureUpload / SimulationReset 计数无异常增加。
交付边界
本 Step 不创建新发行版本,不覆盖不可变 V23 产物。开发态代码已通过 scoped commit 2aae38f4023f2ef682c9039c93dfa1e96b0e6e1b 并 push 到 origin/particle/main(远端 SHA 回读 PASS);这不是 Native 编译、性能或正式版本验收。正式使用仍须完成编译/设备测试、另立版本并执行 GSRL Source Lock、SHA-256、接收验收。若编译失败,则先记录错误并修复,不得宣称优化 PASS。