v3dv: add support to multiple wait and signal semaphores
We are extending our kernel interface to support more than one wait
and signal semaphores on job submission. For this, when kernel-driver
supports the multiple syncobjs extension, we should create a generic
extension type and determine the multiple semaphore extension by an
id. It keeps waitSemaphores and/or signalSemaphores from submitInfo
according to job submission criteria and actually use wait semaphores,
instead of last job submitted when serialization is not required.
With these changes, we can remove a FIXME to pass the actual
syncobj to the wait semaphores. Also, signal semaphores is already
handled in the last job of the last cmd buffer, and we no longer need
to add them in the submit master thread.
v2:
- improve comments (Iago)
- check code style (Iago)
- rework conditions (Iago)
- refine implementation (Iago)
- drop do_sem_wait [redundant] (Iago)
- accommodate timeline interface (Iago)
- should allocate extension
- rebase
Signed-off-by:
Melissa Wen <mwen@igalia.com>
- include/drm-uapi/v3d_drm.h 74 additions, 1 deletioninclude/drm-uapi/v3d_drm.h
- src/broadcom/vulkan/v3dv_device.c 3 additions, 0 deletionssrc/broadcom/vulkan/v3dv_device.c
- src/broadcom/vulkan/v3dv_private.h 4 additions, 0 deletionssrc/broadcom/vulkan/v3dv_private.h
- src/broadcom/vulkan/v3dv_queue.c 224 additions, 42 deletionssrc/broadcom/vulkan/v3dv_queue.c