Commit graph

190 commits

Author SHA1 Message Date
Simon Ser
447a9e8921 Document why the primary plane is a special case
For instance, i915 requires the primary plane to be enabled.
2021-08-13 12:38:05 +02:00
Simon Ser
8a971695bd test: introduce liftoff_mock_require_primary_plane
This allows to mimick i915's requirement of failing all commits
which don't have the primary plane enabled.

We could expand our test matrix to test with the param *and* without
it, but since enabling the param just makes the atomic check more
strict there's no real benefit of doing that. Enabling the param
can only make tests fail more often, not the other way around.
2021-08-13 12:28:13 +02:00
Simon Ser
149e149643 Improve alloc debug logging
Don't increase indent when skipping a plane. Better indent layer
and plane logs.
2021-08-13 09:23:16 +02:00
Simon Ser
8360818a7e Zero-initialize alloc_step and alloc_result
Avoids having to deal with uninitialized memory issues.
2021-08-12 19:30:34 +02:00
Simon Ser
cc3eec82fd Print alloc debug logs as a tree
The allocation process explores a tree, let's represent that tree
in the debug logs.
2021-08-12 19:27:17 +02:00
Simon Ser
f88df73fad Log when a test-only commit fails 2021-08-12 19:12:08 +02:00
Simon Ser
b941c3eb03 Log number of layers in output_log_layers
This can help figuring out if there are disabled layers.
2021-08-12 18:36:52 +02:00
Simon Ser
8f8c4d18a5 test: make sure NDEBUG is not defined
If NDEBUG is defined, then assert() becomes a no-op. Make sure it's
not.
2021-08-12 18:15:50 +02:00
Simon Ser
fe76702dfb Log number of candidate planes
This can be useful to figure out why liftoff_output_apply returns
an empty plane allocation.
2021-08-09 13:08:48 +02:00
Simon Ser
30ba835645 Log when no layer has been a plane 2021-08-09 12:58:35 +02:00
Simon Ser
9a6a7aaa87 Make fp16_to_double static
This prevents this internal symbol from being leaked in the
library's symbol table.
2021-08-09 12:50:32 +02:00
Simon Ser
7f07d398d1 Improve prop value pretty-printing in output_log_layers
Always print the sign when logging a signed value. Print the
full floating point value when logging an fp16 prop. SRC_X amd
SRC_Y are fp16 too.
2021-08-09 12:48:30 +02:00
Simon Ser
6321e7c5aa Add needs_composition APIs
Right now, compositors are expected to query liftoff_layer_get_plane_id to
decide whether a layer needs to be composited.

However there are cases where a layer has no plane, but still doesn't need
composition (e.g. when FB_ID is zero or when alpha is zero, in the future when
the layer is out of CRTC bounds etc).

Add a new API to make users' life simpler.

Closes: https://github.com/emersion/libliftoff/issues/54
2021-08-09 11:56:55 +02:00
Simon Ser
87e5dcfe72 build: bump version to 0.2.0 2021-08-09 11:29:05 +02:00
Simon Ser
89c1d37547 Make liftoff_layer_set_property return negative errno
This allows the caller to check for errors.
2021-08-09 11:27:08 +02:00
Simon Ser
516cf9404d Stop including stdbool.h from libliftoff.h
We don't use bool there anymore.
2021-07-30 16:22:58 +02:00
Simon Ser
f5a2b541ce Make liftoff_device_register_all_planes return an int
For consistency with liftoff_output_apply.
2021-07-30 16:19:29 +02:00
Simon Ser
61fd4c099a Make liftoff_output_apply return an int
Callers may want to get more details about the failure, in
particular EPERM indicates that the user isn't DRM master (can
happen on VT switch).
2021-07-27 12:28:00 +02:00
Simon Ser
a58b638736 build: bump version to 0.1.0 2021-07-01 14:34:53 +02:00
Simon Ser
37a5f27e89 readme: link to the example/ dir 2021-07-01 13:24:28 +02:00
Simon Ser
2e4254b124 readme: link to compositor guidelines 2021-07-01 13:23:26 +02:00
Simon Ser
b94f1e104f doc/compositor: new document 2021-07-01 13:20:46 +02:00
Simon Ser
326c8d67ad Fixup reference to liftoff_layer_get_plane_id in docs 2021-07-01 13:14:23 +02:00
Simon Ser
f1c2ac1981 readme: update short description 2021-07-01 11:55:25 +02:00
Simon Ser
27614202d2 readme: add missing liftoff_device_register_all_planes call 2021-07-01 11:52:58 +02:00
Simon Ser
bcb6e3cfb8 Replace liftoff_layer_get_plane_id with liftoff_layer_get_plane
Users can get back the plane ID with liftoff_plane_get_id.
2021-07-01 11:49:36 +02:00
Simon Ser
8260fa67d7 Introduce liftoff_plane_get_id
This allow users calling liftoff_device_register_all_planes to
easily figure out what a liftoff_plane represents.
2021-07-01 11:39:52 +02:00
Simon Ser
562f8b0af6 Allow to choose which planes are managed by libliftoff
Closes: https://github.com/emersion/libliftoff/issues/10
2021-07-01 11:37:10 +02:00
Simon Ser
1616f8ae6a test/alloc: document test_layer and test_setup 2021-06-24 19:05:01 +02:00
Simon Ser
799dddd6c4 ci: drop codecov
Instead generate the HTML reports ourselves, and rely on builds.sr.ht
artifacts.
2021-04-30 10:17:59 +02:00
Simon Ser
b08bbaa5e6 Split liftoff_log_init into set_handler and set_priority
This allows callers to change only one of those, without the other.
Also rename importance to priority and func to handler.
2021-03-31 12:44:24 +02:00
Simon Ser
12eb851a40 readme: reference the example/ dir 2021-03-29 17:39:25 +02:00
Simon Ser
c4ef21af35 Move layer_is_visible to layer.c 2021-02-24 11:40:01 +01:00
Simon Ser
470af77869 Rename pkg-config file to "libliftoff" 2021-02-24 11:01:23 +01:00
Simon Ser
88eb35b084 build: remove libraries keyword arg from pkgconfig.generate
This fixes the following warning:

    ../subprojects/libliftoff/meson.build:53: DEPRECATION: Library liftoff was
    passed to the "libraries" keyword argument of a previous call to generate()
    method instead of first positional argument. Adding liftoff to "Requires"
    field, but this is a deprecated behaviour that will change in a future
    version of Meson. Please report the issue if this warning cannot be avoided
    in your case.
