2016-05-20 Christian König <deathsimple at vodafone.de>: > From: Gustavo Padovan <gustavo.padovan at collabora.co.uk> > > struct fence_collection inherits from struct fence and carries a > collection of fences that needs to be waited together. > > It is useful to translate a sync_file to a fence to remove the complexity > of dealing with sync_files on DRM drivers. So even if there are many > fences in the sync_file that needs to waited for a commit to happen, > they all get added to the fence_collection and passed for DRM use as > a standard struct fence. > > That means that no changes needed to any driver besides supporting fences. > > fence_collection's fence doesn't belong to any timeline context, so > fence_is_later() and fence_later() are not meant to be called with > fence_collections fences. > > v2: Comments by Daniel Vetter: > - merge fence_collection_init() and fence_collection_add() > - only add callbacks at ->enable_signalling() > - remove fence_collection_put() > - check for type on to_fence_collection() > - adjust fence_is_later() and fence_later() to WARN_ON() if they > are used with collection fences. > > v3: - Initialize fence_cb.node at fence init. > > Comments by Chris Wilson: > - return "unbound" on fence_collection_get_timeline_name() > - don't stop adding callbacks if one fails > - remove redundant !! on fence_collection_enable_signaling() > - remove redundant () on fence_collection_signaled > - use fence_default_wait() instead > > v4 (chk): Rework, simplification and cleanup: > - Drop FENCE_NO_CONTEXT handling, always allocate a context. > - Rename to fence_array. > - Return fixed driver name. > - Register only one callback at a time. > - Document that create function takes ownership of array.
This looks good to me. Dropping NO_CONTEXT was a good idea, also registering only one callback makes it looks better. Gustavo