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, color management, cursor and capture are in, as are the present
spine, cross-output orchestration, GBM surface sources and client-side
decorations. The GL compositor, the GL and Vulkan scanout producers, EGL
streams, the V4L2, GStreamer and nvbufsurface sources, and the Vulkan
display surface 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.