From db346f2844fc68e45a5e8ff3fb9f76ff8fd711cd Mon Sep 17 00:00:00 2001 From: Swung0x48 Date: Fri, 9 Oct 2026 07:42:24 -0400 Subject: [PATCH] Docs (P15): fbm2 row (pipe batch: Magma GL CPU 2.68 -> 2.62, Espryt 3.03 -> 3.00) and BSL check note. --- docs/Disaggregated/notes/perf-p15/HANDOFF.md | 12 +++++++++--- docs/Disaggregated/notes/perf-p15/SCOREBOARD.md | 13 +++++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/docs/Disaggregated/notes/perf-p15/HANDOFF.md b/docs/Disaggregated/notes/perf-p15/HANDOFF.md index e9396eae..ca7716ab 100644 --- a/docs/Disaggregated/notes/perf-p15/HANDOFF.md +++ b/docs/Disaggregated/notes/perf-p15/HANDOFF.md @@ -15,9 +15,15 @@ The plan and its measurements are in [PLAN-P15.md](PLAN-P15.md); the audit is in - 533a2564: Magma deferred clears (1c) plus coalesced pass-begin barriers (1b). - Per frame: passes 11.5 -> 4.3 (dev 4.1), barriers 15.5 -> 9.0 (dev 3.4). - Inproc +5.0 % fps, apply thread -0.17 ms; monolith GL CPU -0.09 ms. -- **In the worktree, not committed yet:** - - BuildFramebufferState memo (MOBILEGL_PIPE_FRAMEBUFFER_STATE_MEMO). A/B queued as session `fbm`. - - EmitVertexBuffers per-buffer handle reuse. +- **Landed 2026-10-09 afternoon:** + - 485dff14: pipe client batch, i.e. the per-framebuffer FB-state memo (MOBILEGL_PIPE_FRAMEBUFFER_STATE_MEMO), + handle hints, per-buffer handle reuse and the per-verb gate cache. + - c85c9439: Magma hash TLS hoist. + - Effect: H2 GL CPU Magma 2.68 -> 2.62, Espryt 3.03 -> 3.00. The profile is in SCOREBOARD (fbm2). + - 9eed5a27 / 9ff97c2e: CI branch fixes. The E1 control follows ApplierReset, and ScenarioIsolation is + listed as unarmed in verify-split. +- **Small-cut policy:** pieces below about 0.03 ms are verified by their own before/after function profile + plus a red-once, and get one H2 A/B per batch. - **Order (coordinator, 2026-10-09):** FB-state memo, then handle cache on objects, vertex input, program, samplers, accessor/TLS hoist, the ValidateForVerb dirty walk, Tracker. - No record-bypass design change until the user decides. diff --git a/docs/Disaggregated/notes/perf-p15/SCOREBOARD.md b/docs/Disaggregated/notes/perf-p15/SCOREBOARD.md index e0aa6668..99c4cf6c 100644 --- a/docs/Disaggregated/notes/perf-p15/SCOREBOARD.md +++ b/docs/Disaggregated/notes/perf-p15/SCOREBOARD.md @@ -81,6 +81,7 @@ H2 sessions: | c4 ~02:55 (10-09) | v (as c1b); w = v + cut 4 (Espryt surface-size memo, 66e3b2c1) | 321.6 (1.70) | v 0.757 / 0.85 dev (3.18); w 0.762 / 0.86 dev (3.05) | - | - | - | | c1c2 ~03:30 (10-09) | t = p15t; y = p15t + 1b + 1c (deferred clears) + cut 4 | 321.3 (1.70) | - | t 0.795 / 0.83 dev (2.83); y 0.785 / 0.82 dev (2.74)⁴ | - | t 1.025 (1.35 / 1.41)⁵; y 1.076 (1.33 / 1.24) | | fbm ~05:20 (10-09) | y (as c1c2); z = y + FB-state build memo, one entry per target | 321.7 (1.70) | y 0.770 / 0.87 dev (3.04); z 0.775 / 0.87 dev (3.04) | y 0.818 / 0.86 dev (2.65); z 0.831 / 0.87 dev (2.65) | - | - | +| fbm2 ~11:00 (10-09) | y; z (as fbm); h = y + batch h (485dff14 + c85c9439) | 319.7 (1.68) | y 0.763 / 0.86 dev (3.03); h 0.768 / 0.87 dev (3.00) | y 0.805 / 0.85 dev (2.68); z 0.798 / 0.84 dev (2.69); h 0.812 / 0.85 dev (2.62) | - | - | - **pt:** the blit view cache gives Magma inproc +1.2 % fps, with apply −0.03 ms/frame. - **c1:** cut 1 is within noise (−1.7 % fps, +0.06 ms). It engaged (the mid-frame submit is gone) but saves ≤0.04 ms; see MONOLITH-DIFF.md. @@ -98,6 +99,18 @@ H2 sessions: ⁴ y has 2 valid reps: r2 never reached the world after 3 startup deaths (signal 34 during bootstrap, a harness flake also seen on MobileGlues and other builds). ⁵ t inproc r2 is discarded: a host-side `binary_cache_builder` pulled libraries over adb inside its measurement window. +- **fbm2:** batch h moves GL CPU by -0.06 ms (Magma) and -0.03 ms (Espryt). + - Batch h: per-framebuffer FB-state memo, handle hints, per-buffer handle reuse, the cached per-verb + gate, and the Magma hash TLS hoist. + - The Magma before/after profile (render thread, ms/frame, c1c2 y-r1 -> fbm2 h-r1): + - MGPipeValidateForVerb 0.328 -> 0.282, BuildFramebufferState 0.058 -> 0.023; + - FindByLifetimeId + Acquire 0.047 -> 0.003, __emutls_get_address 0.079 -> 0.054; + - GetOrCreatePipeline 0.026 -> 0.013, MGPipeGetResourceOps 0.007 -> 0.002. + - The H2 effect is about half of the profile sum. Each piece is below the session noise (+-0.05 ms), + so the batch is measured as one. +- **c1cbsl (gpuhunt, Iris + BSL, after a cooldown):** 1c does not cost GPU time. + - t 53.8 fps (18.5 GPU ms/frame) vs y 55.7 (17.9), both at 100 % GPU busy. + - One VALID pair. The MobileGlues run (56.2) is INVALID: the GPU idled at 231 MHz in two warmup samples. - **fbm:** the first memo is within noise on both backends (CPU 2.65 / 2.65 Magma, 3.04 / 3.04 Espryt). - It engaged only partly: Magma BuildFramebufferState 0.058 -> 0.032 ms/frame, and Espryt kept missing. - The build only runs on a binding switch, so one entry per target misses on every A/B/A switch.