Software Version
DRIVE OS Linux 5.2.6 and DriveWorks 4.0
Hardware Platform
DRIVE AGX Xavier
Hi! It is not completely clear when I need NvSciSync in the following pipeline:
The whole pipeline is in a single process: NvSipl → NvMedia → [CUDA or NvMedia] → … → Encoder
Do I need explicit synchronization between NvSipl and NvMedia?
Between NvMedia ↔ CUDA I know that I need.
Do I need to synchronize between the consecutive NvMedia calls? Or they are sequenced like CUDA calls on the same stream?
Do I need to sync after the last NvMedia or CUDA operation before passing the image to the encoder?
Dear @AdamBalazsVay,
NvMedia APIs makes use of different HW engines(like ISP,VIC,Encoder) for processing. Synchronization is required when sharing buffers across different engines.
When Buffers are shared across different engines, we need to ensure processing of previous engine should be finished before the output buffer is ready to be consumed by next engine. In such cases, we make use of EOF fence. Please see if the discussion in How to shorten the image process time helps.
Synchronization is required when sharing buffers across different engines.
It means that I don’t need to synchronize the consecutive NvMedia calls as they are sequenced, right?
What about the synchronization after NvSipl before NvMedia2D uses the buffer? Are they considered to be different HW engines, do I need to synchronize there?
And about the encoder, is NvMediaIEP considered to be a different HW engine? Do I need to synchronize after NvMedia2D calls, before we feed the images into the encoder?