Commit Graph

3 Commits

Author SHA1 Message Date
marfrit 93d7c5c67a KWIN_PIVOT: Phase-4 done (qt6 patches landed) + weston A/B vindicates KWin theory
build and publish packages / distcc-avahi-aarch64 (push) Successful in 40s
build and publish packages / lmcp-any (push) Failing after 12s
build and publish packages / lmcp-debian (push) Has been skipped
build and publish packages / claude-his-any (push) Has been skipped
build and publish packages / ffmpeg-v4l2-request-aarch64 (push) Has been skipped
build and publish packages / claude-his-debian (push) Has been skipped
Today's deltas:
- qt6-base-fourier built, installed, validated on ohm. Static-idle
  journal shows zero GL_INVALID_VALUE post-relogin; the Qt 6
  GL_ALPHA bug is genuinely fixed.
- chrome v4 under KWin still stalls — at ~6s vs ~3s pre-Qt-fix, so
  the GL_ALPHA churn was contributing some load but wasn't the
  primary cause.
- Clean A/B with weston: same chrome v4 binary, same panfrost,
  same V4L2, same hardware → swapping KWin → weston turns the
  stall off entirely. Chrome plays through with elevated CPU
  (~96 % vs KWin's ~50 % when it isn't stalled) because weston
  falls back to LINEAR composite vs KWin's fast-tile path.
- mpv triangulation:
    --vo=null --hwdec=v4l2request: clean (decode only)
    --vo=drm --hwdec=v4l2request: 0.7 % drops in 19 s (KMS scanout)
    --vo=gpu-next --hwdec=v4l2request under KWin: 76 % drops, slideshow

Decode + display hardware path is fully capable. The wall is
specifically KWin's compositor scheduling/presentation pipeline on
this stack — panfrost ES 3.2 + V4L2 stateless NV12 dmabuf clients.

KWIN_PIVOT.md rewritten:
- Phase 4 (qt6 patch, ship, upstream) marked done.
- New Phase 5 (find the KWin culprit): WAYLAND_DEBUG on chrome +
  KWin to capture the missing wl_buffer.release / wp_presentation
  exchange around the 6 s stall, plus strace-on-kwin and
  effects-disable bisection.
- New Phase 6 (fix and ship): kwin-fourier package pattern, ohm
  validation, bugs.kde.org filing.
2026-04-28 15:35:01 +00:00
marfrit cd25d02e01 KWIN_PIVOT: Phase-2 findings — bug is in Qt 6, not KWin
build and publish packages / distcc-avahi-aarch64 (push) Successful in 31s
build and publish packages / lmcp-any (push) Successful in 6s
build and publish packages / lmcp-debian (push) Successful in 4s
build and publish packages / claude-his-any (push) Successful in 7s
build and publish packages / ffmpeg-v4l2-request-aarch64 (push) Successful in 12m29s
build and publish packages / claude-his-debian (push) Successful in 5s
Source-grep collapsed Phase 1+2 onto a single pass. KWin's own GL paths
use GL_R8 correctly (gltexture.cpp:61, shadowitem.cpp:494). The
glTexImage2D(GL_ALPHA) calls observed in the journal originate from
Qt 6:

- qtbase/src/opengl/qopengltextureglyphcache.cpp:111-117 — text glyph
  cache upload path. The #else branch (active when qtbase is built
  with QT_CONFIG(opengles2)) unconditionally uses GL_ALPHA, with no
  runtime check for ES context major version. Correct on ES 2.x;
  broken on ES 3.x where GL_ALPHA is no longer a valid glTexImage2D
  internalFormat.
- qtbase/src/gui/rhi/qrhigles2.cpp:1373-1378 — Qt-Quick-RHI sibling.
  Same logic, gated only on caps.coreProfile, missing the ES≥3 case.
- qtbase/src/opengl/qopengltextureuploader.cpp:253-257 — QImage→GL
  upload path; same shape.

KWin runs an ES 3.2 context on Mali-G52 panfrost (RK3566), Qt picks
GL_ALPHA, mesa returns GL_INVALID_VALUE, every dependent draw errors
at level 0, the compositor's frame-callback path stalls. KWin is the
visible victim because it's the compositor, but the bug is in Qt.

KWIN_PIVOT.md rewritten: the patch series and packaging now target
qt6-base-fourier instead of kwin-fourier. Three small hunks (~3 lines
each), runtime-safe via existing caps.gles + caps.ctxMajor / surface
format majorVersion checks. Upstream landing path: bugreports.qt.io
+ Gerrit change against qtbase dev branch.
2026-04-28 12:18:25 +00:00
marfrit 8756ce38be chromium-fourier r2 + firefox-fourier 150.0.1 + KWIN_PIVOT.md
build and publish packages / distcc-avahi-aarch64 (push) Successful in 46s
build and publish packages / lmcp-any (push) Successful in 9s
build and publish packages / lmcp-debian (push) Successful in 4s
build and publish packages / claude-his-any (push) Successful in 7s
build and publish packages / ffmpeg-v4l2-request-aarch64 (push) Successful in 12m8s
build and publish packages / claude-his-debian (push) Successful in 5s
chromium-fourier:
- patch 3/3 nv12-external-oes-on-modifier-external-only.patch — adds
  NativePixmapEGLBinding::ModifierRequiresExternalOES helper, extends
  OzoneImageGLTexturesHolder::GetBinding to honor EGL external_only
  flag for NV12 dmabufs on panfrost / panthor. Validated on ohm
  (RK3566 hantro mainline 6.19.10): bbb_1080p30_h264.mp4 plays at
  34.7 % combined CPU vs ~131 % pre-patch baseline (~3.8x).
- PKGBUILD pkgrel 1->2, source array + sha256sums + prepare() hook for
  patch 4, patch numbering 1/2,2/2 -> 1/3,2/3,3/3.
- NEXT.md appended with 2026-04-28 section: patch 4 design, validation
  log, KWin GL_ALPHA bug pinpoint (preexisting since 2026-03-06,
  affects every wayland video client; unrelated to chromium-fourier),
  device-renumbering note (/dev/video1 = encoder post-reboot).
- KWIN_PIVOT.md: 4-phase plan to identify and patch KWin's
  glTexImage2D(internalFormat=GL_ALPHA) site, ohm-only test plan,
  scope discipline.
- patches/ now tracked (compiler-rt-adjust-paths, enable-v4l2,
  wayland-allow-direct-egl-gles2, nv12-external-oes); the dead-end
  chromeos-pipeline-bypass.patch removed.

firefox-fourier:
- 4 patches (gfxinfo v4l2 stateless fourccs, libwrapper hwdevice ctx,
  ffmpegvideo v4l2-request route, prefs v4l2-request default).
- PKGBUILD bumped to firefox 150.0.1, Arch toolchain glue patches
  layered in, mozconfig with --without-wasm-sandboxed-libraries for
  ALARM, package() launcher fix (rm -f symlink before cat > to avoid
  ENOENT through the dangling /usr/local symlink mach install drops).
- 150.0.1-1-aarch64.pkg.tar.zst built on boltzmann (95 MB), pending
  fresnel power-on for V4L2 stateless validation on RK3399.
2026-04-28 12:02:18 +00:00