[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