libliftoff v0.1.0 This is the first release of libliftoff. libliftoff is still an experimental library, no guarantees are made regarding the stability of its API. Jan Beich (2): test: bump POSIX version for CLOCK_MONOTONIC build: ignore warnings in libdrm headers Matt Hoosier (1): example: improve CRTC search algorithm Roman Gilg (7): Log re-use only on change Log layer priority only on change Add log verbosity helper Skip layer debug early Indent log on property applying and layer assignment Respect implicit type on layer props log Omit logging inactive layer information Simon Ser (162): Initial experiments Add README Add LICENSE Add missing static qualifiers Disable unused planes Reset all mappings in hwc_display_apply Don't pick a busy plane in layer_choose_plane Add another layer to the example Disable all planes before building the mapping Better hwc_display_apply error handling Add basic docs Iterate over layers in example Change planes to be a linked list instead of an array Basic brute-force plane allocation Reset best allocation to NULL Check plane is compatible with CRTC Guess zpos from plane type Add support for reading immutable plane zpos List planes by allocation order Don't assign layer to plane if missing props Extract allocation arguments to a struct Fix early bailout when we already have a better allocation Add basic support for zpos Rename library to liftoff Fix segfault when dup fails in liftoff_display_create Add test framework Use PRIu32 for printing plane IDs test: mock atomic commit improvements test: add liftoff_mock_drm_get_plane test: introduce structured alloc tests test: fix atomic commit layer compatibility test: add an alloc test with 3 layers test: add basic zpos tests test: add various zpos tests test: make our mock drmModeAtomicReq support more properties Make composited layers prevent plane allocation underneath test: add alloc@zpos-4x-domino-fail test: add alloc@zpos-4x-domino-partial Move composited layer on top constraint up Document how plane allocation works Extract plane_data init logic to function test: prevent layers from being assigned to primary plane Add layer_intersects Add intersection checks for composited layer on top check Add intersection check for planes under the current one Remove last_plane_zpos from plane allocation state ci: add .build.yml Fix format string in liftoff_display_apply test: add zpos-4x-disjoint-alt Add intersection check for layers over the current one Rename on_top to over Rename plane_alloc and plane_data readme: add basic usage Move example to its own directory Unset CRTC_ID on planes before plane allocation example/simple: disable CRTCs we don't use example: extract helpers into separate file example: refactor dumb FB helper example/simple: don't hardcode number of layers, use white background example/compositor: new example readme: add missing variable decl in example example/compositor: add flag to specify number of layers Add opaque structs forward declaration in libliftoff.h Add logging functions readme: add CI badge Add liftoff_output_set_composition_layer example/compositor: take advantage of the composition layer test: add composition tests Split plane functions into a separate file example/compositor: handle out-of-bounds coords when compositing Add TODO about remaining plane counting optimization ci: add codecov test: refactor build test: add liftoff_mock_commit_count Extract plane allocation constraints in functions example: add a description of each example Track layer property changes example: add dynamic example test: add a dynamic test readme: add link to intro blog post Introduce display_test_commit Introduce liftoff_log_errno Move plane allocation algorithm to alloc.c Add build-* to .gitignore example/multi-output: new example test: add a new test for layer priority Remove outdated TODO log: reset log callback to default when NULL is passed test: add benchmark test/libdrm_mock: bump resource limitations Keep track of the update frequency of each layer Rename display to device Fixup display → device bulk rename Don't re-use previous allocation if a layer has been removed Replace liftoff_device_apply with liftoff_output_apply Rename display.c to device.c test: add empty test test: make mock drmModeAtomicAddProperty return cursor Unset plane->layer and layer->plane on destroy Fix DEBUG logs printed when level is set to ERROR Don't re-use prev alloc on composition layer change Remove chatty debug log Log layer configuration before alloc Add a way to force FB composition Fix segfault when FB_ID isn't set Don't allocate planes for layers without a FB test: add a test with a layer without any prop set test: add a test with a zero FB_ID Allow NULL to be passed to destructors Fix format string for plane ID test/libdrm_mock: a test-only commit applies properties Move device_test_commit to device.c Retry atomic commit on EINTR and EAGAIN build: install public header file readme: add contributing section readme: add link to FOSDEM 2020 talk Print composition layer in logs Replace assert(0) with abort() test: add internal mutable prop list test: allow to attach props to mock planes Add support for the alpha property test: add test for alpha prop Add support for the rotation property test: a test-only commit doesn't apply properties test/libdrm_mock: add prefix to logs Take disabled layers into account in non_composition_layers_len Don't pick a plane for fully transparent layers test: add test with fully transparent layer ci: add freebsd CI Allow caller to pass commit flags Remove DRM_MODE_PAGE_FLIP_EVENT from commit flags example: fix exit status after failed drmModeAtomicCommit test: refactor dynamic test Force re-alloc when setting FB to 0 Replace liftoff_layer_property.changed with prev_value Force re-alloc when previous FB_ID was 0 test: add dynamic unset-fb and set-fb tests Don't re-alloc on IN_FENCE_FD change Don't re-alloc when alpha changes Don't re-alloc when FB_DAMAGE_CLIPS changes test: add missing plane alpha prop to prop@ignore-alpha test: add test with immutable zpos plane props Improve doc comments Stop enabling UNIVERSAL_PLANES Document that liftoff_device_create takes ownership of the FD build: remove libraries keyword arg from pkgconfig.generate Rename pkg-config file to "libliftoff" Move layer_is_visible to layer.c readme: reference the example/ dir Split liftoff_log_init into set_handler and set_priority ci: drop codecov test/alloc: document test_layer and test_setup Allow to choose which planes are managed by libliftoff Introduce liftoff_plane_get_id Replace liftoff_layer_get_plane_id with liftoff_layer_get_plane readme: add missing liftoff_device_register_all_planes call readme: update short description Fixup reference to liftoff_layer_get_plane_id in docs doc/compositor: new document readme: link to compositor guidelines readme: link to the example/ dir build: bump version to 0.1.0