Phase 0: motivation locked + mechanism captured

Operator-supplied research question 2026-05-03: "Does cutting
out the KWin compositor enable faster video display of Brave,
chromium-fourier, and Firefox — for full SW decoding, and for
libva decoding (where possible) — on PineTab2 RK3568?"

Operator-supplied mechanism 2026-05-03 (two messages):

1. "hantro emits NV12 which the GPU can't put on a
   compositeable plane. So that is the real bottleneck of
   Wayland."

   Connects directly to predecessor's Phase 1 finding
   (kwin_overlay_subsurface/phase2_source_findings.md:170-229):
   rockchip-drm overlay Plane 45 advertises no NV12 modifier;
   Primary Plane 39 supports NV12 LINEAR but is owned by KWin
   for its compositor framebuffer. Predecessor named the
   constraint but not the consequence — the consequence is
   that NV12 → RGB GL-composite is forced on Wayland-with-KWin
   regardless of which protocol path the browser uses.

2. "A X11 pipeline would route around that by giving a portion
   of screen real estate directly to the video pipeline."

   The X11 hardware-overlay path: with X11 + non-compositing
   WM, the X server can allocate Plane 39 (NV12 LINEAR) to
   the video region and Plane 45 (RGB AFBC) to the rest of
   the desktop. Hardware-blended at scanout. NO GL-composite
   anywhere — the cost the operator named as "the real
   bottleneck" is structurally avoided.

   This is the X11 hardware-overlay mechanism that historically
   made X11 desktops good at video playback (Xv → modern
   DRI3 + XPresent + Composite-redirection-disabled).
   Wayland-with-monolithic-compositor designs cannot use this
   freedom: the compositor must own the Primary plane, so the
   plane-allocation freedom required to put NV12 video on
   Plane 39 alongside RGB chrome on Plane 45 isn't available.

phase0_findings.md updated with:
- Locked research question + 12-cell experimental matrix
  (3 browsers × 2 decode paths × 2 sessions; some N/A).
- Three separable cost components the matrix tests for
  (mandatory NV12→RGB GL conversion if hardware-overlay
  doesn't engage, fallback GL-composite, per-frame compositor
  overhead independent of NV12).
- Open questions about whether browsers actually request
  hardware-overlay presentation under X11, or whether they
  always internally composite to RGB.
- Recommendation to add mpv as a reference X11-overlay
  client: distinguishes "X11 path works on this hardware"
  from "browsers actually use the X11 path."

worklist.md updated:
- Phase 0 motivation + matrix items ticked.
- Pre-Phase-1 inventory broken out: state snapshot, X11
  path inventory, browser-overlay-path inventory, mpv
  reference, X11 measurement-tool inventory, A1 Wayland
  baseline anchor.
- Phase 1 sketch: binding cells per matrix cell, clear-pass /
  clear-fail thresholds, measurement protocol mirroring the
  predecessor's phase3_protocol.md structure.

