[PATCH 5/8] sync_file: add support for a semaphore object

Chris Wilson chris at chris-wilson.co.uk
Wed Apr 12 10:31:17 UTC 2017


On Wed, Apr 12, 2017 at 12:36:37PM +1000, Dave Airlie wrote:
> On 11 April 2017 at 17:50, Chris Wilson <chris at chris-wilson.co.uk> wrote:
> > On Tue, Apr 11, 2017 at 01:22:17PM +1000, Dave Airlie wrote:
> >> From: Dave Airlie <airlied at redhat.com>
> >>
> >> This object can be used to implement the Vulkan semaphores.
> >>
> >> The object behaviour differs from fence, in that you can
> >> replace the underlying fence, and you cannot merge semaphores.
> >>
> >> Signed-off-by: Dave Airlie <airlied at redhat.com>
> >> ---
> >> +/**
> >> + * sync_file_replace_fence - replace the fence related to the sync_file
> >> + * @sync_file:        sync file to replace fence in
> >> + * @fence: fence to replace with (or NULL for no fence).
> >> + * Returns previous fence.
> >> + */
> >> +struct dma_fence *sync_file_replace_fence(struct sync_file *sync_file,
> >> +                                       struct dma_fence *fence)
> >> +{
> >> +     struct dma_fence *ret_fence = NULL;
> >> +
> >> +     if (sync_file->type != SYNC_FILE_TYPE_SEMAPHORE)
> >> +             return NULL;
> >> +
> >> +     if (fence)
> >> +             dma_fence_get(fence);
> >> +
> >> +     mutex_lock(&sync_file->lock);
> >> +
> >> +     ret_fence = sync_file_get_fence_locked(sync_file);
> >> +     if (ret_fence) {
> >> +             if (test_bit(POLL_ENABLED, &ret_fence->flags))
> >> +                     dma_fence_remove_callback(ret_fence, &sync_file->cb);
> >> +     }
> >
> > Fails when sync_file_replace_fence is passed sync_file->fence.
> 
> Not sure what the best semantics are there, any opinions on barring
> wakeups/polling on semaphore sync_files, and just punting this
> until we need it.

I think getting it right now will make writing sw_sync-esque (i.e. cpu)
tests easier and more complete.
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre


More information about the dri-devel mailing list