29 KiB
Iris trace 普查 @ 3c80cd62(P7 wave 3 包 E1,主机 lavapipe)
计划:
PLAN-PH-P34B-P7.md§1.2 的「门:每一个 Iris trace」行与 §3 wave 3 的「Iris trace 普查 + P9 例外表」;ROADMAP.mdP3b/P4b 行门列「每一个 Iris trace(欠当前头的结果与texture-remint-pull的 P9 例外表)」;CONTRACT-P7.md§11「Iris 普查的 P9 例外」。 同包的另一半(MEASUREMENTS.md§7.2 同名重跑)写在MEASUREMENTS.md§7.2 的 P7 小节。树
~/w7/p7-census-e1,分支p7/census-e1,基线3c80cd62(origin/feat/disaggregated头,含 B3)。build-split= Release / clang / ccache /MOBILEGL_BUILD_DISAGGREGATED=ON_INPROC=ONMOBILEGL_PIPE_PUSH=ONMOBILEGL_BUILD_INTEGRATION_TEST=ONMOBILEGL_BUILD_TRACE_REPLAY=ON,ICD 钉lvp_icd.json(lavapipe / llvmpipe)。 证据根(树外):~/w7/e1-census/head-3c80cd62/(results.jsonl、reduced.json、art/<case>/<backend>[-SPLIT|-SPAWN]/{actual.png,result.json,ctest.out}), 重复轮~/w7/e1-census/rep{2,3}-3c80cd62/,跑器~/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.json40 例;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。 2026-09-29 P9 W2 已归因:是 monolith 的错,不是 split 的——monolith Espryt 在该 trace 上重铸一张 RGBA16F 渲染目标时重放 client 影子(全零),覆盖了 GPU 写过的纹素;split 读 GPU 层所以对。让 monolith 改放 GPU 字节后actual.png与 split 逐字节相同(SSIM 0.996196552 → 0.996376198),见../p9/W2-REMINT.md§6。 - #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 对照)。#6 已由 P9 W2 归因(monolith Espryt 重铸重放过期影子,
../p9/W2-REMINT.md§6)。 - 三遍逐字节只对 7 个分歧行做了;其余 70 行是单遍
=。 - 设备:本包全在主机;设备上的 P9 例外(若有)由 wave 4 的门 3 终局跑回答。
8. 复现
bash ~/w7/notes/tools/p7_worktree.sh census-e1 3c80cd62
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-3c80cd62 -j 2 # 231 条,可续跑
python3 ~/w7/e1bin/reduce.py ~/w7/e1-census/head-3c80cd62 # reduced.json + 表
python3 ~/w7/e1bin/repcmp.py # §3 的三遍比对
(3rdparty/apitrace/thirdparty/* 在新 worktree 里是未初始化的子模块,MOBILEGL_BUILD_TRACE_REPLAY=ON 配置前需要从已水合的树拷入。)