From: Daniel Vetter <daniel@ffwll.ch> To: Gustavo Padovan <gustavo@padovan.org> Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, "Daniel Stone" <daniels@collabora.com>, "Arve Hjønnevåg" <arve@android.com>, "Riley Andrews" <riandrews@android.com>, "Daniel Vetter" <daniel.vetter@ffwll.ch>, "Rob Clark" <robdclark@gmail.com>, "Greg Hackmann" <ghackmann@google.com>, "John Harrison" <John.C.Harrison@Intel.com>, laurent.pinchart@ideasonboard.com, seanpaul@google.com, marcheu@google.com, m.chehab@samsung.com, "Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>, "Gustavo Padovan" <gustavo.padovan@collabora.co.uk> Subject: Re: [RFC 2/8] dma-buf/sync_file: add sync_file_fences_get() Date: Fri, 15 Apr 2016 09:56:36 +0200 [thread overview] Message-ID: <20160415075636.GP2510@phenom.ffwll.local> (raw) In-Reply-To: <1460683781-22535-3-git-send-email-gustavo@padovan.org> On Thu, Apr 14, 2016 at 06:29:35PM -0700, Gustavo Padovan wrote: > From: Gustavo Padovan <gustavo.padovan@collabora.co.uk> > > Creates a function that given an sync file descriptor returns a > fence_collection containing all fences in the sync_file. > > If there is only one fence in the sync_file this fence itself is returned, > however if there is more than one, a fence_collection fence is returned. > > Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk> > --- > drivers/dma-buf/sync_file.c | 37 +++++++++++++++++++++++++++++++++++++ > include/linux/sync_file.h | 10 ++++++++++ > 2 files changed, 47 insertions(+) > > diff --git a/drivers/dma-buf/sync_file.c b/drivers/dma-buf/sync_file.c > index 4d2af24..926fafa 100644 > --- a/drivers/dma-buf/sync_file.c > +++ b/drivers/dma-buf/sync_file.c > @@ -23,6 +23,7 @@ > #include <linux/slab.h> > #include <linux/uaccess.h> > #include <linux/anon_inodes.h> > +#include <linux/fence-collection.h> > #include <linux/sync_file.h> > #include <uapi/linux/sync_file.h> > > @@ -122,6 +123,39 @@ void sync_file_install(struct sync_file *sync_file, int fd) > } > EXPORT_SYMBOL(sync_file_install); > > +struct fence *sync_file_fences_get(int fd) > +{ > + struct sync_file *sync_file; > + struct fence_collection *collection; > + int i; > + > + sync_file = sync_file_fdget(fd); > + if (!sync_file) > + return NULL; > + > + if (sync_file->num_fences == 1) { > + struct fence *fence = sync_file->cbs[0].fence; > + > + sync_file_put(sync_file); > + return fence; > + } > + > + collection = fence_collection_init(sync_file->num_fences); > + if (!collection) { > + sync_file_put(sync_file); > + return NULL; > + } > + > + for (i = 0 ; i < sync_file->num_fences ; i++) > + fence_collection_add(collection, sync_file->cbs[i].fence); > + > + sync_file->collection = collection; > + sync_file_put(sync_file); > + > + return &collection->base; > +} This function should probably acquire a reference for the returned fence for the caller. -Daniel > +EXPORT_SYMBOL(sync_file_fences_get); > + > static void sync_file_add_pt(struct sync_file *sync_file, int *i, > struct fence *fence) > { > @@ -200,6 +234,9 @@ static void sync_file_free(struct kref *kref) > kref); > int i; > > + if (sync_file->collection) > + fence_collection_put(sync_file->collection); > + > for (i = 0; i < sync_file->num_fences; ++i) { > fence_remove_callback(sync_file->cbs[i].fence, > &sync_file->cbs[i].cb); > diff --git a/include/linux/sync_file.h b/include/linux/sync_file.h > index 7b7a89d..2cb0486 100644 > --- a/include/linux/sync_file.h > +++ b/include/linux/sync_file.h > @@ -49,6 +49,7 @@ struct sync_file { > wait_queue_head_t wq; > atomic_t status; > > + struct fence_collection *collection; > struct sync_file_cb cbs[]; > }; > > @@ -103,4 +104,13 @@ void sync_file_put(struct sync_file *sync_file); > */ > void sync_file_install(struct sync_file *sync_file, int fd); > > +/** > + * sync_file_fences_get - get the fence related to the fd > + * @fd: file descriptor to look for a fence collection > + * > + * Ensures @fd references a valid sync_file and returns the base object > + * of the fence_collection that contains all fences in the sync_file > + * or NULL in case of error. > + */ > +struct fence *sync_file_fences_get(int fd); > #endif /* _LINUX_SYNC_H */ > -- > 2.5.5 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch
WARNING: multiple messages have this Message-ID (diff)
From: Daniel Vetter <daniel@ffwll.ch> To: Gustavo Padovan <gustavo@padovan.org> Cc: marcheu@google.com, "Daniel Stone" <daniels@collabora.com>, seanpaul@google.com, "Daniel Vetter" <daniel.vetter@ffwll.ch>, "Arve Hjønnevåg" <arve@android.com>, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, "Riley Andrews" <riandrews@android.com>, m.chehab@samsung.com, "Gustavo Padovan" <gustavo.padovan@collabora.co.uk>, "John Harrison" <John.C.Harrison@Intel.com>, laurent.pinchart@ideasonboard.com Subject: Re: [RFC 2/8] dma-buf/sync_file: add sync_file_fences_get() Date: Fri, 15 Apr 2016 09:56:36 +0200 [thread overview] Message-ID: <20160415075636.GP2510@phenom.ffwll.local> (raw) In-Reply-To: <1460683781-22535-3-git-send-email-gustavo@padovan.org> On Thu, Apr 14, 2016 at 06:29:35PM -0700, Gustavo Padovan wrote: > From: Gustavo Padovan <gustavo.padovan@collabora.co.uk> > > Creates a function that given an sync file descriptor returns a > fence_collection containing all fences in the sync_file. > > If there is only one fence in the sync_file this fence itself is returned, > however if there is more than one, a fence_collection fence is returned. > > Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk> > --- > drivers/dma-buf/sync_file.c | 37 +++++++++++++++++++++++++++++++++++++ > include/linux/sync_file.h | 10 ++++++++++ > 2 files changed, 47 insertions(+) > > diff --git a/drivers/dma-buf/sync_file.c b/drivers/dma-buf/sync_file.c > index 4d2af24..926fafa 100644 > --- a/drivers/dma-buf/sync_file.c > +++ b/drivers/dma-buf/sync_file.c > @@ -23,6 +23,7 @@ > #include <linux/slab.h> > #include <linux/uaccess.h> > #include <linux/anon_inodes.h> > +#include <linux/fence-collection.h> > #include <linux/sync_file.h> > #include <uapi/linux/sync_file.h> > > @@ -122,6 +123,39 @@ void sync_file_install(struct sync_file *sync_file, int fd) > } > EXPORT_SYMBOL(sync_file_install); > > +struct fence *sync_file_fences_get(int fd) > +{ > + struct sync_file *sync_file; > + struct fence_collection *collection; > + int i; > + > + sync_file = sync_file_fdget(fd); > + if (!sync_file) > + return NULL; > + > + if (sync_file->num_fences == 1) { > + struct fence *fence = sync_file->cbs[0].fence; > + > + sync_file_put(sync_file); > + return fence; > + } > + > + collection = fence_collection_init(sync_file->num_fences); > + if (!collection) { > + sync_file_put(sync_file); > + return NULL; > + } > + > + for (i = 0 ; i < sync_file->num_fences ; i++) > + fence_collection_add(collection, sync_file->cbs[i].fence); > + > + sync_file->collection = collection; > + sync_file_put(sync_file); > + > + return &collection->base; > +} This function should probably acquire a reference for the returned fence for the caller. -Daniel > +EXPORT_SYMBOL(sync_file_fences_get); > + > static void sync_file_add_pt(struct sync_file *sync_file, int *i, > struct fence *fence) > { > @@ -200,6 +234,9 @@ static void sync_file_free(struct kref *kref) > kref); > int i; > > + if (sync_file->collection) > + fence_collection_put(sync_file->collection); > + > for (i = 0; i < sync_file->num_fences; ++i) { > fence_remove_callback(sync_file->cbs[i].fence, > &sync_file->cbs[i].cb); > diff --git a/include/linux/sync_file.h b/include/linux/sync_file.h > index 7b7a89d..2cb0486 100644 > --- a/include/linux/sync_file.h > +++ b/include/linux/sync_file.h > @@ -49,6 +49,7 @@ struct sync_file { > wait_queue_head_t wq; > atomic_t status; > > + struct fence_collection *collection; > struct sync_file_cb cbs[]; > }; > > @@ -103,4 +104,13 @@ void sync_file_put(struct sync_file *sync_file); > */ > void sync_file_install(struct sync_file *sync_file, int fd); > > +/** > + * sync_file_fences_get - get the fence related to the fd > + * @fd: file descriptor to look for a fence collection > + * > + * Ensures @fd references a valid sync_file and returns the base object > + * of the fence_collection that contains all fences in the sync_file > + * or NULL in case of error. > + */ > +struct fence *sync_file_fences_get(int fd); > #endif /* _LINUX_SYNC_H */ > -- > 2.5.5 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2016-04-15 7:56 UTC|newest] Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-04-15 1:29 [RFC 0/8] drm: explicit fencing support Gustavo Padovan 2016-04-15 1:29 ` Gustavo Padovan 2016-04-15 1:29 ` [RFC 1/8] dma-buf/fence: add fence_collection fences Gustavo Padovan 2016-04-15 1:29 ` Gustavo Padovan 2016-04-15 8:02 ` Daniel Vetter 2016-04-15 8:02 ` Daniel Vetter 2016-04-15 9:03 ` Christian König 2016-04-15 9:03 ` Christian König 2016-04-15 11:44 ` Daniel Vetter 2016-04-15 11:44 ` Daniel Vetter 2016-04-15 18:29 ` Gustavo Padovan 2016-04-15 18:29 ` Gustavo Padovan 2016-04-15 19:23 ` Daniel Vetter 2016-04-15 19:23 ` Daniel Vetter 2016-04-15 18:27 ` Gustavo Padovan 2016-04-15 18:27 ` Gustavo Padovan 2016-04-15 19:25 ` Daniel Vetter 2016-04-15 19:25 ` Daniel Vetter 2016-05-18 7:07 ` Christian König 2016-05-18 7:07 ` Christian König 2016-05-18 14:30 ` Gustavo Padovan 2016-04-15 1:29 ` [RFC 2/8] dma-buf/sync_file: add sync_file_fences_get() Gustavo Padovan 2016-04-15 1:29 ` Gustavo Padovan 2016-04-15 7:56 ` Daniel Vetter [this message] 2016-04-15 7:56 ` Daniel Vetter 2016-04-15 1:29 ` [RFC 3/8] drm/fence: allow fence waiting to be interrupted by userspace Gustavo Padovan 2016-04-15 1:29 ` Gustavo Padovan 2016-04-15 7:47 ` Daniel Vetter 2016-04-15 7:47 ` Daniel Vetter 2016-04-15 1:29 ` [RFC 4/8] drm/fence: add in-fences support Gustavo Padovan 2016-04-15 1:29 ` Gustavo Padovan 2016-04-15 8:05 ` Daniel Vetter 2016-04-15 8:05 ` Daniel Vetter 2016-04-15 18:40 ` Gustavo Padovan 2016-04-15 18:40 ` Gustavo Padovan 2016-04-15 8:11 ` Daniel Vetter 2016-04-15 8:11 ` Daniel Vetter 2016-04-15 1:29 ` [RFC 5/8] drm/fence: add fence to drm_pending_event Gustavo Padovan 2016-04-15 1:29 ` Gustavo Padovan 2016-04-15 8:09 ` Daniel Vetter 2016-04-15 8:09 ` Daniel Vetter 2016-04-15 18:59 ` Gustavo Padovan 2016-04-15 18:59 ` Gustavo Padovan 2016-04-15 19:31 ` Daniel Vetter 2016-04-15 19:31 ` Daniel Vetter 2016-04-15 1:29 ` [RFC 6/8] drm/fence: create DRM_MODE_ATOMIC_OUT_FENCE flag Gustavo Padovan 2016-04-15 1:29 ` Gustavo Padovan 2016-04-15 1:40 ` Rob Clark 2016-04-15 1:40 ` Rob Clark 2016-04-15 19:05 ` Gustavo Padovan 2016-04-15 19:05 ` Gustavo Padovan 2016-04-15 1:29 ` [RFC 7/8] drm/fence: create per-crtc sync_timeline Gustavo Padovan 2016-04-15 1:29 ` Gustavo Padovan 2016-04-15 1:29 ` [RFC 8/8] drm/fence: add out-fences support Gustavo Padovan 2016-04-15 1:29 ` Gustavo Padovan 2016-04-15 8:18 ` Daniel Vetter 2016-04-15 8:18 ` Daniel Vetter 2016-04-15 19:15 ` Gustavo Padovan 2016-04-15 19:15 ` Gustavo Padovan
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20160415075636.GP2510@phenom.ffwll.local \ --to=daniel@ffwll.ch \ --cc=John.C.Harrison@Intel.com \ --cc=arve@android.com \ --cc=daniel.vetter@ffwll.ch \ --cc=daniels@collabora.com \ --cc=dri-devel@lists.freedesktop.org \ --cc=ghackmann@google.com \ --cc=gustavo.padovan@collabora.co.uk \ --cc=gustavo@padovan.org \ --cc=laurent.pinchart@ideasonboard.com \ --cc=linux-kernel@vger.kernel.org \ --cc=m.chehab@samsung.com \ --cc=maarten.lankhorst@linux.intel.com \ --cc=marcheu@google.com \ --cc=riandrews@android.com \ --cc=robdclark@gmail.com \ --cc=seanpaul@google.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.