diff --git a/README.md b/README.md index 6372893..29995ab 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ The iter8 close (`65969da3`) was packaged as `libva-v4l2-request-fourier-1.0.0.r 1. **libva cap_pool / REQBUFS / iter6-REINIT lifecycle cascade** — filed at [marfrit/libva-v4l2-request-fourier#1](https://git.reauktion.de/marfrit/libva-v4l2-request-fourier/issues/1). Under `mpv --hwdec=vaapi` interactive playback, `cap_pool_init` runs twice for slots 0..23 (probe-context + decode-context, no teardown between), `VIDIOC_REQBUFS` returns EBUSY (queue still STREAMON'd), iter6's per-OUTPUT-slot REINIT (commit `a09c03c`) chokes on a Bad fd, OUTPUT queue (`type=9`) hits ENOMEM after a few REQBUFS retries, decode aborts with `Failed to create surface: 2 (resource allocation failed)`. The Phase-5-sonnet-C4 caveat from iter5 (`cap_pool resolution-change race latent under untested consumer probe patterns`) was prescient — this is exactly that race, made hard-failing by iter6/7's additions. iter9 input. -2. **dmabuf-wayland↔KWin presentation handoff produces solid green** — independent of libva. Filed at [marfrit/libva-multiplanar#1](https://git.reauktion.de/marfrit/libva-multiplanar/issues/1); triage moved to dedicated peer campaign [`~/src/dmabuf-modifier-triage/`](../dmabuf-modifier-triage/) (Gitea: [marfrit/dmabuf-modifier-triage](https://git.reauktion.de/marfrit/dmabuf-modifier-triage)) opened 2026-05-08. Smoking gun identified at scaffold time: kwin-fourier currently ships `0001-transaction-bypass-watchDmaBuf-fence-wait.patch` active, which bypasses KWin's implicit-sync fence wait on dmabufs — a runtime-observable race that fits the symptom. Triage Phase 0 item 1 is the stock-kwin A/B that decides it. Doesn't gate libva-multiplanar iter9. +2. **dmabuf-wayland↔KWin presentation handoff produces solid green** — independent of libva. Filed at [marfrit/libva-multiplanar#1](https://git.reauktion.de/marfrit/libva-multiplanar/issues/1); triage in dedicated peer campaign [`~/src/dmabuf-modifier-triage/`](../dmabuf-modifier-triage/) (Gitea: [marfrit/dmabuf-modifier-triage](https://git.reauktion.de/marfrit/dmabuf-modifier-triage)). **Two prior root-cause hypotheses overturned during iter1**: (a) kwin-fourier 0001 watchDmaBuf fence-wait bypass — exonerated by stock-kwin A/B, both produce green; (b) mpv `vo_dmabuf_wayland.c` plane-semantics translation — exonerated by Phase 2 source-read of mpv 0.41.0 + Kwiboo's ffmpeg `b57fbbe` (both pieces of code do the right thing; the WAYLAND_DEBUG "different fds per plane" trace is most likely libwayland's `wl_closure_marshal` `dup_cloexec`'ing the fd at marshal time and printing the post-dup value, not actual semantic mismatch). Real layer is back open; four candidates filed in [dmabuf-modifier-triage#1 comment 252](https://git.reauktion.de/marfrit/dmabuf-modifier-triage/issues/1#issuecomment-252) (Mali-G52 panfrost EGL_dma_buf_import / KWin import deduplication / hantro kernel `dma_buf` size capping / kwin-fourier A/B environment-reset incompleteness). Cheapest decisive next probe: `lseek(EXPBUF_fd, SEEK_END)` on ohm to test hypothesis 3. Doesn't gate libva-multiplanar iter9. **Working ohm HW-decode path right now (workaround):**