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