[PATCH] drm/syncobj: add sync obj wait interface. (v6)

Christian König deathsimple at vodafone.de
Wed Jul 12 07:39:25 UTC 2017


Am 11.07.2017 um 17:43 schrieb Jason Ekstrand:
> On Tue, Jul 11, 2017 at 12:17 AM, Christian König 
> <deathsimple at vodafone.de <mailto:deathsimple at vodafone.de>> wrote:
>
>     [SNIP]
>
>                      If we ever want to share fences across processes
>                 (which we do),
>                      then this needs to be sorted in the kernel.
>
>                  That would clearly get a NAK from my side, even
>             Microsoft forbids
>                  wait before signal because you can easily end up in
>             deadlock situations.
>
>             Please don't NAK things that are required by the API
>             specification and
>             CTS tests.
>
>         There is no requirement for every aspect of the Vulkan API
>         specification
>         to be mirrored 1:1 in the kernel <-> userspace API. We have to
>         work out
>         what makes sense at each level.
>
>
>     Exactly, if we have a synchronization problem between two
>     processes that should be solved in userspace.
>
>     E.g. if process A hasn't submitted it's work to the kernel it
>     should flush it's commands before sending a flip event to the
>     compositor.
>
>
> Ok, I think there is some confusion here on what is being proposed.  
> Here are some things that are *not* being proposed:
>
>  1. This does *not* allow a client to block another client's GPU work 
> indefinitely.  This is entirely for a CPU wait API to allow for a 
> "wait for submit" as well as a "wait for finish".
Yeah, that is a rather good point.

>  2. This is *not* for system compositors that need to be robust 
> against malicious clients.
I can see the point, but I think the kernel interface should still be 
idiot prove even in the unlikely case the universe suddenly stops to 
produce idiots.

> The expected use for the OPAQUE_FD is two very tightly integrated 
> processes which trust each other but need to be able to share 
> synchronization primitives.
Well, that raises a really important question: What is the actual use 
case for this if not communication between client and compositor?

> Could we do this "in userspace"?  Yes, with added kernel API.  we 
> would need some way of strapping a second FD onto a syncobj or 
> combining two FDs into one to send across the wire or something like 
> that, then add a shared memory segment, and then pile on a bunch of 
> code to do cross-process condition variables and state tracking.  I 
> really don't see how that's a better solution than adding a flag to 
> the kernel API to just do what we want.
Way to complicated.

My thinking was rather to optionally allow a single page to be mmap()ed 
into the process address space from the fd and then put a futex, 
pthread_cond or X shared memory fence or anything like that into it.

Regards,
Christian.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20170712/57c2d9c4/attachment-0001.html>


More information about the dri-devel mailing list