mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-11-07 01:53:24 +09:00
[docs, tools] (P7): iris-census-1135c664 - all 231 Iris-corpus replays (39 cases x 2 backends x monolith/inproc/spawn) live at head, split byte-identical to monolith on 70/77 rows, texture-remint-pull never reached, so the P9 exception list is empty
This commit is contained in:
@@ -0,0 +1,224 @@
|
||||
# Iris trace 普查 @ `1135c664`(P7 wave 3 包 E1,主机 lavapipe)
|
||||
|
||||
> 计划:[`PLAN-PH-P34B-P7.md`](PLAN-PH-P34B-P7.md) §1.2 的「门:每一个 Iris trace」行与 §3 wave 3 的「Iris trace 普查 + P9 例外表」;
|
||||
> [`ROADMAP.md`](../../ROADMAP.md) P3b/P4b 行门列「每一个 Iris trace(欠当前头的结果与 `texture-remint-pull` 的 P9 例外表)」;
|
||||
> [`CONTRACT-P7.md`](../../../../MobileGL/MG_Remote/CONTRACT-P7.md) §11「Iris 普查的 P9 例外」。
|
||||
> 同包的另一半(`MEASUREMENTS.md` §7.2 同名重跑)写在 [`MEASUREMENTS.md`](../../MEASUREMENTS.md) §7.2 的 P7 小节。
|
||||
>
|
||||
> 树 `~/w7/p7-census-e1`,分支 `p7/census-e1`,基线 `1135c664`(`origin/feat/disaggregated` 头,含 B3)。
|
||||
> `build-split` = Release / clang / ccache / `MOBILEGL_BUILD_DISAGGREGATED=ON` `_INPROC=ON` `MOBILEGL_PIPE_PUSH=ON`
|
||||
> `MOBILEGL_BUILD_INTEGRATION_TEST=ON` `MOBILEGL_BUILD_TRACE_REPLAY=ON`,ICD 钉 `lvp_icd.json`(lavapipe / llvmpipe)。
|
||||
> 证据根(树外):`~/w7/e1-census/head-1135c664/`(`results.jsonl`、`reduced.json`、`art/<case>/<backend>[-SPLIT|-SPAWN]/{actual.png,result.json,ctest.out}`),
|
||||
> 重复轮 `~/w7/e1-census/rep{2,3}-1135c664/`,跑器 `~/w7/e1bin/census.py`(树外,未入库)。
|
||||
|
||||
## 0. 结论
|
||||
|
||||
**77 行(case × 后端)× 3 臂 = 231 次重放,231 活、0 死;split 两臂与 monolith 逐字节相同 70 / 77 行;
|
||||
`texture-remint-pull` 在 231 次里一次未触发——P9 例外表为空。**
|
||||
|
||||
| 臂 | 活(rc 0 + 过阈值) | 其中与 monolith 逐字节相同 | 分歧 | 死 |
|
||||
|---|---:|---:|---:|---:|
|
||||
| monolith | 77 / 77 | — | — | 0 |
|
||||
| inproc(`.SPLIT`) | 77 / 77 | 70 | 7 | 0 |
|
||||
| spawn(`.SPAWN`) | 77 / 77 | 70 | 7 | 0 |
|
||||
|
||||
- 7 个分歧行(§3)里,**5 行是 DirectVulkan 上确定性的、与传输无关的 monolith ≠ wire 臂**(inproc 与 spawn 三遍逐字节相同、monolith 三遍逐字节相同、二者不同;
|
||||
同一 case 的 DirectGLES 行全部 `=`;5 行里 split 臂对 golden 的 SSIM 都**高于** monolith);**1 行**(`iris-derivative` × DirectGLES)是 ~26.9k px 的系统差叠在 monolith 自身的逐跑噪声上;
|
||||
**1 行**(`iris-derivative` × DirectVulkan)是三臂各自的逐跑噪声(第 3 遍三臂逐字节相同)。
|
||||
- 231 次的每一份角色日志(`output/mobilegl.client.log`,两进程臂另加 `mobilegl.server.log`):`Fatal{` **0**、`Refuse{` **0**、`decline`(不分大小写)**0**;
|
||||
`MGWIRE-DECLINES` 行 **0**(该行只在有 decline 或挂起上传时打印,`WireDeclineTally.h:105-115`);出现的 `MGWIRE-` 行全部是 B3 的
|
||||
`MGWIRE-FLOOR[shutdown] unsoundSerialComplete=0`。
|
||||
- 对 P5b(`348d22a4`,只有 inproc 臂,79 条含 `rd12` × 2):**72 过 / 6 abort / 1 failed → inproc 77 / 0 / 0、spawn 77 / 0 / 0**(§6)。
|
||||
- 设备排除的三例(ID-P7-12)在主机三臂全活且逐字节相同(§5)。
|
||||
|
||||
## 1. 口径
|
||||
|
||||
- **分母。** 目录 `trace_cases.json` 40 例;CI split 子集 39 例(`split_trace_cases`,`trace_cases.py:296`;`split` 缺省随 `ci`,`trace_cases.py:110`),
|
||||
即设备矩阵用的同一 39 例;不在子集的只有 `minecraft-1.21.4-rd12-odinlite-in-world`(`ci: false`)。`iris-iterationrp` 的 `ci_backends` 只有 DirectVulkan,
|
||||
所以 39 × 2 − 1 = **77 行**。`build-split` 实际注册 236 条 `MobileGLTraceReplay.*`:split 臂按两个后端无条件注册(`tools/trace_replay/CMakeLists.txt:498-501`),
|
||||
多出的 `iterationrp × DirectGLES` 三臂与 `rd12` 两条 monolith 不在 CI 矩阵,本次未跑。
|
||||
- **三臂。** monolith = `MobileGLTraceReplay.<case>.<backend>`(同一 disaggregated 库,transport 不设 → Monolith);inproc = `.SPLIT`;spawn = `.SPAWN`
|
||||
(`libMobileGLServer.so`)。`run_trace_case.cmake` 的 transport 解析断言与 Fatal 断言照常生效。
|
||||
- **旋钮 = CI 的旋钮**(`.github/workflows/test.yml:2734-2753`,retrace-split 作业与 monolith retrace 作业同一组):DirectVulkan 全部导出
|
||||
`MOBILEGL_MAGMA_R11G11B10F_FALLBACK=1`;`improved-transparency` × DV 加 `MOBILEGL_MAGMA_DISABLE_BLENDED_DEPTH_WRITE=1`;`iterationrp` × DV 加三个 iterationRP 旋钮。
|
||||
其余 `MOBILEGL_*` 一律清掉;`MOBILEGL_IPC_STAGE_MB` 用默认 32 MiB(P5b 的 trace 普查显式 256 MiB,本次不需要)。
|
||||
- **逐字节判据。** `actual.png` 的 SHA-256 相等即 `=`;不等时用 `tools/trace_replay/compare_actuals.py compare`(retrace 门同一 SSIM)给 actual-vs-actual 的 SSIM 与 `mismatch_pixels`,
|
||||
再用同一解码器数出分歧像素的 bbox 与最大通道差。
|
||||
- **日志普查。** 每条的两份角色日志逐行 grep `Fatal{`、`MGWIRE-`、`Refuse{`、`decline`(不分大小写)。控制台转录不算(配置里控制台 sink 编译掉,是假零)。
|
||||
- **运行。** 每条单独 `ctest --test-dir build-split -R '^<name>$' --timeout 2400`(为了逐条导出 CI 旋钮),同时 2 条,`LP_NUM_THREADS=4`,进程树 RSS 守护 20 GiB
|
||||
(从未触发;峰值 2.45 GiB,`iterationrp` × DV × spawn)。
|
||||
- **时间与负载。** 普查墙钟 **2254 s(37.6 min)**,2026-09-22 20:12:07–20:49:41(UTC−4);231 条单条耗时之和 4501 s。主机 28 逻辑核、与另外五个代理共享,
|
||||
本次占用 ≤ 2 个重放 × 4 个 llvmpipe 线程;运行期间 1 分钟 loadavg 最低 3.96 / 平均 16.6 / 最高 30.3(每 30 s 采样,76 点)。重复轮(§3)2 × 21 条,墙钟 114 s + 150 s。
|
||||
|
||||
## 2. 逐行结果
|
||||
|
||||
`ssim` = 对 golden(`result.json`),9 位小数。`=` = actual.png 与 monolith 逐字节相同;`≠ a / n px` = actual-vs-actual SSIM 与不等像素数。
|
||||
`F/R/D` = 两份角色日志合计的 `Fatal{` / `Refuse{` / `decline` 行数。`MGWIRE-FLOOR` 行全部是 `unsoundSerialComplete=0`(DirectVulkan 才有;两进程臂打在 server 日志)。
|
||||
|
||||
| # | case | 后端 | monolith ssim | inproc ssim | spawn ssim | inproc vs mono | spawn vs mono | F/R/D 行(mono · inproc · spawn) | `MGWIRE-FLOOR` 行(mono · inproc · spawn) | 秒(mono · inproc · spawn) |
|
||||
|---:|---|---|---:|---:|---:|---|---|---|---|---|
|
||||
| 1 | `OpenRA` | GLES | 1.000000000 | 1.000000000 | 1.000000000 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 2 · 2 · 2 |
|
||||
| 2 | `OpenRA` | Vulkan | 1.000000000 | 1.000000000 | 1.000000000 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 1 · 1 · 1 | 2 · 2 · 2 |
|
||||
| 3 | `minecraft-1.21.4-startup` | GLES | 0.999999662 | 0.999999662 | 0.999999662 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 1 · 1 · 1 |
|
||||
| 4 | `minecraft-1.21.4-startup` | Vulkan | 0.999999662 | 0.999999662 | 0.999999662 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 1 · 1 · 1 | 1 · 1 · 1 |
|
||||
| 5 | `minecraft-1.21.4-main-menu` | GLES | 0.997008676 | 0.997008676 | 0.997008676 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 3 · 3 · 3 |
|
||||
| 6 | `minecraft-1.21.4-main-menu` | Vulkan | 0.997008630 | 0.997008630 | 0.997008630 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 1 · 1 · 1 | 3 · 6 · 6 |
|
||||
| 7 | `minecraft-1.21.11-main-menu` | GLES | 0.993474922 | 0.993474922 | 0.993474922 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 3 · 3 · 3 |
|
||||
| 8 | `minecraft-1.21.11-main-menu` | Vulkan | 0.993474920 | 0.993474920 | 0.993474920 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 3 · 7.1 · 7.1 |
|
||||
| 9 | `minecraft-1.17-main-menu-854` | GLES | 0.999961600 | 0.999961600 | 0.999961600 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 2 · 2 · 2 |
|
||||
| 10 | `minecraft-1.17-main-menu-854` | Vulkan | 0.999961130 | 0.999961130 | 0.999961130 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 2 · 4 · 4 |
|
||||
| 11 | `minecraft-1.21.4-in-world` | GLES | 0.999976222 | 0.999976222 | 0.999976222 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 7.1 · 7.1 · 7.1 |
|
||||
| 12 | `minecraft-1.21.4-in-world` | Vulkan | 0.999976105 | 0.999976105 | 0.999976105 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 1 · 1 · 1 | 7.1 · 15.1 · 15.1 |
|
||||
| 13 | `minecraft-1.21.4-fabric-sodium-in-world` | GLES | 0.999985623 | 0.999985623 | 0.999985623 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 20 · 21 · 18 |
|
||||
| 14 | `minecraft-1.21.4-fabric-sodium-in-world` | Vulkan | 0.999986092 | 0.999986092 | 0.999986092 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 1 · 1 · 1 | 20 · 19 · 19 |
|
||||
| 15 | `minecraft-1.21.4-fabric-common-mods-in-world` | GLES | 0.999947917 | 0.999947917 | 0.999947917 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 6 · 6 · 6 |
|
||||
| 16 | `minecraft-1.21.4-fabric-common-mods-in-world` | Vulkan | 0.999947917 | 0.999951280 | 0.999951280 | ≠ 0.999997 / 39 px | ≠ 0.999997 / 39 px | 0/0/0 · 0/0/0 · 0/0/0 | 2 · 2 · 2 | 8 · 11 · 11 |
|
||||
| 17 | `minecraft-1.21.4-fabric-common-mods-inventory` | GLES | 0.999996158 | 0.999996158 | 0.999996158 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 7 · 8 · 8 |
|
||||
| 18 | `minecraft-1.21.4-fabric-common-mods-inventory` | Vulkan | 0.999996158 | 0.999996192 | 0.999996192 | ≠ 1.000000 / 17 px | ≠ 1.000000 / 17 px | 0/0/0 · 0/0/0 · 0/0/0 | 2 · 2 · 2 | 12 · 18 · 19 |
|
||||
| 19 | `minecraft-1.21.4-fabric-rei-inventory` | GLES | 0.999989912 | 0.999989912 | 0.999989912 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 56.2 · 61.2 · 66.2 |
|
||||
| 20 | `minecraft-1.21.4-fabric-rei-inventory` | Vulkan | 0.999989912 | 0.999989912 | 0.999989912 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 1 · 1 · 1 | 69.2 · 108.4 · 107.4 |
|
||||
| 21 | `minecraft-1.21.4-fabric-xaero-minimap-in-world` | GLES | 0.999999456 | 0.999999456 | 0.999999456 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 41.4 · 40.4 · 38.4 |
|
||||
| 22 | `minecraft-1.21.4-fabric-xaero-minimap-in-world` | Vulkan | 0.999999456 | 0.999999456 | 0.999999456 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 1 · 1 · 1 | 42.3 · 79.2 · 83.3 |
|
||||
| 23 | `minecraft-1.21.4-fabric-xaero-world-map-in-world` | GLES | 0.999999823 | 0.999999823 | 0.999999823 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 34.3 · 34.2 · 31.1 |
|
||||
| 24 | `minecraft-1.21.4-fabric-xaero-world-map-in-world` | Vulkan | 0.999999823 | 0.999999823 | 0.999999823 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 1 · 1 · 1 | 26 · 50.1 · 49.1 |
|
||||
| 25 | `minecraft-1.21.4-fabric-journeymap-in-world` | GLES | 0.999984122 | 0.999984122 | 0.999984122 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 32 · 36.2 · 37.2 |
|
||||
| 26 | `minecraft-1.21.4-fabric-journeymap-in-world` | Vulkan | 0.999984122 | 0.999984122 | 0.999984122 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 1 · 1 · 1 | 43.1 · 68.2 · 79.3 |
|
||||
| 27 | `minecraft-1.21.4-fabric-modernui-inventory` | GLES | 0.999996645 | 0.999996645 | 0.999996645 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 51.1 · 47.1 · 47.1 |
|
||||
| 28 | `minecraft-1.21.4-fabric-modernui-inventory` | Vulkan | 0.999996645 | 0.999996645 | 0.999996645 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 2 · 2 · 2 | 57.1 · 108.2 · 104.2 |
|
||||
| 29 | `minecraft-1.21.4-fabric-rei-inventory-normal-world` | GLES | 0.999988010 | 0.999988010 | 0.999988010 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 10 · 9 · 13 |
|
||||
| 30 | `minecraft-1.21.4-fabric-rei-inventory-normal-world` | Vulkan | 0.999988010 | 0.999988010 | 0.999988010 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 1 · 1 · 1 | 14 · 19 · 18 |
|
||||
| 31 | `minecraft-1.21.4-fabric-xaero-minimap-in-world-normal-world` | GLES | 0.999991832 | 0.999991832 | 0.999991832 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 5 · 6 · 6 |
|
||||
| 32 | `minecraft-1.21.4-fabric-xaero-minimap-in-world-normal-world` | Vulkan | 0.999991832 | 0.999991832 | 0.999991832 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 1 · 1 · 1 | 6 · 13 · 13 |
|
||||
| 33 | `minecraft-1.21.4-fabric-xaero-world-map-in-world-normal-world` | GLES | 0.999995376 | 0.999995376 | 0.999995376 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 7 · 7 · 7 |
|
||||
| 34 | `minecraft-1.21.4-fabric-xaero-world-map-in-world-normal-world` | Vulkan | 0.999995376 | 0.999995376 | 0.999995376 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 1 · 1 · 1 | 8 · 15 · 18 |
|
||||
| 35 | `minecraft-1.21.4-fabric-journeymap-in-world-normal-world` | GLES | 0.999978990 | 0.999978990 | 0.999978990 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 9 · 9 · 9 |
|
||||
| 36 | `minecraft-1.21.4-fabric-journeymap-in-world-normal-world` | Vulkan | 0.999978990 | 0.999995028 | 0.999995028 | ≠ 0.999984 / 107 px | ≠ 0.999984 / 107 px | 0/0/0 · 0/0/0 · 0/0/0 | 1 · 1 · 1 | 8 · 15 · 18 |
|
||||
| 37 | `minecraft-1.21.4-fabric-modernui-inventory-normal-world` | GLES | 0.999997315 | 0.999997315 | 0.999997315 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 10 · 10 · 10 |
|
||||
| 38 | `minecraft-1.21.4-fabric-modernui-inventory-normal-world` | Vulkan | 0.999997292 | 0.999997292 | 0.999997292 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 2 · 2 · 2 | 10 · 22 · 22 |
|
||||
| 39 | `minecraft-1.21.4-fabric-iris-bsl-in-world` | GLES | 0.997496023 | 0.997496023 | 0.997496023 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 7 · 6 · 6 |
|
||||
| 40 | `minecraft-1.21.4-fabric-iris-bsl-in-world` | Vulkan | 0.997324199 | 0.997324199 | 0.997324199 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 1 · 1 · 1 | 6 · 7 · 7 |
|
||||
| 41 | `minecraft-1.21.4-fabric-iris-makeup-ultrafast-in-world` | GLES | 0.995425520 | 0.995425520 | 0.995425520 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 4 · 4 · 4 |
|
||||
| 42 | `minecraft-1.21.4-fabric-iris-makeup-ultrafast-in-world` | Vulkan | 0.996629722 | 0.996629722 | 0.996629722 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 1 · 1 · 1 | 4 · 5 · 5 |
|
||||
| 43 | `minecraft-1.21.4-fabric-iris-super-duper-vanilla-in-world` | GLES | 0.999643966 | 0.999643966 | 0.999643966 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 8 · 8 · 7 |
|
||||
| 44 | `minecraft-1.21.4-fabric-iris-super-duper-vanilla-in-world` | Vulkan | 0.999439052 | 0.999439052 | 0.999439052 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 1 · 1 · 1 | 7 · 7 · 8 |
|
||||
| 45 | `minecraft-1.21.4-fabric-iris-sundial-lite-in-world` | GLES | 0.996300657 | 0.996300657 | 0.996300657 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 14 · 15 · 13 |
|
||||
| 46 | `minecraft-1.21.4-fabric-iris-sundial-lite-in-world` | Vulkan | 0.996284254 | 0.996284254 | 0.996284254 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 1 · 1 · 1 | 13 · 16 · 17 |
|
||||
| 47 | `minecraft-1.21.4-fabric-iris-complementary-reimagined-in-world` | GLES | 0.999503181 | 0.999503181 | 0.999503181 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 13 · 13 · 13 |
|
||||
| 48 | `minecraft-1.21.4-fabric-iris-complementary-reimagined-in-world` | Vulkan | 0.999296510 | 0.999296510 | 0.999296510 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 1 · 1 · 1 | 13 · 13 · 12 |
|
||||
| 49 | `minecraft-1.21.4-fabric-iris-complementary-unbound-in-world` | GLES | 0.999478525 | 0.999478525 | 0.999478525 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 11 · 11 · 12 |
|
||||
| 50 | `minecraft-1.21.4-fabric-iris-complementary-unbound-in-world` | Vulkan | 0.999244084 | 0.999244084 | 0.999244084 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 1 · 1 · 1 | 12 · 13 · 13 |
|
||||
| 51 | `minecraft-1.21.4-fabric-iris-mellow-in-world` | GLES | 0.999822891 | 0.999822891 | 0.999822891 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 4 · 4 · 4 |
|
||||
| 52 | `minecraft-1.21.4-fabric-iris-mellow-in-world` | Vulkan | 0.999312266 | 0.999312266 | 0.999312266 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 1 · 1 · 1 | 4 · 4 · 5 |
|
||||
| 53 | `minecraft-1.21.4-fabric-iris-nostalgia-in-world` | GLES | 0.999988313 | 0.999988313 | 0.999988313 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 12 · 12 · 13 |
|
||||
| 54 | `minecraft-1.21.4-fabric-iris-nostalgia-in-world` | Vulkan | 0.999983572 | 0.999983572 | 0.999983572 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 1 · 1 · 1 | 13 · 12 · 11 |
|
||||
| 55 | `minecraft-1.21.4-fabric-iris-bliss-in-world` | GLES | 0.998057535 | 0.998057535 | 0.998057535 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 5 · 5 · 5 |
|
||||
| 56 | `minecraft-1.21.4-fabric-iris-bliss-in-world` | Vulkan | 0.997986272 | 0.997986272 | 0.997986272 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 1 · 1 · 1 | 5 · 5 · 5 |
|
||||
| 57 | `minecraft-1.21.4-fabric-iris-chocapic-v6-lite-in-world` | GLES | 0.999992296 | 0.999992296 | 0.999992296 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 5 · 5 · 5 |
|
||||
| 58 | `minecraft-1.21.4-fabric-iris-chocapic-v6-lite-in-world` | Vulkan | 0.995753250 | 0.995753250 | 0.995753250 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 1 · 1 · 1 | 6 · 6 · 6 |
|
||||
| 59 | `minecraft-1.21.4-fabric-iris-iterationt-in-world` | GLES | 0.997752215 | 0.997752215 | 0.997752215 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 6 · 5 · 6 |
|
||||
| 60 | `minecraft-1.21.4-fabric-iris-iterationt-in-world` | Vulkan | 0.999198504 | 0.999209304 | 0.999209304 | ≠ 0.999987 / 10601 px | ≠ 0.999987 / 10601 px | 0/0/0 · 0/0/0 · 0/0/0 | 1 · 1 · 1 | 6 · 6 · 6 |
|
||||
| 61 | `minecraft-1.21.4-fabric-iris-iterationt-nodsa-in-world` | GLES | 0.995919679 | 0.995919679 | 0.995919679 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 5 · 6 · 5 |
|
||||
| 62 | `minecraft-1.21.4-fabric-iris-iterationt-nodsa-in-world` | Vulkan | 0.998640770 | 0.998663674 | 0.998663674 | ≠ 0.999975 / 14551 px | ≠ 0.999975 / 14551 px | 0/0/0 · 0/0/0 · 0/0/0 | 1 · 1 · 1 | 7 · 8 · 9 |
|
||||
| 63 | `minecraft-1.21.4-fabric-iris-photon-v1.1-in-world` | GLES | 0.999135212 | 0.999135212 | 0.999135212 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 14 · 13 · 13 |
|
||||
| 64 | `minecraft-1.21.4-fabric-iris-photon-v1.1-in-world` | Vulkan | 0.998781357 | 0.998781357 | 0.998781357 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 1 · 1 · 1 | 13 · 15 · 15 |
|
||||
| 65 | `minecraft-1.21.4-fabric-iris-photon-v1.3b-in-world` | GLES | 0.998774617 | 0.998774617 | 0.998774617 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 14 · 15 · 15 |
|
||||
| 66 | `minecraft-1.21.4-fabric-iris-photon-v1.3b-in-world` | Vulkan | 0.998529629 | 0.998529629 | 0.998529629 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 1 · 1 · 1 | 17 · 21.1 · 22.1 |
|
||||
| 67 | `minecraft-1.21.4-fabric-iris-derivative-main-d24.4.14-in-world` | GLES | 0.996196604 | 0.996376198 | 0.996376154 | ≠ 0.999784 / 26912 px | ≠ 0.999784 / 27066 px | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 15 · 13 · 12 |
|
||||
| 68 | `minecraft-1.21.4-fabric-iris-derivative-main-d24.4.14-in-world` | Vulkan | 0.996658898 | 0.996658844 | 0.996658798 | ≠ 1.000000 / 461 px | ≠ 1.000000 / 620 px | 0/0/0 · 0/0/0 · 0/0/0 | 1 · 1 · 1 | 13 · 16 · 15 |
|
||||
| 69 | `minecraft-1.21.1-neoforge-create-indirect-in-world` | GLES | 0.999961275 | 0.999961275 | 0.999961275 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 11 · 12 · 11 |
|
||||
| 70 | `minecraft-1.21.1-neoforge-create-indirect-in-world` | Vulkan | 0.999956667 | 0.999956667 | 0.999956667 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 1 · 1 · 1 | 8 · 13 · 13 |
|
||||
| 71 | `minecraft-1.21.1-neoforge-create-instancing-in-world` | GLES | 0.999957572 | 0.999957572 | 0.999957572 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 7 · 9 · 9 |
|
||||
| 72 | `minecraft-1.21.1-neoforge-create-instancing-in-world` | Vulkan | 0.999952470 | 0.999952470 | 0.999952470 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 1 · 1 · 1 | 8 · 14 · 13 |
|
||||
| 73 | `improved-transparency-minecraft-26.3` | GLES | 1.000000000 | 1.000000000 | 1.000000000 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 118.3 · 51.1 · 68.2 |
|
||||
| 74 | `improved-transparency-minecraft-26.3` | Vulkan | 0.999914064 | 0.999914064 | 0.999914064 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 65.2 · 147.3 · 122.2 |
|
||||
| 75 | `minecraft-1.21.4-fabric-iris-iterationrp-in-world` | Vulkan | 0.995833421 | 0.995833421 | 0.995833421 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 1 · 1 · 1 | 14 · 15 · 15 |
|
||||
| 76 | `minecraft-1.21.4-fabric-iris-bsl-esc-menu-854` | GLES | 1.000000000 | 1.000000000 | 1.000000000 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 81.1 · 84.1 · 81.1 |
|
||||
| 77 | `minecraft-1.21.4-fabric-iris-bsl-esc-menu-854` | Vulkan | 0.998402027 | 0.998402027 | 0.998402027 | = | = | 0/0/0 · 0/0/0 · 0/0/0 | 0 · 0 · 0 | 63.1 · 69.1 · 69.1 |
|
||||
|
||||
## 3. 分歧:7 行 × 2 臂
|
||||
|
||||
逐格的「第一可观测分歧」是像素(本包无产品代码范围,未做逐 draw 二分)。「三遍」= 本普查 + `rep2` + `rep3` 三轮同条目的 `actual.png` 摘要(前 8 位),
|
||||
像素数一律对**第 1 轮 monolith** 计。
|
||||
|
||||
| # | case × 后端 | 臂 | 第一可观测分歧(对 monolith 第 1 轮) | 三遍摘要(monolith / inproc / spawn) | golden SSIM mono → split | 读法 |
|
||||
|---:|---|---|---|---|---|---|
|
||||
| 1 | `fabric-common-mods-in-world` × DV | inproc、spawn | 39 px,bbox x 704–709 / y 88–127,最大通道差 66;actual-vs-actual SSIM 0.999997 | `86f4e1ae`×3 / `1e609e9b`×3 / `1e609e9b`×3 | 0.999947917 → 0.999951280 | 确定性、与传输无关 |
|
||||
| 2 | `fabric-common-mods-inventory` × DV | inproc、spawn | 17 px,x 704–709 / y 89–127,最大差 12;SSIM 1.000000(6 位) | `04f2c7ed`×3 / `4259fcdf`×3 / `4259fcdf`×3 | 0.999996158 → 0.999996192 | 同上,与 #1 同一屏幕列 |
|
||||
| 3 | `fabric-journeymap-in-world-normal-world` × DV | inproc、spawn | 107 px,x 704–841 / y 64–168,最大差 115;SSIM 0.999984 | `db12b2ac`×3 / `4e18261e`×3 / `4e18261e`×3 | 0.999978990 → 0.999995028 | 同上 |
|
||||
| 4 | `fabric-iris-iterationt-in-world` × DV | inproc、spawn | 10 601 px,全帧 bbox 0–846 / 0–478,最大差 29;SSIM 0.999987 | `3402c31a`×3 / `f4b7ac7c`×3 / `f4b7ac7c`×3 | 0.999198504 → 0.999209304 | 同上 |
|
||||
| 5 | `fabric-iris-iterationt-nodsa-in-world` × DV | inproc、spawn | 14 551 px,0–850 / 0–478,最大差 65;SSIM 0.999975 | `0a8d24db`×3 / `8f2e3506`×3 / `8f2e3506`×3 | 0.998640770 → 0.998663674 | 同上 |
|
||||
| 6 | `fabric-iris-derivative-main-d24.4.14-in-world` × GLES | inproc | 26 912 px,13–853 / 0–477,最大差 56;SSIM 0.999784 | `168c9d95`,`b128d91b`,`b128d91b` / `ebbe8e9d`×3 / — | 0.996196604 → 0.996376198 | 系统差 + monolith 自身噪声(两轮 monolith 相差 630 px、最大差 3) |
|
||||
| 6 | 同上 | spawn | 27 066 / 27 290 / 26 912 px(三遍),最大差 56 | — / — / `758a247d`,`3ac060ec`,`ebbe8e9d` | 0.996196604 → 0.996376154 | 同一系统差,spawn 另有逐跑噪声;第 3 遍与 inproc 逐字节相同 |
|
||||
| 7 | `fabric-iris-derivative-main-d24.4.14-in-world` × DV | inproc、spawn | 461 / 620 px(第 1 遍),最大差 ≤ 3 | `af950bf9`,`6ebc82be`,`c966f682` / `bdf82617`,`20546f48`,`c966f682` / `03a75145`,`6b4a2770`,`c966f682` | 0.996658898 → 0.996658844 / …798 | **不是分歧**:三臂各自逐跑不稳,第 3 遍三臂逐字节相同 |
|
||||
|
||||
**读法。**
|
||||
|
||||
- **#1–#5(DirectVulkan,确定性)**:inproc 与 spawn 三遍逐字节相同 → 与传输无关;同 case 的 DirectGLES 行 `=` → 不是 trace 或 client 半边的事;
|
||||
monolith 与 wire 臂在 Magma 里走的是两条绘制路径(`VulkanRenderer::SetupDraw` 在非 monolith 传输下直接转 `SetupWireDraw`,`VulkanRenderer.cpp:7059-7066`;
|
||||
ROADMAP P7 行 ID-P7-5 记的就是这一分叉),差异落在这两条路径之间。5 行里 split 对 golden 都**更近**,#1–#3 的分歧像素都落在屏幕右侧 x ≥ 704、y 64–168 的同一块区域。
|
||||
没有任何一行碰到 P9 机制(§4 的站点 0 触发)。门 1 的 trace 半边(`CONTRACT-P7.md` §2.4:78 条 DV split 行达阈值)不受影响——14 个分歧格全部过阈值。
|
||||
- **#6(`iris-derivative` × DirectGLES)**:P5b 在这一格停在 `Fatal{UnmigratedEmulation, "texture-remint-pull"}`;在头上该站点**未被到达**
|
||||
(transport 下 `MGPipeUnmigratedEmulation` 无条件 `MGLOG_F` + `abort`,`PipeApply.cpp:3517-3524`,日志里没有这一行即没有到达),所以这 26.9k px **不是 remint 拉取**。
|
||||
monolith 自身在这条 trace 上两轮就不逐字节(630 px、最大差 3),系统差(最大差 56)比噪声大一个量级、split 对 golden 更近。**未归因**,记在 §7。
|
||||
- **#7**:噪声,不是分歧;列出是因为单遍普查会把它读成分歧。
|
||||
|
||||
## 4. P9 例外表
|
||||
|
||||
**头上主机口径下,没有任何 case 因 `texture-remint-pull` 或其它 P9 范围的机制而在 split 臂上与 monolith 分歧、abort 或被排除——例外表为空。**
|
||||
下表是 P9 行可以直接指向的站点清单与本次读数(所有站点在 transport 下都经同一个无条件 Fatal 臂 `PipeApply.cpp:3517-3524`,所以「0 触发」是可证的):
|
||||
|
||||
| 机制 | 站点 | 归属 | 231 次重放中触发 | P5b 时停在它上面的 case | 头上读数 |
|
||||
|---|---|---|---:|---|---|
|
||||
| `texture-remint-pull`(`RequireImageBindableStorage` 的重上传,server staged 谓词 / N-4 标记) | `MobileGL/MG_Backend/DirectGLES/Managers.cpp:6446`、`MobileGL/MG_Backend/DirectGLES/Managers.cpp:6463` | P9(纹理拉取,`TextureRemintPullScenario`)/ P8(仿真下放) | **0** | `create-indirect` × GLES、`iris-derivative` × GLES、`iris-photon-v1.3b` × GLES | 三格两臂都活;`create-indirect`、`photon-v1.3b` 与 monolith 逐字节相同;`derivative` 见 §3 #6(非 remint) |
|
||||
| `get-tex-image-shadow` | `MobileGL/MG_Backend/DirectGLES/DirectGLES.cpp:14974` | P9(回读) | 0 | — | — |
|
||||
| `copy-image-shadow-mirror` | `MobileGL/MG_Backend/DirectGLES/DirectGLES.cpp:13251` | P8 | 0 | — | — |
|
||||
| `generate-mipmap-storage` / `-cpu-fallback` / `-cpu-filter` | `MobileGL/MG_Backend/DirectGLES/DirectGLES.cpp:11561`、`MobileGL/MG_Backend/DirectGLES/DirectGLES.cpp:12802`、`MobileGL/MG_Backend/DirectGLES/DirectGLES.cpp:12890` | P8 | 0 | — | — |
|
||||
|
||||
含义:P3b/P4b 门「每一个 Iris trace」在主机上**不需要按名排除任何 case**;但语料因此**不再覆盖** remint 站点,P9 行门列的
|
||||
`TextureRemintPullScenario`(含无解用例)必须自己造出这条路径,不能指望 trace 普查兜底。设备上未测(§7)。
|
||||
|
||||
## 5. 设备排除项的主机读数(ID-P7-12,不在这里排除)
|
||||
|
||||
| case | 设备(W4 §2,monolith × DV) | 主机 monolith / inproc / spawn(DV) | 主机 monolith / inproc / spawn(GLES) | 主机 split vs mono |
|
||||
|---|---:|---|---|---|
|
||||
| `minecraft-1.21.1-neoforge-create-indirect-in-world` | 0.832(OQ-17) | 0.999956667 ×3 | 0.999961275 ×3 | 两后端两臂 `=` |
|
||||
| `minecraft-1.21.11-main-menu` | 0.165(trace 伪差) | 0.993474920 ×3 | 0.993474922 ×3 | `=` |
|
||||
| `minecraft-1.21.4-fabric-iris-photon-v1.3b-in-world` | 0.0089(ID-P7-13) | 0.998529629 ×3 | 0.998774617 ×3 | `=` |
|
||||
|
||||
三例都是设备事实(Adreno 830 驱动 / 本机 UBO 对齐),主机三臂全活、逐字节相同。附:`iris-bsl-esc-menu-854` 两后端三臂全活、`=`,DV × inproc 进程树峰值 1.16 GiB——
|
||||
设备上 spawn/inproc 的 server 内存死(ID-P7-32,M2)在主机 lavapipe 的这台 88 GiB 机器上不表现为失败,不能当作 M2 的证据。
|
||||
`create-indirect` × DV 在 P5b 的 llvmpipe 上 RSS > 60 GiB 被守护杀死,本次三臂峰值 0.65–0.75 GiB、8–13 s。
|
||||
|
||||
## 6. 与 P5b 的逐格比对(`348d22a4`,`~/w7/p5b-final-census-348d22a4/trace-transitions.json`,inproc 臂、trace 显式 256 MiB)
|
||||
|
||||
| 条目 | P5b 首阻塞 | 头 inproc | 头 spawn |
|
||||
|---|---|---|---|
|
||||
| `create-indirect` × GLES | `Fatal{UnmigratedEmulation, "texture-remint-pull"}` | 活,`=` | 活,`=` |
|
||||
| `create-indirect` × DV | llvmpipe RSS > 60 GiB 守护杀(failed) | 活,`=` | 活,`=` |
|
||||
| `iris-bsl-esc-menu-854` × GLES | `Fatal{InitialBytesNotCarried, "resource_respecify"}` | 活,`=` | 活,`=` |
|
||||
| `iris-derivative` × GLES | `Fatal{UnmigratedEmulation, "texture-remint-pull"}` | 活,≠(§3 #6) | 活,≠(§3 #6) |
|
||||
| `iris-photon-v1.3b` × GLES | `Fatal{UnmigratedEmulation, "texture-remint-pull"}` | 活,`=` | 活,`=` |
|
||||
| `rd12-odinlite` × GLES / DV | `InitialBytesNotCarried` / `Fatal{BarrierTimeout, "Present"}` | 不在分母(`ci: false`),未跑 | 同左 |
|
||||
|
||||
P5b 的 72 个通过格在头上两臂全活。
|
||||
|
||||
## 7. 未跑 / 未答
|
||||
|
||||
- **TCP 臂**:`MOBILEGL_TRACE_TCP_ENDPOINT` 未配置(`tools/trace_replay/CMakeLists.txt:503-506` 只在配置时注册),本普查无 TCP 读数。
|
||||
- `rd12-odinlite`(`ci: false`)与 `iterationrp` × DirectGLES(已注册、不在 CI 矩阵)未跑;verify 臂不在本包。
|
||||
- 逐 draw 二分:§3 #1–#6 的第一条分歧 draw 未定位;#6 的系统差未归因(候选方向:monolith 自身在该 trace 上不确定,先要一个确定的 monolith 对照)。
|
||||
- 三遍逐字节只对 7 个分歧行做了;其余 70 行是单遍 `=`。
|
||||
- 设备:本包全在主机;设备上的 P9 例外(若有)由 wave 4 的门 3 终局跑回答。
|
||||
|
||||
## 8. 复现
|
||||
|
||||
```bash
|
||||
bash ~/w7/notes/tools/p7_worktree.sh census-e1 1135c664
|
||||
cmake -S ~/w7/p7-census-e1 -B ~/w7/p7-census-e1/build-split -DMOBILEGL_BUILD_TRACE_REPLAY=ON
|
||||
ninja -C ~/w7/p7-census-e1/build-split -j 4
|
||||
python3 ~/w7/e1bin/census.py ~/w7/e1-census/head-1135c664 -j 2 # 231 条,可续跑
|
||||
python3 ~/w7/e1bin/reduce.py ~/w7/e1-census/head-1135c664 # reduced.json + 表
|
||||
python3 ~/w7/e1bin/repcmp.py # §3 的三遍比对
|
||||
```
|
||||
|
||||
(`3rdparty/apitrace/thirdparty/*` 在新 worktree 里是未初始化的子模块,`MOBILEGL_BUILD_TRACE_REPLAY=ON` 配置前需要从已水合的树拷入。)
|
||||
Reference in New Issue
Block a user