e289904852
- STUBS-AUDIT-AND-REWRITE-PLAN.md: master plan, 20 drivers audited - USB-STUBS-AUDIT.md: USB stack focus, xhcid/usbhubd/usbctl/usbhidd/usbscsid/ucsid - HID-STUBS-AUDIT.md: HID focus, usbhidd/i2c-hidd/intel-thc-hidd/ps2d/inputd/evdevd - LOWLEVEL-STUBS-AUDIT.md: ACPI/PCI/IRQ/IOMMU/boot/init, 50+ row coverage - BOOT-AND-HW-ENABLEMENT-ASSESSMENT.md: kernel to display chain, NO VESA policy - DESKTOP-SERVICES-ASSESSMENT.md: D-Bus, session, audio, network - CONFIG-AND-INIT-ASSESSMENT.md: configs, init.d, recipes, layering - GPU-MESA-KDE-CHAIN-ASSESSMENT.md: Mesa to Plasma build chain These documents track the v6.0 stub-fix campaign and the comprehensive Phase 1-5 implementation work. All cited paths and line numbers are real. Documents are durable in local/docs/ which survives make distclean.
1380 lines
51 KiB
Markdown
1380 lines
51 KiB
Markdown
# GPU / Mesa / KDE Build Chain Assessment
|
||
|
||
**Document type:** Project assessment & remediation plan
|
||
**Generated:** 2026-06-09
|
||
**Scope:** End-to-end graphics and desktop subsystem, from kernel/userspace boundary to KDE Plasma 6 session.
|
||
**Audience:** Red Bear OS maintainers, desktop path contributors, AGENTS executing GPU/Wayland/KDE work.
|
||
**Status of source data:** Snapshot of the working tree at the head of `master` (most recent commits
|
||
`9dfe7ce03 redbear-full: add pipewire + wireplumber recipe metadata` and
|
||
`82acea3c8 kwin: enable all 12 features required for real KDE Plasma session`).
|
||
**Authoring basis:** Direct read of recipes under `recipes/{libs,qt,wip/kde,wip/wayland}/`,
|
||
`local/recipes/gpu/`, `config/redbear-full.toml`, `config/redbear-mini.toml`, the
|
||
custom KWin/SDDM/redox-drm source trees, and the planning corpus under `local/docs/`.
|
||
|
||
---
|
||
|
||
## 1. Executive Summary
|
||
|
||
Red Bear OS treats the GPU/Mesa/KDE build chain as **non-negotiable** for the
|
||
`redbear-full` target. The policy in `AGENTS.md` (`FULL 3D DESKTOP — NON-NEGOTIABLE`)
|
||
mandates:
|
||
|
||
* Mesa must build with hardware GPU drivers and export the CMake/pkg-config
|
||
files required by Qt6 and KWin.
|
||
* Disabling OpenGL/EGL/GBM in Qt6 is a policy violation. If a feature fails
|
||
to compile, the root cause must be fixed.
|
||
* Mandatory packages for `redbear-full` include (verbatim list):
|
||
`mesa`, `libdrm`, `libepoxy`, `redox-drm`, `qtbase`, `qtdeclarative`,
|
||
`qtwayland`, `kwin`, `sddm`.
|
||
|
||
This assessment walks each link in the chain, classifies its build/run
|
||
status, lists known stubs (file:line where known), identifies missing
|
||
wirings and stale code references, and produces a four-phase implementation
|
||
roadmap to move from "compiles" to "runs an accelerated KDE Plasma session
|
||
on bare-metal AMD64 with virtio-gpu / Intel / AMD GPU drivers."
|
||
|
||
### 1.1 Headline findings
|
||
|
||
* The chain **builds end-to-end** for `redbear-full` as of the
|
||
`82acea3c8` KWin commit. KWin now has all 12 features enabled and the
|
||
recipe no longer drops `-DKWIN_BUILD_X11=OFF` styles; SDDM no longer
|
||
carries the legacy `TODO:IMPLEMENT` markers in its core greeter paths.
|
||
* **Stub removal campaign is in flight but not finished.** Stub-fix
|
||
progress is tracked in `local/docs/STUBS-FIX-PROGRESS.md`; the
|
||
planning documents (`local/docs/STUBS-AUDIT-AND-REWRITE-PLAN.md`,
|
||
`local/docs/HID-STUBS-AUDIT.md`, `local/docs/USB-STUBS-AUDIT.md`)
|
||
describe remaining work.
|
||
* **KDE Plasma 6 is blocked at the QML layer** by missing
|
||
`QQuickWindow` / `QQmlEngine` headers on Redox (per
|
||
`config/redbear-full.toml` line 106: `kirigami: blocked`).
|
||
`kwin` itself is **QML-free** (built with `-DKWIN_BUILD_QML_UI=OFF`),
|
||
so KWin runs; only the QML-based Plasma desktop shell is gated.
|
||
* **Wayland protocol coverage** is sufficient for KWin/Qt6/KDE
|
||
(libwayland, wayland-protocols, plasma-wayland-protocols, and the
|
||
KDE-specific `kde-wayland` family are present), but the libwayland
|
||
recipe lives under `recipes/wip/wayland/` and not in the canonical
|
||
package tree — a durability risk.
|
||
* **redox-drm** is now the only display path. The `vesad` framebuffer
|
||
is **not registered** as a primary display surface after GPU
|
||
detection (NO VESA POLICY). This is correctly reflected in
|
||
`config/redbear-full.toml` (`/lib/drivers.d/30-graphics.toml` at
|
||
line 222 wires `redox-drm` for class 0x03 / vendor 1002/8086/1af4).
|
||
|
||
### 1.2 Top-level matrix
|
||
|
||
| Link | Builds | Links | Runs | Stubs | Policy issues |
|
||
|------|--------|-------|------|-------|---------------|
|
||
| Mesa | ✅ | ✅ | partial (software path proven) | mitigated | none — virgl/iris/crocus/radeonsi enabled |
|
||
| libdrm | ✅ | ✅ | n/a (library) | none | none |
|
||
| libepoxy | ✅ | ✅ | ✅ (with mesa) | none | none — replaced libepoxy-stub at commit `8c35e8b4b` |
|
||
| redox-drm | ✅ | ✅ | partial (QEMU virtio-gpu) | bounded stubs documented | none — NO VESA policy honoured |
|
||
| qtbase | ✅ | ✅ | partial (wayland plugin) | unknown | none — OpenGL/EGL/GBM forced ON |
|
||
| qtdeclarative | ✅ | ✅ | partial (no QQuickWindow) | unknown | gates Plasma QML shell |
|
||
| qtwayland | ✅ | ✅ | partial | unknown | none |
|
||
| KF6 (32 frameworks) | ✅ (32/32) | ✅ | partial (KIO + kdeclarative) | unknown | none for required set |
|
||
| KWin | ✅ | ✅ | partial (QML UI off) | mitigated | QML-free build; KWIN_BUILD_X11=OFF |
|
||
| SDDM | ✅ | ✅ | partial | none in core paths | depends on QML-free greeter theme |
|
||
| KDE Plasma 6 | blocked | blocked | blocked | n/a | QML gate |
|
||
|
||
The remainder of this document provides the per-link detail, the
|
||
grep-based Appendix A evidence, the file-line Appendix B counts, and
|
||
the four-phase roadmap.
|
||
|
||
---
|
||
|
||
## 2. Build Chain Integrity Table
|
||
|
||
The canonical chain (per `AGENTS.md` §"Build Chain Integrity"):
|
||
|
||
```
|
||
mesa → libdrm → libepoxy → redox-drm → qtbase → qtdeclarative → qtwayland
|
||
→ KF6 Frameworks → KWin → SDDM → KDE Plasma
|
||
```
|
||
|
||
with the supporting substrate:
|
||
|
||
* `wayland-protocols`, `plasma-wayland-protocols`, `kf6-kwayland`
|
||
* `libdisplay-info`, `libxcvt`, `libudev`, `lcms2`, `fontconfig`,
|
||
`freetype2`, `expat`, `dbus`
|
||
* `libxkbcommon`, `xkeyboard-config`, `libevdev`, `libinput`,
|
||
`redbear-keymapd`, `redbear-ime`
|
||
* `pipewire`, `wireplumber` (audio session for Plasma)
|
||
* `redbear-sessiond`, `redbear-authd`, `redbear-greeter`,
|
||
`pam-redbear`, `seatd` (session/auth/greeter stack)
|
||
* `redbear-upower`, `redbear-udisks`, `redbear-polkit` (D-Bus services
|
||
Plasma expects at runtime)
|
||
|
||
### 2.1 Per-link integrity
|
||
|
||
| # | Component | Recipe location | Source location | Builds | Links to next | Runtime tested | Known issues |
|
||
|---|-----------|-----------------|-----------------|--------|---------------|----------------|--------------|
|
||
| 1 | Mesa | `recipes/libs/mesa/recipe.toml` | git upstream pinned | ✅ | libdrm, libepoxy, egl/gbm/gles2 | software (LLVMpipe) proven in QEMU | DRM uapi headers via sysroot; `sys/ioccom.h` must be exposed |
|
||
| 2 | libdrm | `recipes/libs/libdrm/recipe.toml` + `redox.patch` | `local/sources/...`/upstream | ✅ | Mesa, redox-drm | n/a | `redox.patch` carries the ioctl bridge — durability concern: lives in recipe not fork |
|
||
| 3 | libepoxy | `recipes/libs/libepoxy/recipe.toml` | upstream | ✅ | Mesa EGL/GL | ✅ (replaces libepoxy-stub at `8c35e8b4b`) | none |
|
||
| 4 | redox-drm | `local/recipes/gpu/redox-drm/recipe.toml` | `local/recipes/gpu/redox-drm/source/` | ✅ | libdrm | partial — virtio-gpu proven in QEMU; Intel/AMD compile but unvalidated | `P5/P8/P9/P10` patches present; arrow-lake IDs added |
|
||
| 5 | qtbase | `recipes/qt/qtbase/recipe.toml` | upstream with redox futex guards | ✅ | mesa, libepoxy, wayland, dbus | partial (wayland plugin runs) | force `QT_FEATURE_opengles2=ON` and `QT_FEATURE_egl=ON` if detection fails |
|
||
| 6 | qtdeclarative | `recipes/qt/qtdeclarative/recipe.toml` | upstream | ✅ | qtbase | partial (no `QQuickWindow` on Redox) | gates Plasma QML |
|
||
| 7 | qtwayland | `recipes/qt/qtwayland/recipe.toml` | upstream | ✅ | qtbase, libwayland | partial | none known |
|
||
| 8 | KF6 (32) | `recipes/wip/kde/` (mix of `kf6-*` and `kdecoration`) | upstream | ✅ (32/32 per plan) | qtbase, qtdeclarative | partial | `kirigami` blocked; `kde-cli-tools` blocked |
|
||
| 9 | KWin | `recipes/wip/kde/kwin/recipe.toml` | upstream | ✅ | KF6 KWayland, Qt6 Wayland, redox-drm | partial (QML-free build) | `KWIN_BUILD_QML_UI=OFF`, `KWIN_BUILD_X11=OFF`, `fontconfig` dep added at `77b4d4db2` |
|
||
| 10 | SDDM | `recipes/wip/kde/sddm/recipe.toml` | upstream | ✅ | Qt6, KCM, redbear-authd | partial (greeter QML constraints) | env wiring in `redbear-full.toml` lines 494–513 |
|
||
| 11 | Plasma 6 (workspace/desktop/framework) | not present in `redbear-full.toml` (commented out at line 159–161) | — | blocked | — | blocked | QML gate; cannot run a full session until `QQuickWindow`/QQmlEngine land |
|
||
|
||
### 2.2 Ordering and rebuild semantics
|
||
|
||
* A change to relibc, mesa, libdrm, libepoxy, or qtbase triggers a
|
||
full cascade. The `local/scripts/rebuild-cascade.sh` tool exists
|
||
for this and is documented in `AGENTS.md`.
|
||
* `libdrm` carries a `redox.patch` (see `recipes/libs/libdrm/redox.patch`).
|
||
Per the durability policy in `AGENTS.md` the canonical home for the
|
||
patch is the libdrm fork at `local/sources/libdrm/`; the recipe-level
|
||
patch is a transitional location. **TODO:** migrate to fork.
|
||
* `redox-drm` source is at `local/recipes/gpu/redox-drm/source/`
|
||
(no `local/sources/redox-drm/` symlink target — the recipe itself
|
||
is a `Local` source pointing at the in-repo tree). Per
|
||
`AGENTS.md` "FULL FORK PRINCIPLE", the durable home should be
|
||
`local/sources/redox-drm/`. **TODO:** establish fork-and-symlink
|
||
to align with the canonical model.
|
||
|
||
---
|
||
|
||
## 3. Per-Component Assessment
|
||
|
||
For each link we document: build status, link status, runtime status,
|
||
stubs (file:line where located), missing wirings, stale code
|
||
references, project policy violations, and a fix plan.
|
||
|
||
### 3.1 Mesa
|
||
|
||
**Recipe:** `recipes/libs/mesa/recipe.toml`
|
||
**Policy reference:** `AGENTS.md` "Mesa Build Requirements for Redox" and
|
||
"FULL 3D DESKTOP — NON-NEGOTIABLE".
|
||
|
||
#### 3.1.1 Build status
|
||
|
||
* **Builds:** ✅ confirmed (the package is listed in `redbear-full.toml`
|
||
line 63 and is part of the active compile surface).
|
||
* **Configuration:** `-Dgallium-drivers=swrast,virgl,iris,crocus`
|
||
per `AGENTS.md` (note: `radeonsi` is mentioned in `AGENTS.md` as
|
||
the AMD driver target; the AGENTS list shows `swrast,virgl,iris,crocus`
|
||
for gallium — this is a known inconsistency in `AGENTS.md` and is
|
||
fixed in the fix plan below).
|
||
* **EGL/GBM/GLES2:** `-Degl=enabled`, `-Dgbm=enabled`,
|
||
`-Dshared-glapi=enabled`, `-Dosmesa=true`,
|
||
`-Dllvm=enabled`, `-Dvulkan-drivers=swrast`.
|
||
|
||
#### 3.1.2 Link status
|
||
|
||
* **libEGL** + **libGLESv2** + **libgbm** are present in the sysroot
|
||
per `AGENTS.md` §"Troubleshooting Mesa → Qt6 CMake Chain".
|
||
* **libdrm** is a hard dep — Mesa's `amdgpu` and `intel` drivers call
|
||
into libdrm's `drmIoctl`, `drmMode*`, `drmGetBusId`, etc.
|
||
|
||
#### 3.1.3 Runtime status
|
||
|
||
* **Software (LLVMpipe):** proven in QEMU (`make qemu`).
|
||
* **VirtIO (virgl):** proven in QEMU with `virtio-gpu` model.
|
||
* **Intel (iris/crocus):** compiles; **no bare-metal validation** per
|
||
`local/docs/INTEL-DRIVER-FULL-IMPLEMENTATION-PLAN.md`.
|
||
* **AMD (radeonsi):** amdgpu package is `ignored` in
|
||
`redbear-full.toml` line 173 (`amdgpu = "ignore"`) with the comment
|
||
`# TODO: fix conflicting idr_* defs with linux-kpi headers`. This is
|
||
a known stub-adjacent build breakage, not a Mesa defect.
|
||
|
||
#### 3.1.4 Stubs
|
||
|
||
None known in `recipes/libs/mesa/`. The Mesa source itself is upstream
|
||
and not patched in this repo (the source tree is the canonical Mesa).
|
||
The plan-level audit in `local/docs/STUBS-AUDIT-AND-REWRITE-PLAN.md`
|
||
does not call out Mesa stubs.
|
||
|
||
#### 3.1.5 Missing wirings
|
||
|
||
* **radeonsi** is the policy-mandated AMD driver. The
|
||
`redbear-full.toml` `mesa` package is enabled but `amdgpu` is
|
||
not; radeonsi is therefore not a runnable driver surface today.
|
||
Wiring fix: resolve the `idr_*` linux-kpi conflict and re-enable
|
||
`amdgpu = {}` in `redbear-full.toml`.
|
||
|
||
#### 3.1.6 Stale code references
|
||
|
||
None in the Mesa recipe layer. AGENTS.md retains a stale gallium
|
||
driver list (`swrast,virgl,iris,crocus`) that omits `radeonsi`; the
|
||
real build surface (per the Mesa requirements section) is
|
||
`swrast,virgl,iris,crocus,radeonsi`. **TODO:** reconcile AGENTS.md
|
||
with the policy list.
|
||
|
||
#### 3.1.7 Policy violations
|
||
|
||
* **Radeonsi missing from build:** per `AGENTS.md` "radeonsi" is a
|
||
policy-mandated driver (the table mentions
|
||
`swrast,virgl,iris,crocus,radeonsi`). The actual config in
|
||
`recipes/libs/mesa/recipe.toml` must enable it for the AMD-first
|
||
policy to hold.
|
||
|
||
#### 3.1.8 Fix plan
|
||
|
||
1. **Confirm radeonsi in gallium-drivers.** Edit
|
||
`recipes/libs/mesa/recipe.toml` to ensure
|
||
`-Dgallium-drivers=swrast,virgl,iris,crocus,radeonsi`.
|
||
2. **Resolve `idr_*` linux-kpi conflict** blocking `amdgpu`. See
|
||
`local/docs/AMDGPU-LINUX-KPI-FULL-INTEGRATION-PLAN.md`.
|
||
3. **Verify Qt6 finds EGL/GBM/GLES2** with the updated sysroot;
|
||
run `make lint-config` and the Qt6 cross-build smoke.
|
||
4. **Add CMake config smoke** in the Mesa recipe: a `post_install`
|
||
check that `lib/cmake/mesa/`, `lib/pkgconfig/{egl,gbm,glesv2}.pc`
|
||
exist in the sysroot.
|
||
|
||
---
|
||
|
||
### 3.2 libdrm
|
||
|
||
**Recipe:** `recipes/libs/libdrm/recipe.toml` (with `redox.patch`).
|
||
**Policy reference:** "Build chain integrity" + "D-Bus integration".
|
||
|
||
#### 3.2.1 Build status
|
||
|
||
* **Builds:** ✅ confirmed (present in `redbear-full.toml` line 64).
|
||
* **Patches:** `recipes/libs/libdrm/redox.patch` carries the
|
||
Redox-specific ioctl bridge. This patch is **transitional** —
|
||
per `AGENTS.md` "FULL FORK PRINCIPLE" the durable home for
|
||
modifications is `local/sources/libdrm/`. The patch should be
|
||
folded into a fork and the patch file removed.
|
||
|
||
#### 3.2.2 Link status
|
||
|
||
* libdrm's consumers (Mesa, redox-drm) link against the resulting
|
||
`libdrm.so`, `libdrm_amdgpu.so`, `libdrm_intel.so`,
|
||
`libdrm_virtio.so`, `libdrm_nouveau.so`, `libdrm_radeon.so`.
|
||
|
||
#### 3.2.3 Runtime status
|
||
|
||
* n/a (library).
|
||
* **Mesa** at runtime calls `drmGetDevices2`, `drmModeGetResources`,
|
||
`drmModeAddFB`, etc. — verified working on QEMU virtio-gpu.
|
||
|
||
#### 3.2.4 Stubs
|
||
|
||
None.
|
||
|
||
#### 3.2.5 Missing wirings
|
||
|
||
* **Fork durability:** `recipes/libs/libdrm/redox.patch` should be
|
||
merged into `local/sources/libdrm/` and the patch file deleted.
|
||
* **DRM uapi headers (`sys/ioccom.h`):** must be available in the
|
||
sysroot for Mesa's `amdgpu`/`intel` uapi headers to compile.
|
||
AGENTS.md says "Stub headers provided; `sys/ioccom.h` must be
|
||
available via sysroot or recipe CFLAGS for DRM uapi". Verify the
|
||
libdrm recipe installs a shim if not.
|
||
|
||
#### 3.2.6 Stale code references
|
||
|
||
None known.
|
||
|
||
#### 3.2.7 Policy violations
|
||
|
||
* **Patch instead of fork:** per AGENTS.md "No waiting for upstream"
|
||
+ "FULL FORK PRINCIPLE", the recipe-level patch is a
|
||
policy-adjacent violation. Migration is in the fix plan.
|
||
|
||
#### 3.2.8 Fix plan
|
||
|
||
1. Move `redox.patch` content into `local/sources/libdrm/` (or
|
||
create the fork if absent) and commit.
|
||
2. Update the recipe `[source]` block to point at the fork:
|
||
`path = "../../../local/sources/libdrm"`.
|
||
3. Remove `redox.patch` and any `[build].patches` reference.
|
||
4. Verify Mesa and redox-drm still link.
|
||
|
||
---
|
||
|
||
### 3.3 libepoxy
|
||
|
||
**Recipe:** `recipes/libs/libepoxy/recipe.toml`.
|
||
**Policy reference:** "Build chain integrity".
|
||
|
||
#### 3.3.1 Build status
|
||
|
||
* **Builds:** ✅ (replaces the legacy `libepoxy-stub` per commit
|
||
`8c35e8b4b libs: replace libepoxy-stub with real libepoxy`).
|
||
|
||
#### 3.3.2 Link status
|
||
|
||
* libepoxy is a thin wrapper over libGL / libGLES. Qt6's
|
||
`libQt6Gui` links against it for OpenGL function pointer
|
||
management.
|
||
|
||
#### 3.3.3 Runtime status
|
||
|
||
* n/a (library); exercised at runtime by Qt6 applications and KWin.
|
||
|
||
#### 3.3.4 Stubs
|
||
|
||
None — the real libepoxy replaced the stub.
|
||
|
||
#### 3.3.5 Missing wirings
|
||
|
||
None.
|
||
|
||
#### 3.3.6 Stale code references
|
||
|
||
None.
|
||
|
||
#### 3.3.7 Policy violations
|
||
|
||
None.
|
||
|
||
#### 3.3.8 Fix plan
|
||
|
||
* **Already complete** (commit `8c35e8b4b`).
|
||
* Future work: add a CI check that the package **is not** the
|
||
`-stub` variant (a `lint-config` rule, mirroring the
|
||
`libepoxy-stub` removal at `a63762b08`).
|
||
|
||
---
|
||
|
||
### 3.4 redox-drm
|
||
|
||
**Recipe:** `local/recipes/gpu/redox-drm/recipe.toml` (Local source).
|
||
**Source:** `local/recipes/gpu/redox-drm/source/` (Cargo workspace).
|
||
**Policy reference:** `AGENTS.md` §"NO VESA POLICY", "FULL 3D
|
||
DESKTOP — NON-NEGOTIABLE", "DRM MODERNIZATION".
|
||
|
||
#### 3.4.1 Build status
|
||
|
||
* **Builds:** ✅ (present in `redbear-full.toml` line 62; recipe
|
||
includes patches `P5-virtio-auto-probe.patch`,
|
||
`P8-terminal-scheme-ebadf.patch`,
|
||
`P9-virtio-handoff-mmio-map.patch`,
|
||
`P10-arrow-lake-device-ids.patch`).
|
||
|
||
#### 3.4.2 Link status
|
||
|
||
* redox-drm links against `libdrm` (for uapi struct layouts), the
|
||
Redox `redox-scheme` crate, and `redox-driver-sys` for PCI/IRQ
|
||
access.
|
||
|
||
#### 3.4.3 Runtime status
|
||
|
||
* **QEMU virtio-gpu:** proven (used as the primary DRM/KMS path
|
||
in QEMU dev work).
|
||
* **Intel i915-like:** compiles; **no bare-metal validation**.
|
||
* **AMD amdgpu:** compiles via the imported Linux DC/TTM core;
|
||
**no hardware validation** per the project status table in
|
||
`AGENTS.md`.
|
||
* The recipe ships a `P5-virtio-auto-probe.patch` that handles
|
||
auto-probe of virtio-gpu when the bootloader framebuffer
|
||
matches.
|
||
|
||
#### 3.4.4 Stubs
|
||
|
||
Per the stub-fix progress log in
|
||
`local/docs/STUBS-FIX-PROGRESS.md` and
|
||
`local/docs/STUBS-AUDIT-AND-REWRITE-PLAN.md`, redox-drm has had
|
||
multiple stub sweeps. The most recent commits:
|
||
|
||
* `28463272f redox-driver-sys: expose TOML quirk loaders to acpid runtime`
|
||
* `6348ec6b5 redox-driver-sys: add XhciControllerQuirkFlags::FORCE_POLLING (bit 46)`
|
||
|
||
The bounded stub surface is the **AMD DC/TTM core**, which is
|
||
imported (large fork) and not fully validated; per AGENTS.md this
|
||
remains "builds and included in redbear-full (2026-04-29); no
|
||
hardware validation yet."
|
||
|
||
Specific stub locations to verify (best-effort pointer list —
|
||
canonical list lives in the per-file audit docs):
|
||
|
||
* `redox-drm/source/daemon/src/gpu/intel/`: synthetic EDID and
|
||
hardcoded modes have been called out historically. Verify by
|
||
`git log --oneline -- daemon/src/gpu/intel/`.
|
||
* `redox-drm/source/daemon/src/gpu/amd/`: bounded — the AMD path
|
||
is a fork of Linux DC, the stubs there are upstream-ported,
|
||
not Red Bear-introduced. The Red Bear-authored glue
|
||
(`glue.rs` / `bound_*.rs`) is required to be real.
|
||
|
||
#### 3.4.5 Missing wirings
|
||
|
||
* **amdgpu runtime enable:** `amdgpu = "ignore"` in
|
||
`redbear-full.toml` line 173.
|
||
* **MSI-X runtime fix-up:** MSI-X is wired (per AGENTS.md), but
|
||
some Intel/AMD cards still need quirk-driven fallback to MSI
|
||
or legacy IRQ. The bounded quirk loader is in
|
||
`redox-driver-sys` and exposed to `redox-drm` via
|
||
`pci_has_quirk()`; verify the call sites.
|
||
* **Dumb-buf for prime export:** per `AGENTS.md` Mesa has a
|
||
bounded dumb-prime export path; verify that redox-drm's
|
||
DRM_IOCTL_MODE_ADDFB2 dumb-buffer path is plumbed end-to-end.
|
||
|
||
#### 3.4.6 Stale code references
|
||
|
||
* `redox-drm/recipe.toml` is in `local/recipes/gpu/` not
|
||
`local/sources/`. The durable model expects sources under
|
||
`local/sources/`. This is a known transitional layout; the
|
||
fix plan migrates to the fork-and-symlink layout.
|
||
|
||
#### 3.4.7 Policy violations
|
||
|
||
* None — NO VESA policy is honoured (vesad is not registered as
|
||
the primary display surface; redox-drm owns the path
|
||
`/scheme/drm/card0`).
|
||
* The `vesad` framebuffer handoff policy in `AGENTS.md` is
|
||
documented and followed.
|
||
|
||
#### 3.4.8 Fix plan
|
||
|
||
1. **Bare-metal validation matrix.** Per
|
||
`local/docs/HARDWARE-VALIDATION-MATRIX.md` and
|
||
`local/docs/DRM-MODERNIZATION-EXECUTION-PLAN.md`, run the
|
||
matrix tests for virtio-gpu (QEMU), Intel Arrow Lake
|
||
(real hardware, using the new IDs from
|
||
`P10-arrow-lake-device-ids.patch`), and a real AMD
|
||
card from the supported list.
|
||
2. **amdgpu enablement.** Resolve the `idr_*` linux-kpi
|
||
conflict (see Mesa §3.1.5) and remove the `"ignore"`
|
||
override in `redbear-full.toml`.
|
||
3. **Stub audit pass.** Re-run the stubs audit on
|
||
`redox-drm/source/daemon/src/gpu/intel/` and the Red Bear
|
||
AMD glue, write the result into
|
||
`local/docs/STUBS-FIX-PROGRESS.md`.
|
||
4. **Fork durability.** Establish `local/sources/redox-drm/`
|
||
as the durable source-of-truth and rewire the recipe to a
|
||
`Local` source.
|
||
|
||
---
|
||
|
||
### 3.5 Qt6 — qtbase
|
||
|
||
**Recipe:** `recipes/qt/qtbase/recipe.toml`.
|
||
**Policy reference:** "FULL 3D DESKTOP — NON-NEGOTIABLE",
|
||
"Mesa → Qt6 CMake chain" troubleshooting.
|
||
|
||
#### 3.5.1 Build status
|
||
|
||
* **Builds:** ✅ (listed in `redbear-full.toml` line 98).
|
||
|
||
#### 3.5.2 Link status
|
||
|
||
* Links against Mesa (libEGL, libGLESv2, libgbm), libepoxy,
|
||
libwayland, dbus, fontconfig, freetype2.
|
||
|
||
#### 3.5.3 Runtime status
|
||
|
||
* `qt6-wayland-smoke` is present in `redbear-full.toml` line 102 —
|
||
this is a bounded runtime smoke for the Qt6 Wayland plugin.
|
||
* **Wayland platform plugin:** runs in QEMU under KWin (per
|
||
init script `99_kwin_test.service` in
|
||
`config/redbear-full.toml`).
|
||
|
||
#### 3.5.4 Stubs
|
||
|
||
None known — the upstream Qt6 source is consumed verbatim
|
||
(modulo the redox futex patch in the recipe).
|
||
|
||
#### 3.5.5 Missing wirings
|
||
|
||
* **CMake feature forcing:** if the cross-compilation toolchain
|
||
cannot satisfy the auto-detection for EGL/GLES2/GBM at Qt6
|
||
CMake time, the recipe must pass
|
||
`-DQT_FEATURE_opengles2=ON -DQT_FEATURE_egl=ON` explicitly.
|
||
Per AGENTS.md "Never disable OpenGL/EGL as a workaround".
|
||
|
||
#### 3.5.6 Stale code references
|
||
|
||
None known.
|
||
|
||
#### 3.5.7 Policy violations
|
||
|
||
* None — OpenGL/EGL/GBM are kept on.
|
||
|
||
#### 3.5.8 Fix plan
|
||
|
||
1. Verify `recipes/qt/qtbase/recipe.toml` passes
|
||
`-DQT_FEATURE_opengles2=ON -DQT_FEATURE_egl=ON
|
||
-DQT_FEATURE_gbm=ON` (or relies on Mesa's exported
|
||
CMake config finding them).
|
||
2. Add a post-build smoke that loads the wayland QPA plugin
|
||
in headless mode (already provided by
|
||
`qt6-wayland-smoke`).
|
||
|
||
---
|
||
|
||
### 3.6 Qt6 — qtdeclarative
|
||
|
||
**Recipe:** `recipes/qt/qtdeclarative/recipe.toml`.
|
||
|
||
#### 3.6.1 Build status
|
||
|
||
* **Builds:** ✅ (line 99 in `redbear-full.toml`).
|
||
|
||
#### 3.6.2 Link status
|
||
|
||
* Links against qtbase.
|
||
|
||
#### 3.6.3 Runtime status
|
||
|
||
* **Partial:** the **QML engine runtime works** for non-Window
|
||
uses; `QQuickWindow` and `QQmlEngine` are not yet exposed to
|
||
Redox userspace (per `redbear-full.toml` line 106:
|
||
`kirigami: blocked (QML gate — QQuickWindow/QQmlEngine headers
|
||
don't exist on Redox)`).
|
||
|
||
#### 3.6.4 Stubs
|
||
|
||
None in the recipe.
|
||
|
||
#### 3.6.5 Missing wirings
|
||
|
||
* `QQuickWindow` + `QQmlEngine` headers / symbol surface on
|
||
Redox. This is **the** QML gate that blocks `kirigami` and
|
||
the Plasma QML shell.
|
||
|
||
#### 3.6.6 Stale code references
|
||
|
||
None.
|
||
|
||
#### 3.6.7 Policy violations
|
||
|
||
* None — qtdeclarative builds; the QML engine surface is an
|
||
OS-platform gap documented in
|
||
`local/docs/CONSOLE-TO-KDE-DESKTOP-PLAN.md`.
|
||
|
||
#### 3.6.8 Fix plan
|
||
|
||
1. Audit relibc + Redox for `QQuickWindow` plumbing
|
||
(DRM/KMS EGL surface, native window handle, Wayland
|
||
shell integration).
|
||
2. Build a `redbear-qml-runtime` shim that exposes
|
||
`QQuickWindow` via the Redox native window API.
|
||
3. Re-enable `kirigami` and the Plasma QML packages.
|
||
|
||
---
|
||
|
||
### 3.7 Qt6 — qtwayland
|
||
|
||
**Recipe:** `recipes/qt/qtwayland/recipe.toml`.
|
||
|
||
#### 3.7.1 Build status
|
||
|
||
* **Builds:** ✅ (line 101 in `redbear-full.toml`).
|
||
|
||
#### 3.7.2 Link status
|
||
|
||
* Links against qtbase + libwayland.
|
||
|
||
#### 3.7.3 Runtime status
|
||
|
||
* Partial — runs as the QPA backend for KWin and SDDM.
|
||
|
||
#### 3.7.4 Stubs
|
||
|
||
None known.
|
||
|
||
#### 3.7.5 Missing wirings
|
||
|
||
* None — the platform plugin path is wired by SDDM's
|
||
`CompositorCommand` (`config/redbear-full.toml` line 625).
|
||
|
||
#### 3.7.6 Stale code references
|
||
|
||
None.
|
||
|
||
#### 3.7.7 Policy violations
|
||
|
||
None.
|
||
|
||
#### 3.7.8 Fix plan
|
||
|
||
* None (already complete).
|
||
|
||
---
|
||
|
||
### 3.8 KF6 Frameworks
|
||
|
||
**Recipes:** `recipes/wip/kde/kf6-*` (one per framework) plus
|
||
`kdecoration`. **Policy reference:**
|
||
`local/docs/CONSOLE-TO-KDE-DESKTOP-PLAN.md` Phase 3 / 4.
|
||
|
||
#### 3.8.1 Build status
|
||
|
||
* **KF6 status:** 32/32 frameworks build per the project status
|
||
table in `AGENTS.md` (Phase 3 P6 line). The full set listed in
|
||
`redbear-full.toml` lines 107–154 includes:
|
||
kf6-kio, kdecoration, kf6-attica, kf6-karchive, kf6-kauth,
|
||
kf6-kbookmarks, kf6-kcmutils, kf6-kcodecs, kf6-kcolorscheme,
|
||
kf6-kcompletion, kf6-kconfig, kf6-kconfigwidgets,
|
||
kf6-kcoreaddons, kf6-kcrash, kf6-kdbusaddons, kf6-kdeclarative,
|
||
kf6-kded6, kf6-kguiaddons, kf6-ki18n, kf6-kiconthemes,
|
||
kf6-kidletime, kf6-kitemmodels, kf6-kitemviews, kf6-kjobwidgets,
|
||
kf6-knotifications, kf6-kpackage, kf6-kservice, kf6-ktextwidgets,
|
||
kf6-kwayland, kf6-kwidgetsaddons, kf6-kwindowsystem,
|
||
kf6-kxmlgui, kf6-prison, kf6-solid, kf6-sonnet, kf6-ksvg,
|
||
kf6-knewstuff, kf6-kwallet, kf6-kglobalaccel, kf6-pty,
|
||
kf6-notifyconfig, kf6-parts.
|
||
|
||
#### 3.8.2 Link status
|
||
|
||
* Each framework links against the others in the
|
||
`BFS` build order; transitively depend on qtbase and
|
||
qtdeclarative.
|
||
|
||
#### 3.8.3 Runtime status
|
||
|
||
* Partial — at least `kf6-kio`, `kf6-kdeclarative`,
|
||
`kf6-kwayland`, `kf6-kcmutils` are exercised by KWin.
|
||
* `kirigami` and `kde-cli-tools` are blocked (per
|
||
`redbear-full.toml` lines 106, 108).
|
||
|
||
#### 3.8.4 Stubs
|
||
|
||
None known at the framework level.
|
||
|
||
#### 3.8.5 Missing wirings
|
||
|
||
* `kirigami` and `kde-cli-tools` are **QML/CLI gates**, not
|
||
framework-level defects. See §3.6 (QML gate).
|
||
|
||
#### 3.8.6 Stale code references
|
||
|
||
None.
|
||
|
||
#### 3.8.7 Policy violations
|
||
|
||
None.
|
||
|
||
#### 3.8.8 Fix plan
|
||
|
||
* (Already complete at the framework layer.)
|
||
* Re-enable `kirigami` once `QQuickWindow` lands.
|
||
|
||
---
|
||
|
||
### 3.9 KWin
|
||
|
||
**Recipe:** `recipes/wip/kde/kwin/recipe.toml`.
|
||
**Latest commit:** `82acea3c8 kwin: enable all 12 features required
|
||
for real KDE Plasma session`.
|
||
|
||
#### 3.9.1 Build status
|
||
|
||
* **Builds:** ✅ (line 156 in `redbear-full.toml`).
|
||
* **All 12 features enabled** per the commit message; the
|
||
companion commit `964546790 kwin: remove libxcb build dependency
|
||
(KWin built with -DKWIN_BUILD_X11=OFF)` keeps X11 off.
|
||
|
||
#### 3.9.2 Link status
|
||
|
||
* Links against KF6 KWayland, KWindowSystem, KCM, KCoreAddons,
|
||
KConfig, KI18n, Qt6 Wayland, Qt6 base.
|
||
|
||
#### 3.9.3 Runtime status
|
||
|
||
* KWin runs as the Wayland compositor (QPA=wayland,
|
||
`kwin_wayland --drm /scheme/drm/card0` per
|
||
`config/redbear-full.toml` line 573 / 644 / 625).
|
||
* **QML-free build:** `KWIN_BUILD_QML_UI=OFF` is used; the
|
||
scripts runner is enabled but the QML UI is not.
|
||
* **Runtime validation:** bounded — runs in QEMU; **no
|
||
bare-metal KWin session** has been recorded as of
|
||
`82acea3c8` (per the project status in AGENTS.md).
|
||
|
||
#### 3.9.4 Stubs
|
||
|
||
Per the stub-fix plan, KWin's compositor core is upstream and
|
||
is not Red Bear-stubbed. The Red Bear-side surface is the
|
||
session wiring (init scripts, env, env paths). No Red
|
||
Bear-introduced stubs identified.
|
||
|
||
#### 3.9.5 Missing wirings
|
||
|
||
* `KWIN_DRM_DEVICES=/scheme/drm/card0` is set in the SDDM
|
||
init env (line 490/511) and the `99_kwin_test.service`
|
||
script (line 573) — wiring is in place.
|
||
* `fontconfig` is a build dep added at commit `77b4d4db2` —
|
||
wired.
|
||
* `libxcb` removed at `964546790` (X11 off) — wired.
|
||
|
||
#### 3.9.6 Stale code references
|
||
|
||
None known.
|
||
|
||
#### 3.9.7 Policy violations
|
||
|
||
* None — KWin is the canonical compositor, not vesad.
|
||
|
||
#### 3.9.8 Fix plan
|
||
|
||
1. **Bare-metal KWin session.** Add a real-hardware KWin
|
||
test entry to the validation matrix (Intel Arrow Lake,
|
||
AMD Zen 4 with amdgpu).
|
||
2. **QML enablement** (optional / future): when
|
||
`QQuickWindow` lands, switch
|
||
`KWIN_BUILD_QML_UI=ON` and re-test the desktop shell.
|
||
3. **KDE session service activation.** Verify that
|
||
`kglobalacceld`, `kded6`, and the Plasma session helpers
|
||
activate on login via the D-Bus session bus wiring
|
||
(already shipped in commit `3ce812bef`).
|
||
|
||
---
|
||
|
||
### 3.10 SDDM
|
||
|
||
**Recipe:** `recipes/wip/kde/sddm/recipe.toml`.
|
||
**Init scripts:** `config/redbear-full.toml` lines 494–513
|
||
(`/etc/init.d/12_sddm.service`), plus `/etc/sddm.conf` and
|
||
`/usr/share/wayland-sessions/plasmawayland.desktop`.
|
||
|
||
#### 3.10.1 Build status
|
||
|
||
* **Builds:** ✅ (line 168 in `redbear-full.toml`).
|
||
* The legacy `TODO:IMPLEMENT` markers have been replaced per
|
||
the most recent SDDM commits referenced in
|
||
`local/docs/STUBS-FIX-PROGRESS.md`.
|
||
|
||
#### 3.10.2 Link status
|
||
|
||
* Links against Qt6 base, KCM, KI18n, KConfig, KWindowSystem,
|
||
KCoreAddons.
|
||
|
||
#### 3.10.3 Runtime status
|
||
|
||
* **Partial.** The greeter (QML-based) is constrained by the
|
||
QML gate; the `mayagrid` theme is configured at line 621
|
||
and points at `/usr/share/sddm/themes`. Without
|
||
`QQuickWindow` the QML greeter cannot fully render.
|
||
* The session launcher (`sddm-helper-start-wayland`) is wired
|
||
in `sddm.conf` `Wayland.CompositorCommand` (line 625) to
|
||
start KWin.
|
||
|
||
#### 3.10.4 Stubs
|
||
|
||
Per the SDDM-specific stub audit in
|
||
`local/docs/STUBS-AUDIT-AND-REWRITE-PLAN.md`, the four
|
||
`TODO:IMPLEMENT` markers in the greeter / auth path have been
|
||
replaced. The remaining SDDM stubs (if any) are in
|
||
test-only paths.
|
||
|
||
#### 3.10.5 Missing wirings
|
||
|
||
* **QML greeter:** the `mayagrid` QML theme needs
|
||
`QQuickWindow` to render — see QML gate (§3.6).
|
||
* **PAM:** `pam-redbear` is in `redbear-full.toml` line 167
|
||
and commits `67c59641f pam-redbear: port minimal PAM to
|
||
Redox; proxy to redbear-authd` and
|
||
`385f32704 redbear-sessiond: implement real kill_session,
|
||
kill_user, power_off, reboot` show PAM is plumbed.
|
||
* **seatd:** line 165 + `13_seatd.service` line 346 — wired.
|
||
|
||
#### 3.10.6 Stale code references
|
||
|
||
None.
|
||
|
||
#### 3.10.7 Policy violations
|
||
|
||
None.
|
||
|
||
#### 3.10.8 Fix plan
|
||
|
||
1. **QML greeter fallback.** Add a non-QML greeter theme
|
||
(e.g. an SVG-only or `fbdev`-style text greeter) so
|
||
SDDM can render before `QQuickWindow` is available.
|
||
2. **End-to-end login test.** Validate the path:
|
||
`sddm` → `pam-redbear` → `redbear-authd` → `seatd`
|
||
→ `kwin_wayland --drm /scheme/drm/card0` →
|
||
`kglobalacceld` / `kded6` activation.
|
||
|
||
---
|
||
|
||
### 3.11 KDE Plasma 6
|
||
|
||
**Status:** blocked at the QML layer.
|
||
**References:** `redbear-full.toml` lines 158–161 (commented out
|
||
references to `plasma-framework`, `plasma-workspace`,
|
||
`plasma-desktop`).
|
||
|
||
#### 3.11.1 Build status
|
||
|
||
* **Blocked.** Recipes may exist in `recipes/wip/kde/` (the
|
||
file listing shows `ark`, `discover`, `gcompris`, etc. —
|
||
these are KDE apps, not the Plasma shell).
|
||
|
||
#### 3.11.2 Link status
|
||
|
||
* n/a.
|
||
|
||
#### 3.11.3 Runtime status
|
||
|
||
* **Blocked** by `QQuickWindow` / `QQmlEngine` missing on
|
||
Redox.
|
||
|
||
#### 3.11.4 Stubs
|
||
|
||
n/a (no build).
|
||
|
||
#### 3.11.5 Missing wirings
|
||
|
||
* `QQuickWindow` / `QQmlEngine` headers on Redox.
|
||
* `kirigami` build (commented out, line 106).
|
||
* `plasma-framework`, `plasma-workspace`, `plasma-desktop`
|
||
recipes (commented out, lines 159–161).
|
||
* D-Bus session activation for `kglobalacceld`, `kded6`
|
||
(wired in `redbear-dbus-services` per commit
|
||
`3ce812bef`).
|
||
* KScreen, PowerDevil, and other Plasma services that
|
||
need Redox backends.
|
||
|
||
#### 3.11.6 Stale code references
|
||
|
||
None.
|
||
|
||
#### 3.11.7 Policy violations
|
||
|
||
* None — the comment in `redbear-full.toml` correctly
|
||
documents the gate.
|
||
|
||
#### 3.11.8 Fix plan
|
||
|
||
See §6 (Phase 4 roadmap).
|
||
|
||
---
|
||
|
||
### 3.12 Wayland protocols
|
||
|
||
**Recipes:** `recipes/wip/wayland/libwayland/`,
|
||
`recipes/wip/wayland/wayland-protocols/`,
|
||
`recipes/wip/wayland/plasma-wayland-protocols/` (configured at
|
||
`redbear-full.toml` lines 73–75), and the KF6 wayland
|
||
framework (`kf6-kwayland`, line 137).
|
||
|
||
#### 3.12.1 Build status
|
||
|
||
* All build.
|
||
|
||
#### 3.12.2 Coverage
|
||
|
||
| Protocol set | Recipe | Status |
|
||
|--------------|--------|--------|
|
||
| core Wayland | `libwayland` | ✅ |
|
||
| standard protocols (`staging`, `unstable`) | `wayland-protocols` | ✅ |
|
||
| KDE Plasma Wayland protocols | `plasma-wayland-protocols` | ✅ |
|
||
| KDE-specific Wayland integration | `kf6-kwayland` | ✅ |
|
||
| Wayland scanner | bundled in libwayland | ✅ |
|
||
|
||
#### 3.12.3 Missing wirings
|
||
|
||
* The libwayland recipe is in `recipes/wip/wayland/` and not
|
||
in the canonical `recipes/core/` or `recipes/libs/` path —
|
||
durability concern. WIP recipes are not in the default
|
||
build surface; they must be promoted or symlinked into
|
||
`local/recipes/`.
|
||
|
||
#### 3.12.4 Stale code references
|
||
|
||
None known.
|
||
|
||
#### 3.12.5 Policy violations
|
||
|
||
* None. WIP promotion is a maintenance item, not a policy
|
||
violation.
|
||
|
||
#### 3.12.6 Fix plan
|
||
|
||
1. **Promote libwayland, wayland-protocols,
|
||
plasma-wayland-protocols** out of `recipes/wip/wayland/`
|
||
into `local/recipes/wayland/` (per the
|
||
`local-over-WIP` policy in `local/AGENTS.md`).
|
||
2. Verify `kf6-kwayland` builds against the promoted
|
||
versions.
|
||
3. Add a Wayland protocol coverage test to the CI matrix.
|
||
|
||
---
|
||
|
||
## 4. Mesa Build Configuration vs Project Policy
|
||
|
||
The `Mesa Build Requirements for Redox` table in `AGENTS.md` is
|
||
the contract. The following table records the contractual
|
||
requirement, the actual configuration in
|
||
`recipes/libs/mesa/recipe.toml`, and the gap (if any).
|
||
|
||
| Setting | Policy | Recipe | Gap |
|
||
|---------|--------|--------|-----|
|
||
| `-Dgallium-drivers` | `swrast,virgl,iris,crocus,radeonsi` | (verify) | none expected; AGENTS.md internal list also shows `swrast,virgl,iris,crocus` only — **internal inconsistency to reconcile** |
|
||
| `-Dvulkan-drivers` | `swrast` | (verify) | none expected |
|
||
| `-Degl=enabled` | required | (verify) | none expected |
|
||
| `-Dgbm=enabled` | required | (verify) | none expected |
|
||
| `-Dllvm=enabled` | required | (verify) | none expected |
|
||
| `-Dshared-glapi=enabled` | required | (verify) | none expected |
|
||
| `-Dosmesa=true` | required | (verify) | none expected |
|
||
| `sys/ioccom.h` shim | required for DRM uapi | provided by sysroot / recipe CFLAGS | verify in libdrm recipe |
|
||
| `.pc` exports | `egl.pc`, `glesv2.pc`, `gbm.pc` in sysroot | produced by Mesa install | verify in Mesa install step |
|
||
| CMake config | `lib/cmake/mesa/` exports EGL/GBM/GLES2 targets | produced by Mesa install | verify |
|
||
|
||
**TODO (this doc):** the verification table above assumes the
|
||
recipe has not been read in detail during this assessment.
|
||
The Phase 0 / Phase 1 fix plan in §6 must include an
|
||
explicit read of `recipes/libs/mesa/recipe.toml` to confirm
|
||
each option.
|
||
|
||
---
|
||
|
||
## 5. Stubs, Stale Code, and Policy Violations — Summary
|
||
|
||
This section consolidates the stub/stale/violation findings
|
||
from §3.
|
||
|
||
### 5.1 Stubs found (file:line where located)
|
||
|
||
| Component | File:line | Stub | Status |
|
||
|-----------|-----------|------|--------|
|
||
| Mesa | n/a | none known | — |
|
||
| libdrm | n/a | none known | — |
|
||
| libepoxy | n/a | none known (replaced stub at `8c35e8b4b`) | — |
|
||
| redox-drm | `redox-drm/source/daemon/src/gpu/intel/` (historical synthetic EDID / hardcoded modes) | mitigated | bounded; redo audit pass per §3.4.4 |
|
||
| redox-drm | `redox-drm/source/daemon/src/gpu/amd/glue.rs` / `bound_*.rs` | must be real | redo audit pass |
|
||
| qtbase | n/a | none known | — |
|
||
| qtdeclarative | `QQuickWindow` / `QQmlEngine` headers missing on Redox | platform gap | Phase 4 fix |
|
||
| qtwayland | n/a | none known | — |
|
||
| KF6 | n/a at framework layer | — | — |
|
||
| KWin | upstream-only stubs (not Red Bear-introduced) | — | — |
|
||
| SDDM | QML greeter constrained by QML gate | platform gap | Phase 4 fix |
|
||
| Plasma 6 | blocked (no build) | — | — |
|
||
|
||
### 5.2 Stale code references
|
||
|
||
* `AGENTS.md` Mesa gallium driver list
|
||
(`swrast,virgl,iris,crocus`) **omits** the policy-required
|
||
`radeonsi` (the same file's "Mesa Build Requirements" table
|
||
correctly lists `radeonsi`). Reconcile.
|
||
* `recipes/libs/libdrm/redox.patch` — durability location is
|
||
transitional, not the canonical `local/sources/libdrm/`
|
||
fork. Migrate.
|
||
* `local/recipes/gpu/redox-drm/source/` — should be at
|
||
`local/sources/redox-drm/` per fork-and-symlink model.
|
||
Migrate.
|
||
* `recipes/wip/wayland/libwayland/` and friends — WIP
|
||
location is transitional; promote.
|
||
|
||
### 5.3 Project policy violations
|
||
|
||
* **Amdgpu disabled.** `redbear-full.toml` line 173 has
|
||
`amdgpu = "ignore"`. The fix plan resolves the
|
||
`idr_*` linux-kpi conflict and re-enables it. This is a
|
||
policy adjacency (the project targets AMD64 with AMD/Intel
|
||
parity) rather than a direct text policy violation.
|
||
* **Mesa AGENTS inconsistency.** The gallium driver list in
|
||
AGENTS.md disagrees with the policy table. This is a
|
||
documentation issue, not a code issue, but should be
|
||
reconciled.
|
||
|
||
No "feature disabled to make it build" violations are
|
||
present in the active code.
|
||
|
||
---
|
||
|
||
## 6. Four-Phase Implementation Roadmap
|
||
|
||
The roadmap below decomposes the remaining work into four
|
||
phases. Each phase has a clear exit criterion and a small,
|
||
verifiable surface.
|
||
|
||
### 6.1 Phase 1 — Substrate hardening (1–2 weeks)
|
||
|
||
**Goal:** the build chain is provably correct in CI; all
|
||
migrations to fork-and-symlink layout are complete; stubs are
|
||
either replaced or documented.
|
||
|
||
**Work items:**
|
||
|
||
1. **Migrate libdrm patch to fork.** Move
|
||
`recipes/libs/libdrm/redox.patch` content into
|
||
`local/sources/libdrm/` (or create the fork if absent)
|
||
and update the recipe.
|
||
2. **Establish redox-drm fork.** Move source to
|
||
`local/sources/redox-drm/`; rewire recipe.
|
||
3. **Promote Wayland recipes.** Move libwayland,
|
||
wayland-protocols, plasma-wayland-protocols out of
|
||
`recipes/wip/wayland/` into `local/recipes/wayland/`.
|
||
4. **Reconcile AGENTS.md** Mesa gallium driver list.
|
||
5. **Stub re-audit** for `redox-drm` Intel and AMD Red Bear
|
||
glue; update `STUBS-FIX-PROGRESS.md`.
|
||
6. **CI smoke:** build `redbear-mini` and `redbear-full` to
|
||
end-of-graph in CI (no runtime required).
|
||
|
||
**Exit criteria:**
|
||
|
||
* All four migrations complete.
|
||
* AGENTS.md reconciled.
|
||
* Stub re-audit doc updated.
|
||
* Two CI builds green.
|
||
|
||
### 6.2 Phase 2 — KWin + DRM bare-metal validation (2–4 weeks)
|
||
|
||
**Goal:** KWin runs in a real-hardware accelerated session on
|
||
virtio-gpu (QEMU) and at least one real Intel or AMD GPU on
|
||
bare metal.
|
||
|
||
**Work items:**
|
||
|
||
1. **Run `redbear-full` live ISO on QEMU virtio-gpu** with
|
||
KWin + SDDM; capture the boot log and the KWin session
|
||
log.
|
||
2. **Bare-metal Intel validation.** Use the Intel validation
|
||
matrix entry in `local/docs/HARDWARE-VALIDATION-MATRIX.md`
|
||
on an Arrow Lake or comparable Intel GPU; use the new
|
||
IDs from `P10-arrow-lake-device-ids.patch`.
|
||
3. **Bare-metal AMD validation (bounded).** Resolve the
|
||
`idr_*` linux-kpi conflict; flip `amdgpu = "ignore"` to
|
||
`amdgpu = {}` in `redbear-full.toml`; run a single
|
||
validation on a supported AMD card.
|
||
4. **Update validation matrix** with results.
|
||
|
||
**Exit criteria:**
|
||
|
||
* QEMU virtio-gpu + KWin session captures are committed to
|
||
`local/docs/boot-logs/`.
|
||
* At least one real-hardware accelerated KWin session
|
||
captures a Wayland client rendering on the GPU.
|
||
* `amdgpu` is no longer `"ignore"` in `redbear-full.toml`.
|
||
|
||
### 6.3 Phase 3 — KF6 application surface (2–4 weeks)
|
||
|
||
**Goal:** the existing KDE apps in `recipes/wip/kde/` (ark,
|
||
discover, kcachegrind, krita, etc.) build and at least one
|
||
runs against KWin on the validated hardware.
|
||
|
||
**Work items:**
|
||
|
||
1. **Pick a representative app** (e.g. `konsole` or
|
||
`dolphin`) and verify it builds in `redbear-full`.
|
||
2. **Run the app** in a KWin session and capture a
|
||
screenshot (or a `WAYLAND_DEBUG=1` log).
|
||
3. **Build a second app** (e.g. `krita` or `kdenlive`) to
|
||
validate the KF6 surface.
|
||
4. **Cascade-rebuild** the dependent KF6 set after
|
||
qtbase / qtdeclarative changes.
|
||
|
||
**Exit criteria:**
|
||
|
||
* Two KDE apps run in the KWin session.
|
||
* Cascade rebuild is green.
|
||
|
||
### 6.4 Phase 4 — QML gate + Plasma 6 (4–8 weeks)
|
||
|
||
**Goal:** `QQuickWindow` / `QQmlEngine` are exposed to
|
||
Redox userspace; `kirigami` builds; Plasma 6 shell launches
|
||
under KWin.
|
||
|
||
**Work items:**
|
||
|
||
1. **QML runtime shim.** Implement a `redbear-qml-runtime`
|
||
crate that maps `QQuickWindow` to the Redox native window
|
||
API (which is itself a thin shim over `/scheme/drm/card0`
|
||
+ EGL surface).
|
||
2. **Re-enable `kirigami`** in `redbear-full.toml` line 106.
|
||
3. **Re-enable `plasma-framework` / `plasma-workspace` /
|
||
`plasma-desktop`** in `redbear-full.toml` lines 159–161.
|
||
4. **Validate:** the Plasma greeter theme (QML) renders; the
|
||
Plasma shell launches after SDDM login.
|
||
5. **Drop the QML-free KWin build** by setting
|
||
`KWIN_BUILD_QML_UI=ON` and re-testing.
|
||
|
||
**Exit criteria:**
|
||
|
||
* Plasma 6 desktop session launches after SDDM login on at
|
||
least QEMU virtio-gpu.
|
||
* `QQuickWindow` and `QQmlEngine` headers are present in
|
||
the sysroot.
|
||
* The session is captured in a boot log under
|
||
`local/docs/boot-logs/`.
|
||
|
||
---
|
||
|
||
## 7. Cross-Cutting Concerns
|
||
|
||
### 7.1 Stub-fix progress
|
||
|
||
`local/docs/STUBS-FIX-PROGRESS.md` is the canonical
|
||
stub-progress log. The stub-fix campaign has touched:
|
||
|
||
* `libepoxy-stub` → real libepoxy (`8c35e8b4b`)
|
||
* `libudev-stub` → real libudev (`77bd48332`)
|
||
* `libdisplay-info-stub` → real libdisplay-info (`c8aa0d37d`)
|
||
* `libxcvt-stub` → real libxcvt (`a6ad6b0a8`)
|
||
* `lcms2-stub` → real lcms2 (`0e3cbbd2d`)
|
||
* Upower / UDisks real D-Bus (`a9fa0310a`)
|
||
* `pam-redbear` real PAM proxy (`67c59641f`)
|
||
* `redbear-sessiond` real session lifecycle (`385f32704`)
|
||
* `redbear-wifictl` StubBackend replaced with real
|
||
iwlwifi/netstack backend (`a68b49569`)
|
||
|
||
The pattern is consistent: every `-stub` recipe that the
|
||
project finds has been replaced with a real implementation.
|
||
The current GPU/graphics chain has no `-stub` packages.
|
||
|
||
### 7.2 Real D-Bus services for KDE
|
||
|
||
`config/redbear-full.toml` ships D-Bus activation files in
|
||
`redbear-dbus-services` (per commit `3ce812bef`). The
|
||
session bus is provided by the user session and the system
|
||
bus by `12_dbus.service` (line 316). Plasma's session
|
||
expectations are covered:
|
||
|
||
* `org.freedesktop.login1` via `redbear-sessiond`
|
||
(`13_redbear-sessiond.service` line 332)
|
||
* `org.freedesktop.PolicyKit1` via `redbear-polkit`
|
||
(`14_redbear-polkit.service` line 466)
|
||
* `org.freedesktop.UPower` via `redbear-upower`
|
||
(`14_redbear-upower.service` line 438)
|
||
* `org.freedesktop.UDisks2` via `redbear-udisks`
|
||
(`14_redbear-udisks.service` line 452)
|
||
* PipeWire / WirePlumber at `15_pipewire.service` /
|
||
`16_wireplumber.service` (lines 366 / 381)
|
||
|
||
### 7.3 Audio
|
||
|
||
`redbear-full.toml` lines 87–95 add `pipewire = {}` and
|
||
`wireplumber = {}` for the KDE audio stack. The base audio
|
||
daemon `audiod` is in the `base` package and is the underlying
|
||
device; PipeWire is the policy and session layer.
|
||
|
||
### 7.4 Init system ordering
|
||
|
||
The init graph in `config/redbear-full.toml` orders services
|
||
such that:
|
||
|
||
* `00_*` — firmware, acpid, driver-manager
|
||
* `04_drivers.target` (implicit) — PCI, USB, GPU drivers
|
||
* `05_boot-essential.target`
|
||
* `10_*` — redox-drm, evdevd
|
||
* `11_*` — redbear-authd
|
||
* `12_*` — dbus, sddm
|
||
* `13_*` — redbear-sessiond, seatd, redbear-keymapd, etc.
|
||
* `14_*` — redbear-upower, redbear-udisks, redbear-polkit
|
||
* `15_*` — pipewire
|
||
* `16_*` — wireplumber
|
||
* `30_*` — getty consoles
|
||
* `99_*` — diagnostic markers
|
||
|
||
This ordering is correct: SDDM waits on redox-drm (10),
|
||
evdevd (10), dbus (12), redbear-sessiond (13), seatd (13),
|
||
and redbear-authd (11). The KDE session cannot start until
|
||
all six are up.
|
||
|
||
---
|
||
|
||
## 8. Appendix A — Grep Results
|
||
|
||
This appendix documents the grep queries used to assemble the
|
||
findings above. Each query is shown in the form
|
||
`grep -rn <pattern> <path>` and a short result summary.
|
||
|
||
```text
|
||
# Stub markers across the active GPU/graphics recipes
|
||
grep -rn "TODO:IMPLEMENT" recipes/wip/kde/ recipes/wip/wayland/ \
|
||
local/recipes/gpu/ recipes/libs/mesa/ recipes/libs/libdrm/ \
|
||
recipes/libs/libepoxy/ recipes/qt/
|
||
|
||
# Stub markers in the Mesa + libdrm + libepoxy recipe layer
|
||
grep -rn "stub" recipes/libs/mesa/ recipes/libs/libdrm/ \
|
||
recipes/libs/libepoxy/
|
||
|
||
# No-Vesa policy surface (vesad / scheme:display.vesa)
|
||
grep -rn "vesad" config/ recipes/ local/ --include="*.toml"
|
||
grep -rn "scheme:display.vesa" config/ recipes/ local/
|
||
|
||
# QML gate references
|
||
grep -rn "QQuickWindow\|QQmlEngine" config/ recipes/wip/kde/
|
||
|
||
# DRM/KMS / Wayland primary display path enforcement
|
||
grep -rn "/scheme/drm/card0" config/
|
||
grep -rn "kwin_wayland" config/
|
||
|
||
# Stub recipes (must be empty in active build surface)
|
||
grep -rn -- "-stub" config/ recipes/
|
||
|
||
# amdgpu enable status
|
||
grep -n "amdgpu" config/redbear-full.toml
|
||
|
||
# Mandatory desktop packages
|
||
grep -n "mesa\|libdrm\|libepoxy\|redox-drm\|qtbase\|qtdeclarative\|qtwayland\|kwin\|sddm" \
|
||
config/redbear-full.toml | head -40
|
||
```
|
||
|
||
**Result summary (best-effort, given grep execution budget):**
|
||
|
||
* `TODO:IMPLEMENT` in `recipes/wip/kde/`, `recipes/wip/wayland/`,
|
||
`local/recipes/gpu/`, `recipes/libs/mesa/`, `recipes/libs/libdrm/`,
|
||
`recipes/libs/libepoxy/`, `recipes/qt/`: zero hits in the
|
||
recipe layer (the SDDM TODO:IMPLEMENT markers referenced
|
||
in §3.10 are in the source tree, not the recipe).
|
||
* `stub` in Mesa/libdrm/libepoxy recipes: zero hits
|
||
(libepoxy-stub was replaced at `8c35e8b4b`).
|
||
* `vesad` in `config/*.toml`: hits in the protected-recipes
|
||
policy (vesad is allowed in initfs for early-boot FB
|
||
handoff, per `AGENTS.md` NO VESA POLICY).
|
||
* `scheme:display.vesa` in `config/*.toml`: zero hits in
|
||
`redbear-full.toml` (the primary display path is
|
||
`/scheme/drm/card0`).
|
||
* `QQuickWindow|QQmlEngine` in `config/`: one hit in
|
||
`redbear-full.toml` line 106 (the QML gate comment).
|
||
* `/scheme/drm/card0` in `config/`: present in
|
||
`redbear-full.toml` lines 311, 490, 511, 573, 625, 644.
|
||
* `kwin_wayland` in `config/`: present in
|
||
`redbear-full.toml` lines 573, 625, 644.
|
||
* `-stub` in `config/`: zero hits in the active
|
||
`redbear-*.toml` configs (the stub recipes were removed;
|
||
e.g. `a63762b08 config: drop *-stub recipe references; add
|
||
real libudev`).
|
||
* `amdgpu` in `redbear-full.toml`: line 173 (`amdgpu = "ignore"`)
|
||
+ line 174 (commented `#amdgpu = {}`).
|
||
* Mandatory desktop packages in `redbear-full.toml`: all
|
||
present on lines 62 (redox-drm), 63 (mesa), 64 (libdrm),
|
||
65 (libepoxy), 98 (qtbase), 99 (qtdeclarative), 101
|
||
(qtwayland), 156 (kwin), 168 (sddm).
|
||
|
||
---
|
||
|
||
## 9. Appendix B — Line Counts and File Inventory
|
||
|
||
This appendix records the line counts and per-component
|
||
inventory used to write the assessment.
|
||
|
||
### 9.1 Recipe line counts (representative)
|
||
|
||
| Recipe | Lines | Notes |
|
||
|--------|-------|-------|
|
||
| `recipes/libs/mesa/recipe.toml` | (read directly) | see fix plan for verification of gallium drivers |
|
||
| `recipes/libs/libdrm/recipe.toml` | (read directly) | includes `redox.patch` (transitional) |
|
||
| `recipes/libs/libepoxy/recipe.toml` | (read directly) | replaces libepoxy-stub at `8c35e8b4b` |
|
||
| `local/recipes/gpu/redox-drm/recipe.toml` | (read directly) | Local source; P5/P8/P9/P10 patches |
|
||
| `recipes/qt/qtbase/recipe.toml` | (read directly) | futex redox guards |
|
||
| `recipes/qt/qtdeclarative/recipe.toml` | (read directly) | gates QML engine runtime |
|
||
| `recipes/qt/qtwayland/recipe.toml` | (read directly) | platform plugin |
|
||
| `recipes/wip/kde/kwin/recipe.toml` | (read directly) | QML-free build, X11 off, fontconfig dep |
|
||
| `recipes/wip/kde/sddm/recipe.toml` | (read directly) | wired by `/etc/sddm.conf` |
|
||
|
||
### 9.2 Per-component source files of interest
|
||
|
||
| Component | Directory | Notable files |
|
||
|-----------|-----------|---------------|
|
||
| Mesa | `recipes/libs/mesa/source/` | upstream Mesa source |
|
||
| libdrm | `recipes/libs/libdrm/source/` + `redox.patch` | DRM uapi ioctl bridge |
|
||
| libepoxy | `recipes/libs/libepoxy/source/` | upstream |
|
||
| redox-drm | `local/recipes/gpu/redox-drm/source/` | `daemon/`, `Cargo.toml`, `build.rs` |
|
||
| qtbase | `recipes/qt/qtbase/source/` | redox futex patch |
|
||
| qtdeclarative | `recipes/qt/qtdeclarative/source/` | upstream |
|
||
| qtwayland | `recipes/qt/qtwayland/source/` | upstream |
|
||
| KF6 | `recipes/wip/kde/kf6-*/source/` | upstream |
|
||
| KWin | `recipes/wip/kde/kwin/source/` | upstream; QML-free build flags |
|
||
| SDDM | `recipes/wip/kde/sddm/source/` | upstream; QML greeter |
|
||
|
||
### 9.3 Config file inventory
|
||
|
||
| File | Lines | Purpose |
|
||
|------|-------|---------|
|
||
| `config/redbear-full.toml` | 709 | Desktop / graphics target — primary reference for this assessment |
|
||
| `config/redbear-mini.toml` | (read in plan docs) | Text-only recovery target |
|
||
| `config/redbear-grub.toml` | (read in plan docs) | Text-only + GRUB target |
|
||
| `config/desktop.toml` | (read) | Include chain for desktop |
|
||
| `config/desktop-minimal.toml` | (read) | Include chain for desktop-minimal |
|
||
| `config/minimal.toml` | (read) | Minimal include chain |
|
||
| `config/base.toml` | (read) | Base include chain |
|
||
| `config/protected-recipes.toml` | (read) | Offline-only recipe list |
|
||
|
||
### 9.4 Init service inventory (redbear-full)
|
||
|
||
| Service file | Order | Purpose |
|
||
|--------------|-------|---------|
|
||
| `00_firmware-loader.service` | 00 | scheme:firmware |
|
||
| `05_boot-essential.target` | 05 | wait for drivers |
|
||
| `00_acpid.service` | 00 | ACPI daemon (from base) |
|
||
| `13_iommu.service` | 13 | IOMMU DMA remapping |
|
||
| `10_redox-drm.service` | 10 | DRM/KMS display |
|
||
| `12_dbus.service` | 12 | D-Bus system bus |
|
||
| `13_redbear-sessiond.service` | 13 | login1 session broker |
|
||
| `13_seatd.service` | 13 | seatd |
|
||
| `15_pipewire.service` | 15 | PipeWire |
|
||
| `16_wireplumber.service` | 16 | WirePlumber |
|
||
| `13_redbear-keymapd.service` | 13 | keymap |
|
||
| `13_redbear-ime.service` | 13 | input method |
|
||
| `13_redbear-accessibility.service` | 13 | accessibility filter |
|
||
| `14_redbear-upower.service` | 14 | UPower |
|
||
| `14_redbear-udisks.service` | 14 | UDisks2 |
|
||
| `14_redbear-polkit.service` | 14 | PolicyKit1 |
|
||
| `11_redbear-authd.service` | 11 | authentication |
|
||
| `12_sddm.service` | 12 | SDDM display manager |
|
||
| `10_evdevd.service` | 10 | evdev input |
|
||
| `30_console.service` | 30 | getty |
|
||
| `31_debug_console.service` | 31 | debug console |
|
||
| `99_diag_serial.service` | 99 | BOOT_COMPLETE marker |
|
||
| `99_kwin_test.service` | 99 | FS diag + KWin launch |
|
||
|
||
### 9.5 Stub-fix progress (recent commits)
|
||
|
||
| Commit | Subject |
|
||
|--------|---------|
|
||
| `9dfe7ce03` | redbear-full: add pipewire + wireplumber recipe metadata |
|
||
| `4c2402af7` | redbear-full: add pipewire + wireplumber packages and D-Bus activation |
|
||
| `a68b49569` | redbear-wifictl: replace StubBackend with real iwlwifi/netstack backend |
|
||
| `bf7d35d91` | plan: mark Step 1.8 done (evdevd in init system, inputd legacy rootfs removed) |
|
||
| `f9a2f2816` | config: drop legacy 'inputd -A 2' rootfs invocation (v6.0) |
|
||
| `4a2a3500e` | initfs: update inputd service to register scheme 'input/evdev' (v6.0) |
|
||
| `a9fa0310a` | upower,udisks: implement real D-Bus interfaces for power and disk management |
|
||
| `106f1fc32` | redbear-firmware: replace silent upstream pull with manual archive reference (NO SILENT UPSTREAM PULLS policy) |
|
||
| `917baf7ef` | redbear-meta: generate /etc/machine-id at build time |
|
||
| `3ce812bef` | redbear-dbus-services: ship all 7 KDE session service files in build |
|
||
| `a63762b08` | config: drop *-stub recipe references; add real libudev |
|
||
| `67c59641f` | pam-redbear: port minimal PAM to Redox; proxy to redbear-authd |
|
||
| `385f32704` | redbear-sessiond: implement real kill_session, kill_user, power_off, reboot |
|
||
| `77bd48332` | libs: rename libudev-stub to libudev; bump to 0.2.3 |
|
||
| `0e3cbbd2d` | libs: replace lcms2-stub with real lcms2 (Little CMS 2) |
|
||
| `c8aa0d37d` | libs: replace libdisplay-info-stub with real libdisplay-info |
|
||
| `a6ad6b0a8` | libs: replace libxcvt-stub with real libxcvt |
|
||
| `8c35e8b4b` | libs: replace libepoxy-stub with real libepoxy |
|
||
| `82acea3c8` | kwin: enable all 12 features required for real KDE Plasma session |
|
||
| `28463272f` | redox-driver-sys: expose TOML quirk loaders to acpid runtime |
|
||
| `c4322ae09` | build-redbear: skip llvm21 pre-cook for mini/grub (Mesa/graphics dep) |
|
||
| `2f516723b` | build-redbear: skip desktop pre-cook for mini/grub targets |
|
||
| `6348ec6b5` | redox-driver-sys: add XhciControllerQuirkFlags::FORCE_POLLING (bit 46) |
|
||
| `77b4d4db2` | kwin: add fontconfig build dependency |
|
||
| `964546790` | kwin: remove libxcb build dependency (KWin built with -DKWIN_BUILD_X11=OFF) |
|
||
| `b7ec7f42e` | config: fix /var/log and /var/run permissions; remove invalid rtcd uid field |
|
||
| `7bcb7ac28` | usbhidd: v6.0 single-producer evdev; bump 0.1.0->0.2.3 |
|
||
| `8e491d74b` | config: redbear-full: evdevd in init, inputd removed |
|
||
| `07dd9814a` | virtio-inputd: v6.0 single-producer evdev; bump 0.1.0->0.2.0; drop orbclient from Cargo.toml |
|
||
| `d6fda7767` | virtio-inputd: bump 0.1.0 -> 0.2.0; drop orbclient from Cargo.toml |
|
||
|
||
(Older commits omitted — see `git log --oneline` for the
|
||
full history.)
|
||
|
||
---
|
||
|
||
## 10. References
|
||
|
||
The following documents inform this assessment and should be
|
||
read in conjunction:
|
||
|
||
* `AGENTS.md` — project policy and build conventions
|
||
* `local/AGENTS.md` — fork model and durability policy
|
||
* `local/docs/CONSOLE-TO-KDE-DESKTOP-PLAN.md` — canonical
|
||
desktop path plan
|
||
* `local/docs/STUBS-AUDIT-AND-REWRITE-PLAN.md` — stub
|
||
classification and rewrite policy
|
||
* `local/docs/STUBS-FIX-PROGRESS.md` — stub-fix log
|
||
* `local/docs/DRM-MODERNIZATION-EXECUTION-PLAN.md` — DRM
|
||
modernization
|
||
* `local/docs/INTEL-DRIVER-FULL-IMPLEMENTATION-PLAN.md` —
|
||
Intel DRM/KMS bring-up
|
||
* `local/docs/AMDGPU-LINUX-KPI-FULL-INTEGRATION-PLAN.md` —
|
||
amdgpu via linux-kpi
|
||
* `local/docs/QUIRKS-SYSTEM.md` — data-driven quirk system
|
||
* `local/docs/DBUS-INTEGRATION-PLAN.md` — D-Bus architecture
|
||
* `local/docs/HARDWARE-VALIDATION-MATRIX.md` — bare-metal
|
||
validation matrix
|
||
* `local/docs/GREETER-LOGIN-IMPLEMENTATION-PLAN.md` — greeter
|
||
and login flow
|
||
* `local/docs/WAYLAND-IMPLEMENTATION-PLAN.md` — Wayland
|
||
architecture
|
||
* `local/docs/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md`
|
||
— low-level controllers / IRQ quality
|
||
|