drm: writeback: Add out-fences for writeback connectors
Add the WRITEBACK_OUT_FENCE_PTR property to writeback connectors, to
enable userspace to get a fence which will signal once the writeback is
complete. It is not allowed to request an out-fence without a
framebuffer attached to the connector.
A timeline is added to drm_writeback_connector for use by the writeback
out-fences.
In the case of a commit failure or DRM_MODE_ATOMIC_TEST_ONLY, the fence
is set to -1.
Changes from v2:
- Rebase onto Gustavo Padovan's v9 explicit sync series
- Change out_fence_ptr type to s32 __user *
- Set *out_fence_ptr to -1 in drm_atomic_connector_set_property
- Store fence in drm_writeback_job
Gustavo Padovan:
- Move out_fence_ptr out of connector_state
- Signal fence from drm_writeback_signal_completion instead of
in driver directly
Changes from v3:
- Rebase onto commit 7e9081c5aa
("drm/fence: fix memory overwrite
when setting out_fence fd") (change out_fence_ptr to s32 __user *,
for real this time.)
- Update documentation around WRITEBACK_OUT_FENCE_PTR
Signed-off-by: Brian Starkey <brian.starkey@arm.com>
[rebased and fixed conflicts]
Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com>
Signed-off-by: Liviu Dudau <liviu.dudau@arm.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Sean Paul <seanpaul@chromium.org>
Link: https://patchwork.freedesktop.org/patch/229036/
This commit is contained in:

committed by
Liviu Dudau

parent
935774cd71
commit
b13cc8dd58
@@ -441,10 +441,10 @@ struct drm_connector_state {
|
||||
/**
|
||||
* @writeback_job: Writeback job for writeback connectors
|
||||
*
|
||||
* Holds the framebuffer for a writeback connector. As the writeback
|
||||
* completion may be asynchronous to the normal commit cycle, the
|
||||
* writeback job lifetime is managed separately from the normal atomic
|
||||
* state by this object.
|
||||
* Holds the framebuffer and out-fence for a writeback connector. As
|
||||
* the writeback completion may be asynchronous to the normal commit
|
||||
* cycle, the writeback job lifetime is managed separately from the
|
||||
* normal atomic state by this object.
|
||||
*
|
||||
* See also: drm_writeback_queue_job() and
|
||||
* drm_writeback_signal_completion()
|
||||
|
Reference in New Issue
Block a user