drmkit
A layered Linux DRM/KMS display framework — modesetting, plane allocation, scene composition, and scanout. A behavioral-parity Rust port of drm-cxx.
Each member crate is a module here behind a feature of the same name —
drmkit::scene is drmkit-scene. The defaults (core, modeset, dumb,
fmt, planes, scene) take a card to a committed scene, and full adds
the rest:
[]
= { = "0.1", = ["cursor", "capture"] }
None of those links a system library. The parts that do are features of
their own: edid (libdisplay-info), hotplug (libudev), libinput
(libinput, libudev), xkb (xkbcommon) and libseat (libseat).
A scene can bring up a display, allocate planes for a layer stack, commit a
frame, composite what it cannot place, and release buffers on the right
vblank. EDID, colour management, cursor and capture are in, as are the present
spine, cross-output orchestration, GBM surface sources and client-side
decorations. The GL compositor, EGL streams, and the V4L2 and GStreamer
sources are not.
See the crate documentation for which member crate does what, or https://github.com/jwinarske/drmkit for the porting plan.
Upstream baseline: jwinarske/drm-cxx @ 2b260d0 (v5.0.0).
License
MIT, matching drm-cxx.