WEFT_OS/crates/weft-compositor/Cargo.toml
Marco Allegretti 8925ebe3df feat(compositor): implement DRM/KMS rendering path
Add full DRM/KMS backend with libseat session, GBM allocation, EGL
display initialisation, and a GpuManager-driven rendering loop.

- drm_device.rs: type aliases and per-device/per-output state structs
 (WeftDrmDevice, WeftOutputSurface, WeftDrmData)
- drm.rs: replace skeleton with complete backend libseat session,
 udev device enumeration, libinput event source, connector scanning
 via smithay-drm-extras DrmScanner, DrmOutputManager initialisation
 per CRTC, VBlank-driven render_output, sd_notify(READY=1)
- state.rs: add drm: Option<WeftDrmData> field; route dmabuf import
 through GPU manager when the DRM path is active
- Cargo.toml: add renderer_multi, use_system_lib Smithay features;
 add smithay-drm-extras and sd-notify Linux dependencies

render_output submits a clear-colour-only frame to establish
the VBlank pipeline. Surface compositing is wired up in a subsequent commit.
2026-03-10 22:32:21 +01:00

37 lines
925 B
TOML

[package]
name = "weft-compositor"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
publish = false
[[bin]]
name = "weft-compositor"
path = "src/main.rs"
# Features available on all build platforms.
[dependencies]
smithay = { version = "0.7", default-features = false, features = [
"backend_egl",
"backend_winit",
"renderer_gl",
"wayland_frontend",
"desktop",
] }
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
anyhow = "1"
# DRM/KMS and hardware input depend on Linux kernel interfaces; compile only on Linux.
[target.'cfg(target_os = "linux")'.dependencies]
smithay = { version = "0.7", default-features = false, features = [
"backend_drm",
"backend_gbm",
"backend_libinput",
"backend_udev",
"backend_session_libseat",
"renderer_multi",
"use_system_lib",
] }
smithay-drm-extras = "0.1"
sd-notify = "0.4"