libliftoff/README.md

78 lines
2.1 KiB
Markdown
Raw Normal View History

# libliftoff
2019-08-21 22:12:11 +02:00
2019-10-11 12:07:10 +02:00
[![builds.sr.ht status](https://builds.sr.ht/~emersion/libliftoff.svg)](https://builds.sr.ht/~emersion/libliftoff)
2021-07-01 11:55:25 +02:00
Lightweight KMS plane library.
2019-08-21 22:12:11 +02:00
libliftoff eases the use of KMS planes from userspace without standing in your
2021-03-29 17:39:25 +02:00
way. Users create "virtual planes" called layers, set KMS properties on them,
and libliftoff will pick planes for these layers if possible.
2019-08-21 22:12:11 +02:00
2020-03-25 16:23:59 +01:00
Resources:
* [Blog post introducing the project][intro-post]
* [FOSDEM 2020 talk][fosdem-2020]
2019-10-16 09:44:29 +02:00
2019-08-21 22:12:11 +02:00
## Building
Depends on libdrm. Requires universal planes and atomic.
meson build/
ninja -C build/
2019-09-16 10:38:54 +02:00
## Usage
2021-07-01 13:24:28 +02:00
See [`liftoff.h`][liftoff.h] and the [`example/`][example] directory. See
2021-07-01 13:23:26 +02:00
[`doc/compositor.md`][doc/compositor] for compositor guidelines.
Here's the general idea:
2019-09-16 10:38:54 +02:00
```c
struct liftoff_device *device;
2019-09-16 10:38:54 +02:00
struct liftoff_output *output;
struct liftoff_layer *layer;
drmModeAtomicReq *req;
int ret;
2019-09-16 10:38:54 +02:00
device = liftoff_device_create(drm_fd);
output = liftoff_output_create(device, crtc_id);
2019-09-16 10:38:54 +02:00
liftoff_device_register_all_planes(device);
2019-09-16 10:38:54 +02:00
layer = liftoff_layer_create(output);
liftoff_layer_set_property(layer, "FB_ID", fb_id);
/* Probably setup more properties and more layers */
req = drmModeAtomicAlloc();
if (!liftoff_output_apply(output, req)) {
perror("liftoff_output_apply");
2019-09-16 10:38:54 +02:00
exit(1);
}
ret = drmModeAtomicCommit(drm_fd, req, DRM_MODE_ATOMIC_NONBLOCK, NULL);
if (ret < 0) {
perror("drmModeAtomicCommit");
exit(1);
}
drmModeAtomicFree(req);
```
2020-03-10 12:10:51 +01:00
## Contributing
Report bugs and send pull requests on [GitHub][github].
We use the Wayland/Weston style and contribution guidelines, see [Weston's
contributing document][weston-contributing].
2019-08-21 22:12:11 +02:00
## License
MIT
2019-09-16 10:38:54 +02:00
[liftoff.h]: https://github.com/emersion/libliftoff/blob/master/include/libliftoff.h
2021-07-01 13:24:28 +02:00
[example]: https://github.com/emersion/libliftoff/tree/master/example
2021-07-01 13:23:26 +02:00
[doc/compositor]: https://github.com/emersion/libliftoff/blob/master/doc/compositor.md
2019-10-16 09:44:29 +02:00
[intro-post]: https://emersion.fr/blog/2019/xdc2019-wrap-up/#libliftoff
2020-03-25 16:23:59 +01:00
[fosdem-2020]: https://fosdem.org/2020/schedule/event/kms_planes/
2020-03-10 12:10:51 +01:00
[github]: https://github.com/emersion/libliftoff
[weston-contributing]: https://gitlab.freedesktop.org/wayland/weston/-/blob/master/CONTRIBUTING.md