IPC


NvSciError
NvSciStreamIpcSrcCreate(
    NvSciIpcEndpoint const  ipcEndpoint,
    NvSciSyncModule const   syncModule,
    NvSciBufModule const    bufModule,
    NvSciStreamBlock *const ipc
)

NvSciError
NvSciStreamIpcSrcCreate2(
    NvSciIpcEndpoint const  ipcEndpoint,
    NvSciSyncModule const   syncModule,
    NvSciBufModule const    bufModule,
    NvSciStreamBlock const  queue,
    NvSciStreamBlock *const ipc
)

NvSciError
NvSciStreamIpcDstCreate(
    NvSciIpcEndpoint const  ipcEndpoint,
    NvSciSyncModule const   syncModule,
    NvSciBufModule const    bufModule,
    NvSciStreamBlock *const ipc
)

NvSciError
NvSciStreamIpcDstCreate2(
    NvSciIpcEndpoint const  ipcEndpoint,
    NvSciSyncModule const   syncModule,
    NvSciBufModule const    bufModule,
    NvSciStreamBlock const  pool,
    NvSciStreamBlock *const ipc
)
media/image22.png
  • IPC blocks are created in pairs, each using one end of an NvSciIpc channel.
  • The caller must complete any of its own communication over the channel before passing it to NvSciStream and must not subsequently read from or write to it.
  • The NvSciBuf and NvSciSync modules must be those used for all buffer and sync object associated with the stream in the calling process. The block uses them when importing objects from the other endpoint.
  • The source (upstream) block has one input connection, and the destination (downstream) block has one output connection. Together with the channel between them, they are viewed as a single virtual block with one input and one output, spanning the two processes.