[RFC 0/6] drm/fences: add in-fences to DRM

Gustavo Padovan
2016-03-23T18:47:41Z

From: Gustavo Padovan <gustavo.padovan@collabora.co.uk>

Hi,

This is a first proposal to discuss the addition of in-fences support
to DRM. It adds a new struct to fence.c to abstract the use of sync_file
in DRM drivers. The new struct fence_collection contains a array with all
fences that a atomic commit needs to wait on

/**
* struct fence_collection - aggregate fences together
* @num_fences: number of fence in the collection.
* @user_data: user data.
* @func: user callback to put user data.
* @fences: array of @num_fences fences.
*/
struct fence_collection {
int num_fences;
void *user_data;
collection_put_func_t func;
struct fence *fences[];
};

The fence_collection is allocated and filled by sync_file_fences_get() and
atomic_commit helpers can use fence_collection_wait() to wait the fences to
signal.

These patches depends on the sync ABI rework:

https://www.spinics.net/lists/dri-devel/msg102795.html

and the patch to de-stage the sync framework:

https://www.spinics.net/lists/dri-devel/msg102799.html

I also hacked together some sync support into modetest for testing:

https://git.collabora.com/cgit/user/padovan/libdrm.git/log/?h=atomic

Gustavo

Gustavo Padovan (6):
drm/fence: add FENCE_FD property to planes
dma-buf/fence: add struct fence_collection
dma-buf/sync_file: add sync_file_fences_get()
dma-buf/fence: add fence_collection_put()
dma-buf/fence: add fence_collection_wait()
drm/fence: support fence_collection on atomic commit

drivers/dma-buf/fence.c | 33 +++++++++++++++++++++++++++++++++
drivers/dma-buf/sync_file.c | 36 ++++++++++++++++++++++++++++++++++++
drivers/gpu/drm/drm_atomic.c | 13 +++++++++++++
drivers/gpu/drm/drm_atomic_helper.c | 10 ++++++----
drivers/gpu/drm/drm_crtc.c | 7 +++++++
include/drm/drm_crtc.h | 5 ++++-
include/linux/fence.h | 19 +++++++++++++++++++
include/linux/sync_file.h | 8 ++++++++
8 files changed, 126 insertions(+), 5 deletions(-)

--
2.5.0