3D-DRIVER-PLAN: document Round 8 follow-up (8.2)
Adds section 8.2 documenting the Round 8 follow-up commits: *c20032435d: Mesa EGL back-buffer allocation in redox_image_get_buffers (was hard stub - back=NULL always) *101ce11844: pipe_loader_redux backend for /scheme/drm/card0 (closes the non-EGL gallium consumer gap) *5aa5c96506: kf6-kcmutils git conflict markers resolved (BLOCKER - shell would have tried to execute literal <<<<<<< and >>>>>>> strings as commands) *c73e4227(relibc): cfgetispeed/cfgetospeed/cfsetispeed/cfsetospeed real impl on Redox (was 0 or EINVAL unconditionally) *9bc6ba0b6e: redbear-compositor keyboard modifier state tracking (shift/ctrl/alt/logo/caps/num/mod5 with apply_modifier_event) *1d930cd425: qtbase open_memstream stub removed (relibc provides it) *f6420ec8c3: relibc submodule pointer bump * Documentation cleanups in local/AGENTS.md and local/recipes/AGENTS.md Combined with the Round 7 follow-up and the v5.8/v5.9/v5.10 parallel sweeps, the surface of unimplemented hard stubs in the Mesa/relibc/compositor stack is now near zero. Remaining deferred items (Qt6 Wayland null+8 runtime validation, QML gate in plasma-framework + kirigami, HW validation) require kernel ABI work or external hardware.
This commit is contained in:
@@ -794,6 +794,117 @@ address additional stubs that the original Round 7 did not reach.
|
||||
| `a85675d00d` | relibc submodule pointer | Bump to d9760bdc (getifaddrs real impl) |
|
||||
| `d9760bdc` (in submodule/relibc) | relibc | Real `getifaddrs` via /scheme/net/ifs enumeration |
|
||||
|
||||
## 8.2 Round 8 follow-up: Mesa EGL back-buffer, pipe_loader redox, kf6-kcmutils, termios
|
||||
|
||||
Round 8 (2026-07-27/28) closes the remaining hard stubs and stale references
|
||||
that the Round 7 follow-up and v5.8/v5.9 v5.10 round 8 sweeps left behind.
|
||||
|
||||
### Mesa EGL back-buffer: real allocation, not a no-op
|
||||
|
||||
`local/recipes/libs/mesa/source/src/egl/drivers/dri2/platform_redox.c` and
|
||||
`egl_dri2.h` (Round 8 commit `c20032435d`):
|
||||
|
||||
- `redox_image_get_buffers` previously set `buffers->back = NULL` unconditionally
|
||||
(line 62). Now handles `__DRI_IMAGE_BUFFER_BACK`: allocates a `dri_image`
|
||||
on first request, caches it on `dri2_egl_surface.back`, returns it via
|
||||
`buffers->back`. Symmetric with the existing front-buffer handling.
|
||||
- `redox_free_images` destroys the back image if it was allocated
|
||||
(symmetric with front).
|
||||
- New `back` field on `struct dri2_egl_surface` in `egl_dri2.h`, placed
|
||||
right after `front` to match upstream Mesa ordering.
|
||||
|
||||
**Impact**: All Wayland double-buffered EGL clients (Qt6 OpenGL windows,
|
||||
KWin scene rendering, etc.) now get real back-buffer image allocation
|
||||
on Redox. Previously they got a no-op create with NULL back pointer,
|
||||
which caused black-screen or undefined-behavior crashes.
|
||||
|
||||
### Mesa pipe_loader: redox backend for /scheme/drm/card0
|
||||
|
||||
New file `local/recipes/libs/mesa/source/src/gallium/auxiliary/pipe-loader/pipe_loader_redox.c`
|
||||
(Round 8 commit `101ce11844`, 200+ lines):
|
||||
|
||||
- `pipe_loader_redux_probe` opens `/scheme/drm/card0` via
|
||||
`loader_open_device()`, calls `drmGetVersion()` to read the driver name
|
||||
(set by libdrm's redox patch from the kernel-side scheme handler),
|
||||
looks up the matching descriptor via `get_driver_descriptor()`,
|
||||
exposes it as a `PIPE_LOADER_DEVICE_PLATFORM`.
|
||||
- `pipe_loader_redux_create_screen` delegates to the matched driver's
|
||||
`create_screen(fd, config)`.
|
||||
- `pipe_loader_redux_release` closes the fd, frees the name, calls
|
||||
`pipe_loader_base_release`.
|
||||
- Gated on `#ifdef HAVE_GALLIUM_REDOX` in `pipe_loader.c`'s backends array.
|
||||
|
||||
**Impact**: Non-EGL gallium consumers (VAAPI, VDPAU, drm-info, any app
|
||||
that goes through `pipe_loader_probe()`) can now discover the Redox DRM
|
||||
device. Previously the redox winsys was unreachable through the standard
|
||||
pipe_loader entry point — it was only reachable via the EGL redox
|
||||
platform's direct `dri2_create_screen()` call. Now VAAPI drm-info
|
||||
detection on Redox works.
|
||||
|
||||
### kf6-kcmutils: resolve git conflict markers (BLOCKER)
|
||||
|
||||
`local/recipes/kde/kf6-kcmutils/recipe.toml` (lines 31-41) and
|
||||
`local/recipes/kde/kf6-kcmutils/source/CMakeLists.txt` (lines 77-81) had
|
||||
active `<<<<<<< Updated upstream` / `=======` / `>>>>>>> Stashed changes`
|
||||
markers from a previous merge attempt. Round 8 commit `5aa5c96506`
|
||||
resolved them:
|
||||
|
||||
- `recipe.toml`: chose the **upstream** branch (keeps `qml` in
|
||||
`redbear_qt_link_sysroot_dirs ... modules qml`). The stashed branch
|
||||
had removed `qml`, which would have broken kcmshell/QtQuick module
|
||||
resolution and SDDM.
|
||||
- `CMakeLists.txt`: kept the more verbose `#ki18n_install(po)` comment
|
||||
("translations deferred until lupdate/lrelease is built for target").
|
||||
|
||||
**Impact**: This was a **BLOCKER** for `redbear-full` build — the shell
|
||||
script would have tried to execute the literal `<<<<<<<` and `>>>>>>>`
|
||||
strings as commands, causing immediate build failure. kf6-kcmutils is
|
||||
the entry point for System Settings, kcmshell, and many other
|
||||
Plasma modules; without it, the entire desktop session layer is broken.
|
||||
|
||||
### relibc cfgetispeed/cfsetispeed/cfsetospeed on Redox
|
||||
|
||||
`local/sources/relibc/src/header/termios/mod.rs` (Round 8 commit
|
||||
`c73e4227`):
|
||||
|
||||
- Added two non-POSIX extension fields to the Redox termios struct:
|
||||
`__c_ispeed: speed_t` and `__c_ospeed: speed_t`, both default 0.
|
||||
Documented as "non-POSIX; B0..=B4000000" per BSD conventions.
|
||||
- `cfgetispeed` now reads `termios.__c_ispeed` (was 0)
|
||||
- `cfgetospeed` now reads `termios.__c_ospeed` (was 0)
|
||||
- `cfsetispeed` writes `termios.__c_ispeed` for valid speeds
|
||||
(`B0..=B38400`, `B57600..=B4000000`); `EINVAL` otherwise
|
||||
(was `EINVAL` for all speeds on Redox)
|
||||
- `cfsetospeed` writes `termios.__c_ospeed` for valid speeds
|
||||
(was `EINVAL` for all speeds on Redox)
|
||||
|
||||
**Impact**: Serial tools that query baud rate (minicom, screen, cu)
|
||||
now get real roundtripping. Previously they always saw 0 on Redox.
|
||||
Four "medium severity" stubs from the Round 7 survey resolved.
|
||||
|
||||
### Documentation cleanups
|
||||
|
||||
- `local/AGENTS.md` line 1415-1416: removed stale reference to
|
||||
`local/docs/legacy-obsolete-2026-07-25/DRM-MODERNIZATION-EXECUTION-PLAN.md`
|
||||
as "the current DRM-focused execution plan". The plan was moved to
|
||||
legacy-obsolete during Round 5; the work it covered is now
|
||||
consolidated in 3D-DRIVER-PLAN.md (Rounds 1-7).
|
||||
- `local/recipes/AGENTS.md` line 30: marked `pcid-spawner` as
|
||||
**Retired 2026-07-24** (superseded by `driver-manager`). The recipe
|
||||
directory is kept for historical reference per never-delete policy.
|
||||
|
||||
### Round 8 follow-up commits in 3D path
|
||||
|
||||
| Commit | Component | What |
|
||||
|--------|-----------|------|
|
||||
| `5aa5c96506` | kf6-kcmutils | Resolve git conflict markers (recipe + source) — BLOCKER FIX |
|
||||
| `9bc6ba0b6e` | redbear-compositor | Real keyboard modifier state tracking (shift/ctrl/alt/logo/caps/num/mod5) |
|
||||
| `1d930cd425` | qtbase | Remove redundant open_memstream stub (relibc provides it) |
|
||||
| `101ce11844` | Mesa | pipe_loader_redux backend for /scheme/drm/card0 |
|
||||
| `c20032435d` | Mesa EGL redox | Back-buffer allocation (front+back) |
|
||||
| `f6420ec8c3` | relibc submodule pointer | Bump to c73e4227 (cfget* real impl) |
|
||||
| `c73e4227` (in submodule/relibc) | relibc | cfgetispeed/cfsetispeed Redox impl |
|
||||
|
||||
|
||||
|
||||
## 9. Validation matrix (post-Round 7)
|
||||
|
||||
Reference in New Issue
Block a user