Spun off 2026-05-03 from the closed-without-patch kwin_overlay_subsurface campaign (its phase8_handover.md is the predecessor). The candidate research question is whether running an X11 session on PineTab2 reproduces, eliminates, or transforms the drop-inversion phenomenon that motivated the predecessor — but the framing is provisional and awaits operator confirmation before Phase 1 lock. phase0_findings.md is the substrate doc: - Predecessor close-out summary (three reasons no patch landed; replicate-baseline-first lesson). - What stays valid from the predecessor (Phase 1 scanout archaeology, Phase 2-prime KWin Wayland source-read which does NOT transfer to X11, Δ_present-46ms reproducible side-finding which is directly testable under X11, measurement infrastructure with WAYLAND_DEBUG-specific parts that don't transfer). - Current ohm state (carry-over predecessor tooling, governor pin, baloo disabled, kwin-fourier still installed). - Provisional research question with three plausible outcomes (α/β/γ) and four alternate framings the operator may have in mind that this question doesn't cover. - Working-assumption out-of-scope list (no patches, no MRs, no Δ_present chase yet). - Four pre-question Phase 0 deliverables that are unblocked regardless of framing: ohm state snapshot, X11-path inventory, X11 measurement-tool inventory, A1 Wayland-baseline rep on this campaign's session for future comparison anchor. worklist.md tracks Phase 0 only. Phase 1 lock awaits the research question. Discipline carry-overs from kwin_overlay_subsurface listed (replicate baseline first; phase discipline; non-upstreaming default; memory persistence at close). README.md status banner: Phase 0 in progress, research question pending operator confirmation. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
9.4 KiB
Phase 0 — substrate and provisional research question
This is the campaign's Phase 0 substrate doc: what we already
know from the predecessor kwin_overlay_subsurface close-out,
what's open, and what the candidate research question looks
like. The research question is provisional and awaits
operator confirmation before Phase 1 lock.
Predecessor close-out summary
../kwin_overlay_subsurface/phase8_handover.md
(closed 2026-05-03 without patch). Three independent reasons
no patch landed:
- The campaign's locked Phase 1 reference floor
(
drops_post_warmup == 0from cage) is unreachable at N=3 today. Today's median is 26 post-warmup with the same chromium-fourier binary, same hardware, same kernel, same Mesa, same kwin-fourier — KWin direct reproduces Phase 0's 29 post-warmup, but cage now also drops ~22-56 post-warmup instead of Phase 0's 0. - The campaign's surface-of-investigation
(
wp_subsurfaceoverlay route) is not engaged bybrave_drops_test.html. Chromium-fourier renders the video element via internal compositing into its main browser window surface — a single-surface case. - The Phase 2 hot-path hypothesis
(
glEGLImageTargetTexture2DOESdominateskwin_wayland's per-frame cost) was rejected by Phase 3 perf measurement with 100×-margin on the wrong side of the threshold.
The diagnostic loop terminated at "the campaign's premise was N=1 to begin with, and the N=3 in-session re-measurement doesn't replicate it." This is filed as a feedback memory: replicate the N=1 baseline at N=3 in the same session BEFORE building multi-phase infrastructure around it.
What stays valid from the predecessor
Durable substrate listed in
kwin_overlay_subsurface/phase8_handover.md § "What's left
for a future session to pick up":
- Phase 1 scanout-promotion archaeology (rockchip-drm RK3568 plane format/modifier table, KWin v6.6.4 promotion predicate). Plane 39 (Primary, NV12 LINEAR) is the GL framebuffer; Plane 45 (Overlay) does not advertise NV12 in any modifier. Both KWin scanout-promotion paths are structurally rejected for windowed Brave on this DRM driver. This holds regardless of display server.
- Phase 2 H1 file:line in
kwin_overlay_subsurface/phase2_source_findings.md. Cold per Phase 3 measurement; informational only. - Phase 2-prime Shape C source-read of
Display::dispatchEventsandTransactionFencein KWin'ssrc/wayland/. Specific to the Wayland path; not relevant to an X11-session campaign. The X11 path uses different KWin surface plumbing (kwin_x11) and a different per-frame protocol (X11 Composite extension + Damage + XPresent), not Wayland protocol dispatch. - Δ_present-46 ms reproducible side-finding under Plasma Wayland. Across all measured conditions (chromium-fourier on KWin, chromium-fourier in cage, stock Brave on KWin), median Δ_present was 41-46 ms on a 60 Hz panel — a stable ~2.7-vsync queue depth. This finding is independent of the cage breakdown and directly testable under X11 as a comparison point.
- Measurement infrastructure:
kwin_overlay_subsurface/scripts/wayland_debug_to_csv.py(libwayland 1.21+ format, 17 unit tests passing) +phase3_prime_runs/run_browser.shorchestrator on ohm (handlesWAYLAND_DEBUG=1capture, perf record, top sampling, drops trajectory extraction, kill-cleanly). The WAYLAND_DEBUG portion does not apply under X11; an X11 equivalent would be different tooling (xtrace,xev, or XCB-debug instrumentation if the client emits any). The perf+top+drops capture portion remains usable under X11 unchanged.
Current ohm state (carry-over from predecessor)
Per kwin_overlay_subsurface/phase1_evidence/ohm_tooling_revert_log.md,
not reverted at predecessor close-out:
qt6-base-fourier 1:6.11.0-3kwin-fourier 1:6.6.4-3(Wayland-side compositor; not in the hot path under an X11 session)mesa 1:26.0.5-1- CPU governor pinned to
performance - Baloo permanently disabled
drm-info 2.9.0-1- Active session:
startplasma-waylandon tty2,kwin_waylandPID 3927 (as of 2026-05-03 03:05 UTC). - Browser binaries available:
/tmp/chromium-ohm-gl-fix-step2/chrome(chromium-fourier, Step 1 + Step 2 patches, 149.0.7812.0),/usr/bin/brave(brave-bin 1:1.89.145-1).
If this campaign needs to switch ohm to an X11 session, that is a session-level operator action (logout, switch via SDDM, log back in). It cannot be done unattended.
Research question (provisional — awaits operator confirmation)
Candidate framing, not locked:
"On PineTab2 RK3568 with the same chromium-fourier binary, the same
bbb_1080p30_h264.mp430 fps source clip, and the samebrave_drops_test.htmlinstrumented page, does running an X11-session display server (Plasma X11, or an alternative X11 desktop) reproduce the drop-inversion phenomenon that motivatedkwin_overlay_subsurface, eliminate it, or introduce a different drop characteristic?"
This is the most narrowly relevant question given the predecessor's close-out. Three plausible outcomes:
- (α) X11 reproduces low post-warmup drops (matches Phase 0 cage = 0 floor): isolates the dropped-frames mechanism to the Wayland compositor stack on this hardware. The original campaign's framing was correct in spirit but the cage comparison was confounded; X11 becomes the better comparator.
- (β) X11 has comparable or higher post-warmup drops: the drop phenomenon is hardware/kernel/Mesa-bound and does not localise to the display-server stack at all. Predecessor's Phase 8 closure stands; the X11 measurement is the decisive cross-check.
- (γ) X11 has a different failure mode entirely (different drop pattern, different perf hot symbols, different effective fps): each finding is its own characterisation; the campaign becomes "what does running X11 on this hardware look like end-to-end."
Alternate framings the operator may have in mind that this provisional question doesn't cover:
- Daily-driver fitness: "Can I use X11 instead of Wayland on this device for everyday browser/video/desktop work, and what works/breaks?" — different scope; less measurement-heavy, more workflow-oriented.
- Specific X11-only feature investigation: composite redirection, XRender, GLAMOR, Xinerama on a single-display device, etc.
- XWayland behaviour: many Linux desktops run X11 clients under Wayland via XWayland. If an "X11 session" really means "test under XWayland to compare with native Wayland", the measurement is fundamentally different.
- Power consumption / thermal: X11 vs Wayland on a passively cooled tablet may differ in idle CPU and thermal envelope. Different metric set.
Operator decision needed before Phase 1:
- Which question is in scope? (drop phenomenon, daily-driver, feature-specific, XWayland-vs-native, power, or something else).
- What "X11 session" means specifically: native Xorg + Plasma X11; native Xorg + lightweight WM (e.g. openbox / i3 / xfwm); XWayland under the existing Plasma Wayland session; or another configuration.
- What the success/failure criteria look like (binding cells,
metrics.csvshape).
Until those are answered, Phase 0 documents the question space and Phase 1 does not lock.
What's NOT in scope (working assumption)
Until the research question is confirmed, the following are treated as out of scope so they don't slip into Phase 1 prematurely:
- Patches to KWin, Xorg, kwin-fourier, qt6-base-fourier, or any other component on ohm. This is research, not patch-development. Per non-upstreaming default, MR/bug-report filing is explicitly tasked and not scheduled here.
- The Δ_present-46 ms finding's investigation. It's a known hook from the predecessor; whether this campaign chases it depends on the locked research question.
- Reverting predecessor tooling state. Governor, baloo,
qt6-base-fourier,kwin-fourierstay as-is unless the operator decides otherwise. - File a bug for any of the predecessor's three documented candidate findings. Same non-upstreaming default applies.
What Phase 0 will deliver, regardless of framing
Even before the research question is locked, the following are useful Phase 0 deliverables that don't depend on the specific question:
- State snapshot of ohm under current Plasma Wayland captured at campaign start. This is the before photo for any future X11 vs Wayland comparison. Unattended-tractable (just scripted SSH).
- Inventory of available X11 paths on ohm: what packages are installed, what session candidates SDDM advertises, what would need to be installed to enable a Plasma X11 session, what alternate WMs are available. Read-only, unattended-tractable.
- Inventory of measurement instruments that work under
X11:
xtrace,xprop,xrandr --verbose --query, perf onXorgPID, frame-timing extraction options. Read-only. - A1 baseline under current Plasma Wayland: re-run a
single rep of the predecessor's
kwin_timing_nodebugcondition immediately at the start of this campaign, so the comparison Wayland-vs-X11 has a same-session anchor. This is the "set the baseline before instrument changes" discipline fromfeedback_replicate_baseline_first.md.
These steps are unblocked. They don't commit to a specific research question and they produce evidence that's useful under any of the candidate framings.