All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/4] drm/v3d: add multiple in/out syncobjs support
@ 2021-09-30 16:14 Melissa Wen
  2021-09-30 16:15 ` [PATCH v3 1/4] drm/v3d: decouple adding job dependencies steps from job init Melissa Wen
                   ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: Melissa Wen @ 2021-09-30 16:14 UTC (permalink / raw)
  To: dri-devel
  Cc: Emma Anholt, David Airlie, Daniel Vetter, Maxime Ripard,
	Boris Brezillon, Iago Toral

[-- Attachment #1: Type: text/plain, Size: 3020 bytes --]

Currently, v3d only supports single in/out syncobj per submission (in
v3d_submit_cl, there are two in_sync, one for bin and another for render
job); however, Vulkan queue submit operations expect multiples wait and
signal semaphores. This series extends v3d interface and job dependency
operations to handle more than one in/out syncobj.

The first patch just decouples the steps to lookup and add job
dependency from the job init code, since the operation repeats for every
syncobj that a job should wait before starting. So, the fourth patch of
this series will reuse it to handle multiples wait for semaphores.

The second patch moves job memory allocation to v3d_job_init() for any
type of v3d_job-based job. The main goal is to prevent errors when
handling job initialization failures (doing a proper cleanup). 

The third patch extends our interface by using a generic extension.
This approach was inspired by i915_user_extension[1] and
amd_cs_chunks[2] to give a little more flexibility in adding other
submission features in the future. Therefore, the list of extensions
would work as a hub of features that use an id to determine the
corresponding feature data type.

With this base, the fourth patch adds multiple wait/signal semaphores
support. For this, we add to the list of the generic extensions a new
data type (drm_v3d_multi_sync) that points to two arrays of syncobjs
(in/out) and also determines (wait_stage) the job to add wait
dependencies (v3d_queue). An auxiliary struct (v3d_submit_ext) is used
when parsing submission extensions. Finally, we reserve some space in
the semaphore struct (drm_v3d_sem) to accommodate timeline semaphores
that we aim to add support soon (same reason for already defining
v3d_submit_outsync).

[1] https://cgit.freedesktop.org/drm/drm-misc/commit/drivers/gpu/drm/i915/i915_user_extensions.c?id=9d1305ef80b95dde0337106ed8b826604e2155ad
[2] https://cgit.freedesktop.org/drm/drm-misc/tree/include/uapi/drm/amdgpu_drm.h#n556

In the mesa side, the work related to this series is in progress at
https://gitlab.freedesktop.org/mwen/mesa/-/commit/6c340bb35203a0418af87a7921d7295a4047b77f

v2:
- move job mem alloc to v3d_job_init (Iago)
- simplify and subclass the generic extension struct (Daniel)
- make job dependency conditions more understandable (Iago)

v3 (Iago):
- job should be initialized NULL
- fix error handling for pm ops in v3d_job_init
- remove irrelevant comment
- fix multisync conditions to multiple vs single sempahores

Melissa Wen (4):
  drm/v3d: decouple adding job dependencies steps from job init
  drm/v3d: alloc and init job in one shot
  drm/v3d: add generic ioctl extension
  drm/v3d: add multiple syncobjs support

 drivers/gpu/drm/v3d/v3d_drv.c |  10 +-
 drivers/gpu/drm/v3d/v3d_drv.h |  24 ++-
 drivers/gpu/drm/v3d/v3d_gem.c | 390 +++++++++++++++++++++++++---------
 include/uapi/drm/v3d_drm.h    |  78 +++++++
 4 files changed, 389 insertions(+), 113 deletions(-)

-- 
2.30.2


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2021-10-01  8:54 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-30 16:14 [PATCH v3 0/4] drm/v3d: add multiple in/out syncobjs support Melissa Wen
2021-09-30 16:15 ` [PATCH v3 1/4] drm/v3d: decouple adding job dependencies steps from job init Melissa Wen
2021-09-30 16:17 ` [PATCH v3 2/4] drm/v3d: alloc and init job in one shot Melissa Wen
2021-09-30 16:18 ` [PATCH v3 3/4] drm/v3d: add generic ioctl extension Melissa Wen
2021-09-30 16:19 ` [PATCH v3 4/4] drm/v3d: add multiple syncobjs support Melissa Wen
2021-10-01  7:29   ` Iago Toral
2021-10-01  8:37     ` Melissa Wen
2021-10-01  8:41       ` Iago Toral
2021-10-01  8:53         ` Melissa Wen

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.