2021-02-24 10:59:23 +01:00
Simon Ser
27462556db Document that liftoff_device_create takes ownership of the FD 2021-02-23 18:10:47 +01:00
Simon Ser
fbc4cf8dba
Stop enabling UNIVERSAL_PLANES
UNIVERSAL_PLANES is implicitly enabled by ATOMIC. No need to require both.
2020-12-22 15:06:13 +01:00
Simon Ser
c9e42e3c14
Improve doc comments
Improve formatting and expand descriptions.
2020-12-06 15:23:01 +01:00
Simon Ser
eaf52b49fc
test: add test with immutable zpos plane props
Closes: https://github.com/emersion/libliftoff/issues/50
2020-12-05 18:52:52 +01:00
Simon Ser
92fbebbe88
test: add missing plane alpha prop to prop@ignore-alpha
The plane would otherwise not be selected because it's missing the alpha prop.
2020-12-05 18:34:37 +01:00
Simon Ser
40411f6d3e
Don't re-alloc when FB_DAMAGE_CLIPS changes
This is updated at each atomic commit.
2020-12-05 14:36:47 +01:00
Simon Ser
9bfe58b7d2
Don't re-alloc when alpha changes 2020-12-05 13:24:17 +01:00
Simon Ser
eda317c25c
Don't re-alloc on IN_FENCE_FD change 2020-12-05 12:44:08 +01:00
Simon Ser
86d7bc9fd7
test: add dynamic unset-fb and set-fb tests
This adds test cases for 89b37acd98 ("Force re-alloc when previous FB_ID was
0") and 1700cbf1c9 ("Force re-alloc when setting FB to 0").
2020-12-05 12:36:34 +01:00
Simon Ser
89b37acd98
Force re-alloc when previous FB_ID was 0 2020-12-05 12:34:25 +01:00
Simon Ser
b936348acc
Replace liftoff_layer_property.changed with prev_value
Keep track of the previous value, e.g. to figure out when a layer goes from
disabled (no FB_ID or zero alpha) to enabled.
2020-12-05 12:28:50 +01:00
Simon Ser
1700cbf1c9
Force re-alloc when setting FB to 0 2020-12-05 12:18:36 +01:00
Simon Ser
b4bddc77a2
test: refactor dynamic test
Make it easier for dynamic tests to change the initial configuration and the
expected final allocation.
2020-12-05 11:54:39 +01:00
Simon Ser
93a346ff95
example: fix exit status after failed drmModeAtomicCommit 2020-11-12 15:15:55 +01:00
Simon Ser
24abeb923f
Remove DRM_MODE_PAGE_FLIP_EVENT from commit flags
It's illegal to request a page-flip event when performing a test-only commit.
The kernel returns EINVAL in this case [1].

[1]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/drm_atomic_uapi.c?id=407ab579637ced6dc32cfb2295afb7259cca4b22#n1318
2020-11-10 16:42:06 +01:00