Went through the spec VUs again and
there is a bit that says that binary semaphores must have all of
the their dependencies submitted for execution.
So essentially it means in our
implementation of QueueSubmit() we should be able to do a short
wait_for_available on all of those which does ensure everything is
properly ordered.
So I think you're right on this David,
waitBeforeSignal on binary semaphore is out of scope.
Again sorry for the noise.
-Lionel
On 02/08/2019 13:01, zhoucm1 wrote:
On 2019年08月02日 17:41, Lionel
Landwerlin wrote:
Hey David,
On 02/08/2019 12:11, zhoucm1 wrote:
Hi Lionel,
For binary semaphore, I guess every one will think
application will guarantee wait is behind the signal,
whenever the semaphore is shared or used in
internal-process.
I think below two options can fix your problem:
a. Can we extend vkWaitForFence so that it can be able to
wait on fence-available? If fence is available, then it's
safe to do semaphore wait in vkQueueSubmit.
I'm sorry, but I don't understand what vkWaitForFence() has
to do with this problem.
They test case we're struggling with doesn't use that API.
Can you maybe explain a bit more how it relates?
vkQueueSubmit()
vkWaitForFenceAvailable()
vkQueueSubmit()
vkWaitForFenceAvailable()
vkQueueSubmit()
vkWaitForFenceAvailable()
Sorry, that could lead application program very ugly.
b. Make waitBeforeSignal is valid for binary semaphore as
well, as that way, It is reasonable to add wait/signal
counting for binary syncobj.
Yeah essentially the change we're proposing internally makes
binary semaphores use syncobj timelines.
Will you raise up a MR to add the language of waitBeforeSignal
support of binary semaphore to vulkan spec?
-David
There is just another u64 associated with them.
-Lionel
-David
On 2019年08月02日 14:27, Lionel
Landwerlin wrote:
On 02/08/2019 09:10, Koenig,
Christian wrote:
And who says that it's not waiting for
it's own previous payload?
That's was I understood from you previous comment :
"there is no guarantee that ctx2 will run in between jobs"
See if the payload is a counter this
won't work either. Keep in mind that this has the
semantic of a semaphore. Whoever grabs the semaphore
first wins and can run, everybody else has to wait.
What performs the "grab" here?
I thought that would be vkQueueSubmit().
Since that occuring from a single application thread,
that should then be ordered in execution of
ctx1,ctx2,ctx1,...
Thanks for your time on this,
-Lionel
That's an implementation detail of our
sync objects, but I don't think that this behavior is
part of the Vulkan specification.
Regards,
Christian.
|
_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/dri-devel