diff --git a/src/freedreno/drm/freedreno_ringbuffer_sp.c b/src/freedreno/drm/freedreno_ringbuffer_sp.c index a6dd3ed03cb..c4799887ad7 100644 --- a/src/freedreno/drm/freedreno_ringbuffer_sp.c +++ b/src/freedreno/drm/freedreno_ringbuffer_sp.c @@ -302,6 +302,9 @@ fd_submit_sp_flush(struct fd_submit *submit, int in_fence_fd, bool use_fence_fd) bool has_shared = fd_submit_sp_flush_prep(submit, in_fence_fd, out_fence); + if ((in_fence_fd != -1) || out_fence->use_fence_fd) + pipe->no_implicit_sync = true; + /* The rule about skipping submit merging with shared buffers is only * needed for implicit-sync. */ diff --git a/src/freedreno/drm/msm/msm_ringbuffer_sp.c b/src/freedreno/drm/msm/msm_ringbuffer_sp.c index 55639d80661..8e46f3f1387 100644 --- a/src/freedreno/drm/msm/msm_ringbuffer_sp.c +++ b/src/freedreno/drm/msm/msm_ringbuffer_sp.c @@ -105,7 +105,6 @@ flush_submit_list(struct list_head *submit_list) if (fd_submit->in_fence_fd != -1) { req.flags |= MSM_SUBMIT_FENCE_FD_IN; req.fence_fd = fd_submit->in_fence_fd; - pipe->no_implicit_sync = true; } if (pipe->no_implicit_sync) { diff --git a/src/freedreno/drm/virtio/virtio_ringbuffer.c b/src/freedreno/drm/virtio/virtio_ringbuffer.c index c4e1b4d7a67..5d691a93e10 100644 --- a/src/freedreno/drm/virtio/virtio_ringbuffer.c +++ b/src/freedreno/drm/virtio/virtio_ringbuffer.c @@ -183,10 +183,6 @@ flush_submit_list(struct list_head *submit_list) */ out_fence->use_fence_fd = true; - if (fd_submit->in_fence_fd != -1) { - pipe->no_implicit_sync = true; - } - if (pipe->no_implicit_sync) { req->flags |= MSM_SUBMIT_NO_IMPLICIT; }