drmkit 0.1.0

A layered Linux DRM/KMS display framework: modesetting, plane allocation, scene composition, and scanout. Rust port of drm-cxx.
Documentation

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:

[dependencies]
drmkit = { version = "0.1", features = ["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.