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

Michel Dänzer michel at daenzer.net
Tue Jul 11 02:36:50 UTC 2017


On 11/07/17 06:09 AM, Jason Ekstrand wrote:
> On Mon, Jul 10, 2017 at 9:15 AM, Christian König
> <deathsimple at vodafone.de <mailto:deathsimple at vodafone.de>> wrote:
> 
>     Am 10.07.2017 um 17:52 schrieb Jason Ekstrand:
>>     On Mon, Jul 10, 2017 at 8:45 AM, Christian König
>>     <deathsimple at vodafone.de <mailto:deathsimple at vodafone.de>> wrote:
>>
>>         Am 10.07.2017 um 17:28 schrieb Jason Ekstrand:
>>>         On Wed, Jul 5, 2017 at 6:04 PM, Dave Airlie
>>>         <airlied at gmail.com <mailto:airlied at gmail.com>> wrote:
>>>         [SNIP]
>>>         So, reading some CTS tests again, and I think we have a
>>>         problem here.  The Vulkan spec allows you to wait on a fence
>>>         that is in the unsignaled state.
>>
>>         At least on the closed source driver that would be illegal as
>>         far as I know.
>>
>>
>>     Then they are doing workarounds in userspace.  There are
>>     definitely CTS tests for this:
>>
>>     https://github.com/KhronosGroup/VK-GL-CTS/blob/master/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationBasicFenceTests.cpp#L74
>>     <https://github.com/KhronosGroup/VK-GL-CTS/blob/master/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationBasicFenceTests.cpp#L74>
>>      
>>
>>         You can't wait on a semaphore before the signal operation is
>>         send down to the kerel.
>>
>>
>>     We (Intel) deal with this today by tracking whether or not the
>>     fence has been submitted and using a condition variable in
>>     userspace to sort it all out.
> 
>     Which sounds exactly like what AMD is doing in it's drivers as well.
> 
> 
> Which doesn't work cross-process so...

Surely it can be made to work by providing suitable kernel APIs to
userspace?


>>     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.


> That makes it very hard for people like me to get their jobs done. :-)

Jason, that's uncalled for. Christian is also just doing his job here.


-- 
Earthling Michel Dänzer               |               http://www.amd.com
Libre software enthusiast             |             Mesa and X developer


More information about the dri-devel mailing list