Well we still need implicit sync or otherwise the GPU scheduler would pick up the jobs in the wrong order.

See without this when we have the following sequence of submission:

Client IB1 using buffer A
Client IB2
X IB1 using buffer A

We could end up with the execution order

X IB1 using buffer A
Client IB1 using buffer A
Client IB2

And that is not correct. The scheduler is only allowed to do the following:

Client IB1 using buffer A
X IB1 using buffer A
Client IB2

And that's what implicit sync is taking care of.

Christian.

Am 26.05.20 um 00:07 schrieb Marek Olšák:
If a user mode driver is changed to rely on the existence of implicit sync, it results in corruption and flickering as reported here: https://gitlab.freedesktop.org/mesa/mesa/-/issues/2950

Marek

On Mon, May 25, 2020 at 6:05 PM Marek Olšák <maraeo@gmail.com> wrote:
Hi Christian,

Bas and Michel wanted to discuss this. The main disadvantage of no implicit (pipeline) sync within the same queue is that we get lower performance and lower GPU utilization in some cases.

We actually never really needed the kernel to have implicit sync, because all user mode drivers contained hacks to work without it.

Marek