feat: VirtIO GPU driver, libdrm DRM ioctls, KWin/KF6 build fixes, display stack additions

- Add full VirtIO GPU driver with command submission, resource management,
  VirtQueue implementation, and transport layer; includes diagnostic probes
  for resource_create_2d ERR_INVALID_RESOURCE_ID investigation
- Expand libdrm Redox support with DRM ioctl wrappers (ADDFB, RMFB,
  CREATE_DUMB, MAP_DUMB, DESTROY_DUMB, GET_RESOURCES, GET_CONNECTOR,
  GET_CRTC, SET_CRTC, MODE_OBJ_GET_PROPERTIES, etc.) and xf86drm_redox.h
- Add redox-drm scheme handlers for VirtIO GPU-specific DRM ioctls
  (VIRTGPU_RESOURCE_CREATE, VIRTGPU_MAP, VIRTGPU_WAIT, VIRTGPU_INFO, etc.)
- Add display stack recipes: freetype2, lcms2, libdisplay-info, libepoxy,
  libxcvt
- Fix KWin build (recipe.toml expanded, kf6-ksvg added)
- Fix KF6 CMakeLists for cross-compilation (attica, kcmutils, kcolorscheme,
  kcompletion, kconfigwidgets, kdeclarative, kiconthemes, kitemmodels,
  kitemviews, kjobwidgets, ktextwidgets, kwayland, kxmlgui, kpty, solid)
- Add Qt6 futex support patch
- Add relibc patches: P3 strtold, P3 ld-so search path, P5 DRM ioctl removal
- Add base P4 pcid config scheme patch
- Update driver-manager hotplug/config, PCI config in redox-driver-sys
- Update greeter compositor and KDE session scripts
- Update AGENTS.md with zero-tolerance stubs policy and project knowledge
This commit is contained in:
2026-05-14 10:31:13 +01:00
parent ea2f32372c
commit 741f144c79
64 changed files with 9252 additions and 1096 deletions
+31 -25
View File
@@ -47,14 +47,21 @@ numad = {}
redox-drm = {}
mesa = {}
libdrm = {}
libepoxy = {}
libdisplay-info = {}
libxcvt = {}
lcms2 = {}
freetype2 = {}
fontconfig = {}
libwayland = {}
wayland-protocols = {}
redbear-compositor = {}
plasma-wayland-protocols = {}
redbear-compositor = "ignore" # replaced by kwin
# Keyboard/input
# libxkbcommon = {} # build needed
# xkeyboard-config = {} # build needed
libxkbcommon = {}
xkeyboard-config = {}
libevdev = {}
libinput = {}
redbear-keymapd = {}
@@ -93,7 +100,7 @@ kf6-kded6 = {}
kf6-kguiaddons = {}
kf6-ki18n = {}
kf6-kiconthemes = {}
kf6-kidletime = "ignore"
kf6-kidletime = {}
kf6-kitemmodels = {}
kf6-kitemviews = {}
kf6-kjobwidgets = {}
@@ -101,12 +108,14 @@ kf6-knotifications = {}
kf6-kpackage = {}
kf6-kservice = {}
kf6-ktextwidgets = {}
kf6-kwayland = "ignore"
kf6-kwayland = {}
kf6-kwidgetsaddons = {}
kf6-kwindowsystem = {}
kf6-kxmlgui = {}
kf6-prison = {}
kf6-solid = {}
kf6-sonnet = {}
kf6-ksvg = {}
kf6-knewstuff = {}
kf6-kwallet = {}
kf6-kglobalaccel = {}
@@ -186,7 +195,7 @@ name = "redox-drm"
description = "DRM/KMS display driver (AMD + Intel + VirtIO)"
priority = 60
command = ["/usr/bin/redox-drm"]
depends_on = ["pci", "firmware", "iommu"]
depends_on = ["pci"]
[[driver.match]]
class = 0x03
@@ -246,6 +255,21 @@ cmd = "/usr/bin/iommu"
type = "oneshot_async"
"""
[[files]]
path = "/etc/init.d/14_redox-drm.service"
data = """
[unit]
description = "DRM/KMS display driver (AMD + Intel + VirtIO)"
requires_weak = [
"05_boot-essential.target",
]
[service]
cmd = "/usr/bin/sh"
args = ["-c", "if ! head -c 1 /scheme/drm/card0 >/dev/null 2>&1; then exec /usr/bin/redox-drm; fi; echo 'scheme:drm already registered, skipping'"]
type = "oneshot_async"
"""
[[files]]
path = "/etc/init.d/12_dbus.service"
data = """
@@ -395,25 +419,6 @@ envs = { QT_PLUGIN_PATH = "/usr/plugins", QT_QPA_PLATFORM_PLUGIN_PATH = "/usr/pl
type = "oneshot_async"
"""
[[files]]
path = "/etc/init.d/20_display.service"
data = """
[unit]
description = "KDE session assembly helper"
requires_weak = [
"12_dbus.service",
"13_redbear-sessiond.service",
"13_seatd.service",
"19_redbear-authd.service",
]
[service]
cmd = "/usr/bin/redbear-session-launch"
args = ["--username", "root", "--mode", "session", "--session", "kde-wayland", "--vt", "4", "--runtime-dir", "/tmp/run/redbear-display-session", "--wayland-display", "wayland-display"]
envs = { QT_PLUGIN_PATH = "/usr/plugins", QT_QPA_PLATFORM_PLUGIN_PATH = "/usr/plugins/platforms", QML2_IMPORT_PATH = "/usr/qml", XCURSOR_THEME = "Pop", XKB_CONFIG_ROOT = "/usr/share/X11/xkb", REDBEAR_KDE_SESSION_BACKEND = "virtual", REDBEAR_KDE_SESSION_STATE_DIR = "/run/redbear-display-session" }
type = "oneshot_async"
"""
[[files]]
path = "/etc/init.d/20_greeter.service"
data = """
@@ -421,6 +426,7 @@ data = """
description = "Red Bear greeter service"
requires_weak = [
"00_driver-manager.service",
"14_redox-drm.service",
"12_dbus.service",
"13_redbear-sessiond.service",
"13_seatd.service",