mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-11-07 01:53:24 +09:00
Docs (P15): Espryt BSL depth-copy and attachment-shadow items measured on device, no gain (x 51.4 vs b 51.9 fps, MobileGlues 55.8); not landed.
This commit is contained in:
@@ -30,7 +30,19 @@ The plan and its measurements are in [PLAN-P15.md](PLAN-P15.md); the audit is in
|
||||
- ca0a3b74, a cherry-pick of the coordinator's LTO commit 190580f2 on `build-opt`. The coordinator
|
||||
pushes 190580f2, so drop ca0a3b74 when rebasing.
|
||||
- a0015bad, Magma 2a + 2b. Its message carries the m2ab result, or says it is pending.
|
||||
- `wip/espryt-depthcopy` (eb7572ff, on p15impl): the two Espryt BSL GPU items.
|
||||
- `wip/espryt-depthcopy-measured` (the two Espryt BSL GPU items rebased onto origin 9f610167, with the
|
||||
device numbers in its message; the old `wip/espryt-depthcopy` eb7572ff is the unmeasured original).
|
||||
**Measured 2026-10-09 on device, NOT landed: no gain on BSL.** x = with both items, b = without, both
|
||||
LTO builds of origin 9f610167; gpuhunt, 3 VALID reps each, one arm per cooldown:
|
||||
- BSL: x 51.4 fps (0.921 of MobileGlues 55.8), b 51.9 (0.930); GPU 100 % busy in all runs, GPU
|
||||
19.45 vs 19.29 ms/frame (MobileGlues 17.88). The target of 0.95 is not reached; the items are neutral.
|
||||
- Vanilla cpuhunt check (Espryt monolith): x 248.5 fps / 2.87 ms GL CPU, b 254.0 / 2.83 (-2.2 % fps,
|
||||
within noise; no CPU regression worth the name, but no gain).
|
||||
- Engaged: the simpleperf profile of the BSL render thread shows `BlitDepthTexture2D` 0.100 ms/frame in
|
||||
b and gone in x; `FramebufferImpl::SyncToBackendByHandle` 0.178 -> 0.162. The saved CPU is hidden by the
|
||||
GPU-bound frame, and the GPU time per frame did not move, so the Espryt BSL gap is not in these
|
||||
items. See SCOREBOARD (ebbsl).
|
||||
Original description:
|
||||
- (1) Depth glCopyImageSubData goes to the driver (ES 3.2 / EXT/OES_copy_image), with the
|
||||
scratch-FBO depth blit as fallback. Knob MOBILEGL_ESPRYT_NATIVE_DEPTH_COPY.
|
||||
- (2) A per-point attachment shadow on the Espryt FBO twin skips an attach call for a point that already
|
||||
@@ -40,9 +52,8 @@ The plan and its measurements are in [PLAN-P15.md](PLAN-P15.md); the audit is in
|
||||
the split arms. Red-once: a shifted native copy fails all DepthCopyImage cases on DirectGLES; dropping
|
||||
Level from the shadow key fails the level case; keying on the driver id alone fails the
|
||||
recycled-name case.
|
||||
- Host suites are at baseline. **Not measured on device.**
|
||||
- Next step: run `scratchpad/p15/espg_job.sh.next` (Espryt BSL, one arm per cooldown, e/b
|
||||
interleaved). Target: Espryt BSL ≥ 0.95 of MobileGlues (now about 0.92).
|
||||
- Host suites: 1672 DirectGLES ctest entries (monolith + Split) pass serially in WSL (362 skipped by
|
||||
design), including DepthCopyImage, AttachmentReattach, PassOrder and every blit case.
|
||||
- `wip/api29-switch` (42922d21, on p15impl): `-Pmobilegl.androidApi=29` in build.gradle and the plugin's
|
||||
build.gradle.kts.
|
||||
- It sets minSdk 29 and therefore ANDROID_PLATFORM android-29; the plugin gets the `.api29` id suffix
|
||||
@@ -108,13 +119,17 @@ The plan and its measurements are in [PLAN-P15.md](PLAN-P15.md); the audit is in
|
||||
- Linux/anland;
|
||||
- the Windows WGL drop-in;
|
||||
- build options, user-facing knobs and troubleshooting.
|
||||
3. Espryt BSL GPU items (`wip/espryt-depthcopy`): device A/B, then commit to p15impl with numbers.
|
||||
3. DONE 2026-10-09: Espryt BSL GPU items (`wip/espryt-depthcopy-measured`): device A/B measured, no gain,
|
||||
not landed (see above and SCOREBOARD ebbsl). The Espryt BSL gap to MobileGlues (0.92) is still open;
|
||||
the next lead is the GPU side (render-stage trace of Espryt vs MobileGlues passes), not driver calls.
|
||||
4. Small CPU batch: ValidateForVerb residue, Tracker::Update (0.018, mostly inherent),
|
||||
EmitGlobalConstants (0.026). Expected ≤0.03 ms in total.
|
||||
5. API 29 build plus its A/B (`wip/api29-switch`).
|
||||
6. Smaller follow-ups:
|
||||
- `bench_session.sh stop` (via devjob2) restores the services and caps but leaves the clocks
|
||||
pinned. It should also run `pin_clocks.sh restore`.
|
||||
- DONE 2026-10-09: `bench_session.sh stop` now runs `pin_clocks.sh restore` first (verified over a
|
||||
17-session run: max clocks back to stock after every session, daemons running, no session file).
|
||||
The scratchpad `devjob2.sh` / `fcl_bench.sh` hard-code the p15 worktree's copy of the harness;
|
||||
point them at a tree that has this commit.
|
||||
- The `Fatal{UnmigratedSurface, "AndroidNativeWindow@P12"}` text and the tests asserting on it still
|
||||
point at P12. The rule is permanent: a client window cannot cross processes, so windowed spawn uses
|
||||
`MOBILEGL_IPC_SURFACE=server`. Reword the message to say that.
|
||||
|
||||
@@ -124,6 +124,20 @@ H2 sessions:
|
||||
the 578 MHz pin.
|
||||
- A window-scoped validity check (freqcheck over the measure_raw.txt span) would admit them. That
|
||||
is a harness change, not yet made.
|
||||
- **ebbsl (gpuhunt, Iris + BSL, Espryt monolith, 3 reps, one arm per cooldown, all VALID):** the two parked
|
||||
Espryt GPU items (native depth glCopyImageSubData, attachment shadow) do not help. Builds: x = origin
|
||||
9f610167 + the items, b = origin 9f610167, both LTO; MobileGlues is the plugin.
|
||||
- fps r1 / r2 / r3: x 51.4 / 51.3 / 51.5 (mean 51.4), b 52.7 / 51.8 / 51.0 (51.9), MobileGlues 56.5 / 55.6 / 55.3 (55.8).
|
||||
Ratio to MobileGlues: x 0.921, b 0.930 (x vs b -1.0 %, noise). Target 0.95 not reached.
|
||||
- GPU: busy 100 % in every run; union of kgsl cmdbatch intervals per frame (x / b / MobileGlues)
|
||||
19.45 / 19.29 / 17.88 ms, 1.04 cmdbatches per frame in all three.
|
||||
- Device state: gpuhunt (CPU 2380/1689 MHz, GPU 578 MHz; in-window min = max for every policy), tpl=6
|
||||
thr=0, peak CPU 75.5-79.4 C, GPU 63.2-65.9 C, skin 42.4-44.5 C, daemons stopped(5), swap=false, anland off.
|
||||
- Engagement (one simpleperf run each, render thread): `BlitDepthTexture2D` 0.100 ms/frame in b, gone in x;
|
||||
Espryt `CopyImageSubData` 0.115 -> 0.072; `SyncToBackendByHandle` 0.178 -> 0.162.
|
||||
- Vanilla cpuhunt (1500/1250/903 MHz, 3 reps, all VALID, peak CPU 58 C): Espryt monolith GL CPU x 2.87,
|
||||
b 2.83 ms/frame; fps x 249.9 / 251.4 / 244.2 (248.5), b 250.1 / 256.5 / 255.2 (254.0), GPU busy 17 %.
|
||||
- Not landed: wip/espryt-depthcopy-measured. The BSL frame is GPU-bound and its GPU time did not move.
|
||||
- **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.
|
||||
|
||||
Reference in New Issue
Block a user