README banner updated to reflect locked motivation +
mechanism summary + matrix shape.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-03 06:49:18 +00:00
parent eff6fb5b29
commit ac301b4e48
3 changed files with 358 additions and 99 deletions
+25 -15
View File
@@ -1,21 +1,31 @@
# x11-session-research # x11-session-research
> **Status: PHASE 0 — research question pending operator > **Status: PHASE 0 — motivation locked 2026-05-03.**
> confirmation.** See [`phase0_findings.md`](phase0_findings.md) > See [`phase0_findings.md`](phase0_findings.md) §
> § "Research question (provisional)" for the candidate framing > "Research question (LOCKED 2026-05-03)". Phase 1 still
> drafted from the predecessor campaign's close-out. Phase 1 > requires the four pre-question Phase 0 deliverables
> lock will not happen before the operator confirms or > (state snapshot, X11 path inventory, browser-overlay-path
> redirects. > inventory, baseline anchor) before binding cells lock.
Campaign to investigate X11 session behaviour on PineTab2 **Research question:** Does cutting out the KWin compositor
RK3568, in the context of the just-closed enable faster video display of Brave, chromium-fourier, and
[`kwin_overlay_subsurface`](../kwin_overlay_subsurface/) Firefox — for full SW decoding, and for libva decoding (where
campaign. Whether running an X11 (Xorg) session on the same possible) — on PineTab2 RK3568?
hardware would (a) reproduce the drop-inversion phenomenon
that motivated the predecessor, (b) bypass it entirely, or The operator-supplied mechanism: hantro decodes to NV12;
(c) introduce a different set of constraints, is the most rockchip-drm's overlay plane cannot accept NV12, so on Wayland
likely campaign question — but this is a working assumption, KWin must own the only NV12-capable plane (Primary, Plane 39)
not a locked goal. See `phase0_findings.md`. for its compositor framebuffer, which forces a GL-composite
of every NV12 video buffer. X11 + non-compositing WM can give
the video region directly to Plane 39 (NV12 native) and put
the rest of the desktop on Plane 45 (RGB AFBC), avoiding the
forced GL-composite. **The campaign's load-bearing hypothesis
is that this plane-allocation freedom translates into
measurable browser-video speedup.**
The matrix is 3 browsers × 2 decode paths × 2 sessions = 12
cells (some N/A where libva isn't supported). See
`phase0_findings.md` for the full table.
## Predecessor ## Predecessor
+249 -55
View File
@@ -99,70 +99,264 @@ If this campaign needs to switch ohm to an X11 session, that
is a session-level operator action (logout, switch via SDDM, is a session-level operator action (logout, switch via SDDM,
log back in). It cannot be done unattended. log back in). It cannot be done unattended.
## Research question (provisional — awaits operator confirmation) ## Research question (LOCKED 2026-05-03)
**Candidate framing**, not locked: > *"Does cutting out the KWin compositor enable faster video
> display of Brave, chromium-fourier, and Firefox — for full
> SW decoding, and for libva decoding (where possible) — on
> PineTab2 RK3568?"*
> *"On PineTab2 RK3568 with the same chromium-fourier binary, ### Mechanism the question targets
> the same `bbb_1080p30_h264.mp4` 30 fps source clip, and the
> same `brave_drops_test.html` instrumented page, does running
> an X11-session display server (Plasma X11, or an alternative
> X11 desktop) reproduce the drop-inversion phenomenon that
> motivated `kwin_overlay_subsurface`, eliminate it, or
> introduce a different drop characteristic?"*
This is the most narrowly relevant question given the Operator-supplied context 2026-05-03:
predecessor's close-out. Three plausible outcomes:
- **(α)** X11 reproduces low post-warmup drops (matches Phase 0 > *"hantro emits NV12 which the GPU can't put on a
cage = 0 floor): isolates the dropped-frames mechanism to > compositeable plane. So that is the real bottleneck of
the Wayland compositor stack on this hardware. The original > Wayland."*
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 connects directly to the predecessor's Phase 1 finding
this provisional question doesn't cover: (`kwin_overlay_subsurface/phase2_source_findings.md`:170-229):
- *Daily-driver fitness*: "Can I use X11 instead of Wayland on - Hantro VPU decodes H.264 video into NV12 dmabufs (`DRM_FORMAT_NV12`,
this device for everyday browser/video/desktop work, and `DRM_FORMAT_MOD_LINEAR`).
what works/breaks?" — different scope; less measurement-heavy, - rockchip-drm's only NV12-LINEAR-capable plane is the
more workflow-oriented. Primary plane (Plane 39 on CRTC 52), which the running KWin
- *Specific X11-only feature investigation*: composite uses for its GL framebuffer.
redirection, XRender, GLAMOR, Xinerama on a single-display - The overlay plane (Plane 45) advertises no NV12 in any
device, etc. modifier in `IN_FORMATS`.
- *XWayland behaviour*: many Linux desktops run X11 clients - Therefore **no rockchip-drm scanout plane can accept the
under Wayland via XWayland. If an "X11 session" really means NV12 buffer hantro produces while KWin owns the primary
"test under XWayland to compare with native Wayland", the plane.** Some compositing step must convert NV12 → RGB
measurement is fundamentally different. before display.
- *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**: The predecessor named the *constraint* (Path B rejected at
the format/modifier intersection) but the *consequence*
"some component must GL-composite NV12 → RGB on the GPU
because nothing else on this hardware can put NV12 on a
scanout plane" — was not made explicit. That consequence is
this campaign's motivating insight:
1. Which question is in scope? (drop phenomenon, daily-driver, - **Under Plasma Wayland:** when the browser engages the
feature-specific, XWayland-vs-native, power, or something Wayland subsurface route (chromium's
else). `WaylandBufferManagerHost::CommitOverlays`), KWin receives
2. What "X11 session" means specifically: native Xorg + Plasma an NV12 dmabuf and must GL-composite it. **KWin's compositor
X11; native Xorg + lightweight WM (e.g. openbox / i3 / xfwm); is the GL-composite step.** When the browser does NOT
XWayland under the existing Plasma Wayland session; or engage the subsurface route (the predecessor's measured
another configuration. case on `brave_drops_test.html` — zero `wp_subsurface` in
3. What the success/failure criteria look like (binding cells, the trace), the browser itself converts NV12 → RGB in its
`metrics.csv` shape). own GL context and hands KWin only RGB; KWin then composites
the RGB to its primary plane.
- **Under X11 without a compositor:** there is no separate
compositor process. Two paths are open to the client:
- *RGB-composite path* (browser converts NV12 → RGB in its
own GL context and presents the RGB result via XPresent/DRI3
to the X server, which schedules a page-flip on the same
Primary plane KWin would have used). One fewer hand-off
than the Wayland-with-subsurface case but the same GL-
composite cost as the no-subsurface Wayland case.
- **Hardware-overlay path** (operator-supplied context
2026-05-03: *"a X11 pipeline would route around that by
giving a portion of screen real estate directly to the
video pipeline"*). The X server allocates the Primary
plane (Plane 39, supports NV12 LINEAR) to the video
region and the Overlay plane (Plane 45, supports
RGB/AFBC) to the rest of the desktop. Hardware-blended
at scanout time. **No GL-composite of NV12 anywhere —
the cost the operator named as "the real bottleneck"
is structurally avoided.**
Until those are answered, Phase 0 documents the question space This second X11 path is what Wayland compositors as
and Phase 1 does not lock. designed today cannot do on rockchip-drm-class hardware: KWin
Wayland *must* own the Primary plane for its compositor
framebuffer (because the Wayland model is "compositor presents
one merged surface per output"), so it cannot give Plane 39
to a video-region NV12 buffer while putting the rest of the
desktop on Plane 45. X11 + non-compositing WM has no such
constraint — different windows can be assigned to different
planes by the X server's plane allocator.
This is the X11 hardware-overlay mechanism that historically
made X11 desktops good at video playback (Xv from the late
1990s, and the modern equivalents via DRI3 + XPresent +
Composite-redirection-disabled). It is structurally absent
in Wayland-with-monolithic-compositor designs.
### Hypothesis the matrix tests
There are three potentially separable costs:
1. **The mandatory NV12 → RGB GL conversion**, which is
*forced* on Wayland-with-KWin because KWin must own the
only NV12-LINEAR-capable plane on this hardware for its
compositor framebuffer. **This cost is structurally
avoidable** under X11 + non-compositing WM via
hardware-plane-overlay (per the operator-supplied insight
above). Whether browsers can be coaxed to *use* the X11
hardware-overlay path — rather than internally compositing
to RGB before presenting — is browser-specific (see Open
questions below).
2. **The fallback GL-composite cost** when the
hardware-overlay path doesn't engage. Both Wayland and X11
pay this when the buffer shape doesn't match a plane —
it just runs in different processes (KWin under Wayland,
browser under X11).
3. **The per-frame compositor overhead** independent of NV12:
dmabuf import, transaction apply, presentation-feedback
wiring, frame-callback delivery — which the predecessor
measured at ~30-37 % of `kwin_wayland`'s CPU during
steady-state video playback even when KWin only saw RGB
surfaces.
The X11 hypothesis is strongest if cost (1) is dominant on
the matrix's with-KWin cells AND the X11 cells trigger the
hardware-overlay path. The X11 hypothesis is weakest if
cost (1) is small and cost (3) is small — in which case the
"cutting out KWin" experiment would show only marginal
differences.
The matrix below is designed to surface which of (1) (2) (3)
dominates per browser × decode path.
"Faster video display" is operationally **a combination of**:
- **Effective fps actually rendered** (= `getVideoPlaybackQuality().totalVideoFrames / elapsed_s`
for a 30 fps source — the upper bound is 30; the question is
how close).
- **Drop count** over the same 70 s window (`droppedVideoFrames`).
- **End-to-end latency** if testable (commit → present;
testable on Wayland via `wp_presentation_feedback`,
testable on X11 via `XPresent` extension or `RandR` vblank
events; protocol-side measurement under each
display-server).
- **Compositor + browser CPU at steady state** (the cost
saved by cutting the compositor is the upper bound on the
patch-payoff if a future campaign tries to optimise the
compositor instead of removing it).
### Experimental matrix
Six 2-axis cells (3 browsers × 2 decode paths) × 2
session conditions (with-KWin / without-KWin):
| Browser | Decode | with-KWin (Plasma Wayland) | without-KWin (X11 session, no compositor) |
|---|---|---|---|
| Brave 147 | full SW | C-W-brave-sw | C-X-brave-sw |
| Brave 147 | libva (if it works) | C-W-brave-libva | C-X-brave-libva |
| chromium-fourier 149 (Step 1 + Step 2) | full SW | C-W-chrf-sw | C-X-chrf-sw |
| chromium-fourier 149 | libva (Step 1 enables it) | C-W-chrf-libva | C-X-chrf-libva |
| Firefox | full SW | C-W-ff-sw | C-X-ff-sw |
| Firefox | libva | C-W-ff-libva | C-X-ff-libva |
The "(if it works)" / "where possible" qualifier per the
operator's directive: libva on rockchip-drm RK3568 only works
on chromium-fourier (Step 1 ports `libva-v4l2-request`); for
stock Brave 147 and stock Firefox, libva probably doesn't
engage and those cells are documented N/A. For Firefox, the
Mesa-side `libva-v4l2-request` may make libva work via Mozilla's
VAAPI backend even on stock Firefox — to be verified in
Phase 0 inventory.
### What "cutting out the KWin compositor" means
This campaign uses **X11 session with no compositor in the
display path** as the "without-KWin" cell. Specifically:
- Native Xorg server, NOT XWayland (XWayland would still go
through KWin for display, defeating the purpose).
- Window manager that does NOT composite by default — e.g.
openbox, fluxbox, xfwm4-with-compositing-off, i3, twm.
Plasma X11 uses `kwin_x11` as compositing WM, which is
still a "KWin compositor" — it does not satisfy "cut KWin
out" and is **excluded** from the without-KWin cell.
- Browser windowed (not fullscreen). Even on a non-compositing
WM, fullscreen browsers may engage XPresent direct
presentation paths — testing windowed isolates the
baseline non-compositor windowed display path.
The exact WM choice is a Phase 0 inventory decision (which
WMs are available on ohm, which install cleanly, which
SDDM-advertised sessions exist). Default candidate: openbox.
### Three plausible outcome shapes
- **(α)** Without-KWin is materially faster across all 6
cells: confirms the KWin compositor cost is a real
bottleneck on this hardware, and X11-session-without-
compositor becomes the recommended daily-driver
configuration for video work on PineTab2.
- **(β)** Without-KWin is comparable or only marginally
faster: the compositor isn't the bottleneck; the drop
phenomenon is hardware/kernel/Mesa-bound, and the
predecessor's Phase 8 closure stands.
- **(γ)** Mixed picture per browser × decode path: e.g.
libva paths benefit but SW paths don't; or Firefox benefits
but chromium-class clients don't. Each cell becomes its own
characterisation.
### Open questions before Phase 1 lock
The hardware-overlay-path mechanism is structurally available
on X11 + non-compositing WM. Whether it actually engages for
each of the three browsers is browser-specific and currently
unknown:
- **Brave / Chromium ozone-x11**: Chromium has overlay-support
code (`OverlayProcessor`, `GpuMemoryBufferManager`,
`DCOMPSurface` on Windows; on Linux X11 the path is via
XPresent + DMA-BUF + `OverlayCandidate`). Whether Brave
147 / chromium-fourier 149 actually request hardware-overlay
presentation for a windowed video element under X11 is open.
- **Firefox**: VAAPIVideoDecoder backend produces hardware
decoded NV12 dmabufs that the GL compositor consumes
internally. Whether Firefox's X11 backend has a path to
hand the dmabuf to the X server for hardware-overlay
presentation (rather than internally composing to RGB) is
open. Mozilla has a `MOZ_X11_EGL` hint and a "hardware video
overlay" pref but these are not universally engaged.
- **Reference clients**: mpv with `--vo=xv` or
`--vo=gpu --hwdec=auto-copy --gpu-context=x11`, or `gst-play-1.0`
with `xvimagesink` or `glimagesink`, are known-good X11
hardware-overlay paths. **Adding mpv to the matrix as a
reference client** would isolate "does the X11 hardware-
overlay path work AT ALL on this hardware" from "do
browsers actually use it." If mpv hardware-overlays cleanly
but browsers don't, the conclusion is "the X11 path is fast,
but browsers leave the speedup on the table."
If the operator agrees, Phase 0 inventory should:
1. Verify Plane 39's NV12-LINEAR availability is reachable to
X11 clients (it is for KWin Wayland; should be for X11 too
since Plane 39 is just a DRM resource), and identify which
X11 path actually programs it (modesetting Xorg driver +
`Option "PageFlip" "true"`, or DRI3-presented buffer ending
up on Plane 39 via the X server's plane allocator).
2. Inventory Brave's, chromium-fourier's, and Firefox's X11
overlay-presentation paths to see which (if any) request
hardware-overlay presentation.
3. Add mpv as a reference X11-overlay client to the matrix,
so the campaign has a known-good comparison point.
### What this question does NOT cover
For clarity, since the predecessor was specifically about
the Wayland-overlay-subsurface composite path:
- This campaign is **not** investigating the wp_subsurface
route. The Wayland-cell of the matrix (with-KWin) measures
whatever browser configuration produces under the existing
Plasma Wayland session — windowed, default profile, default
flags. It's a measurement of the as-shipped Plasma Wayland
stack from the user's perspective, not a probe of a
specific KWin code path.
- The Δ_present-46 ms finding from the predecessor is
testable as a free side-finding under both axes (Wayland
and X11) but is not the campaign's primary question.
- Daily-driver fitness (apps that break under X11, touchscreen
behavior, multi-monitor edge cases, etc.) is **not in
scope**. The campaign's deliverable is the matrix above; if
any cell is decisively faster, daily-driver-fitness becomes
a follow-up campaign.
## What's NOT in scope (working assumption) ## What's NOT in scope (working assumption)
+84 -29
View File
@@ -1,39 +1,94 @@
# Work items — x11-session-research # Work items — x11-session-research
## Phase 0 — substrate + research question framing ## Phase 0 — substrate + research question + inventory
**Status: IN PROGRESS.** Substrate doc landed **Status: IN PROGRESS.** Motivation LOCKED 2026-05-03 in
(`phase0_findings.md`). Research question is provisional, `phase0_findings.md` § "Research question". Pre-Phase-1
awaits operator confirmation. Pre-question Phase 0 deliverables inventory and baseline-anchor work below.
listed below are unblocked.
- [x] Predecessor close-out summarised. Substrate doc - [x] Predecessor close-out summarised. Substrate doc lists
(`phase0_findings.md`) lists what stays valid from what transfers from `kwin_overlay_subsurface` and what's
`kwin_overlay_subsurface`, what's specific to Wayland and Wayland-specific (KWin source-reads don't transfer to X11
doesn't transfer, and three plausible outcome shapes (α/β/γ) path).
for the candidate research question. - [x] **Research question locked.** "Does cutting out the
- [ ] **Operator confirms the research question.** Three KWin compositor enable faster video display of Brave,
candidate framings + four alternates are listed in chromium-fourier, and Firefox — for full SW decoding, and
`phase0_findings.md` § "Research question (provisional)". for libva decoding (where possible) — on PineTab2 RK3568?"
Pick one (or correct the framing) before Phase 1. - [x] **Mechanism captured.** Operator-supplied insight
2026-05-03: hantro emits NV12, rockchip-drm overlay plane
doesn't accept NV12, so KWin must own the only NV12-capable
plane (Primary, Plane 39) and forces GL-composite of every
NV12 buffer. X11 + non-compositing WM can give the video
region directly to Plane 39 and put rest of desktop on
Plane 45 (RGB AFBC) — hardware-blended, no GL-composite.
- [x] **Experimental matrix drafted.** 3 browsers × 2 decode
paths × 2 sessions = 12 cells (some N/A where libva isn't
supported). See `phase0_findings.md` § "Experimental matrix".
- [ ] State snapshot of ohm under current Plasma Wayland — - [ ] State snapshot of ohm under current Plasma Wayland —
the campaign-start *before* photo. Unattended-tractable. the campaign-start *before* photo. Unattended-tractable
- [ ] Inventory of available X11 paths on ohm: installed via SSH. Captures package versions, kernel, kwin_wayland
packages, SDDM-advertised sessions, alternate WMs, PID + cmdline, governor, services, browser binary versions,
XWayland availability. Read-only. test asset paths, thermal_zone temps.
- [ ] Inventory of measurement instruments that work under - [ ] Inventory of available X11 paths on ohm:
X11. `xtrace`, frame-timing tooling, perf on Xorg PID, etc. - Installed packages: `xorg-server`, `xorg-xinit`,
Read-only. `xorg-xrandr`, drm/dri stack, `mesa-x11` if separated.
- [ ] A1 baseline: 1× `kwin_timing_nodebug`-equivalent run - SDDM-advertised sessions: list `/usr/share/xsessions/*`.
on current Plasma Wayland session, captured into - Alternate WMs available (openbox, fluxbox, xfwm4, i3,
`phase0_evidence/wayland_baseline_rep1/`. Same-session etc.) — what's installed, what'd need installing.
anchor for any future X11 comparison. - Whether modesetting Xorg driver (`xf86-video-modesetting`)
is the active driver path on rockchip-drm, vs an older
armsoc/fbdev driver.
- XWayland availability and version (relevant only as a
third comparison axis — primary X11 cells are NATIVE
Xorg, not XWayland).
- [ ] **NEW: Browser X11-overlay-path inventory.** Per
`phase0_findings.md` § "Open questions": determine whether
Brave 147 ozone-x11, chromium-fourier 149 ozone-x11, and
Firefox X11 backends actually request hardware-overlay
presentation for windowed video, or whether they always
internally composite to RGB. Browser-specific source-grep
+ chrome trace inspection.
- [ ] **NEW: Add mpv as a reference X11-overlay client.**
mpv with `--vo=xv` or `--vo=gpu --gpu-context=x11` is a
known-good X11 hardware-overlay path. Adding mpv to the
matrix as a 4th client provides "is the X11 hardware-overlay
path even reachable on this hardware" baseline, separate
from "do browsers use it." If mpv hits Plane 39 NV12 cleanly
but browsers don't, the answer is "X11 path is fast, but
the browsers don't take advantage of it."
- [ ] Inventory of X11-side measurement instruments. Available
options: `xtrace` (X protocol tracer), `xev` (event viewer),
`xprop` (window properties), `xrandr --verbose` (output
state), `glxinfo`, `compton-trans` for compositor detection,
perf on Xorg PID. Frame-timing under X11 typically uses
`XPresent` notify events or `INTEL_swap_event` GLX
extension equivalents — what's available on rockchip is
open.
- [ ] **A1 baseline: Wayland-with-KWin reference rep.**
1× `kwin_timing_nodebug`-equivalent run on current Plasma
Wayland session captured into
`phase0_evidence/wayland_baseline_rep1/` as the
same-session anchor for the cross-session
Wayland-vs-X11 comparison. Per
`feedback_replicate_baseline_first.md`.
## Phase 1 — locked research question + binding cells ## Phase 1 — binding cells + measurement protocol
**Pending operator confirmation of the Phase 0 question.** **Pending Phase 0 inventory + A1 baseline anchor.** Phase 1
Phase 1 lock will produce `phase1_lock.md` with binding cells lock will produce `phase1_lock.md` with:
specific to whichever framing is locked.
- Binding cells per matrix cell (effective_fps, drops_total,
drops_post_warmup, end-to-end-latency-if-testable,
compositor+browser CPU at steady state).
- The clear-pass / clear-fail thresholds: what "X11 is faster"
means quantitatively. Provisional: a matrix cell counts as
"X11 faster" if effective_fps under X11 is ≥ 28 (out of 30
source) AND drops_post_warmup is ≤ 5, on a same-session
cross-paired comparison with the corresponding Wayland cell.
- The measurement protocol per matrix cell, including how the
X11 sessions are entered and how the browser is launched
with libva forced on/off. Mirrors the structure of
`kwin_overlay_subsurface/phase3_protocol.md`.
## Phase 2-onwards ## Phase 2-onwards