drmkit 0.1.2

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, 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.