this patch series reminder me my another thoughts recently, But I don't
know if my idea is appropriated:
sometimes one person could only need wait any of these fence array, but
it doesn't want to call fence_wait_any since which will block its
thread. if there is a mechanism let the person register a callback to
these fence array, then that will be very convenient.
So I want to add a event fence, which is a special kind of fence and
indicates this event is satisfied and is signalled by any of the fence
array.
What do you think of it?
Regards,
David Zhou
On 2016å¹´03æ24æ¥ 15:20, Maarten Lankhorst wrote:
> Hey,
>
> Op 23-03-16 om 19:47 schreef Gustavo Padovan:
>> From: Gustavo Padovan <gustavo.padovan at 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
>>
> Why did you choose to add fence_collection, rather than putting sync_file in
> state?
>
> There used to be a sync_fence_wait function, which would mean you'd have
> everything you need.
>
> ~Maarten
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel