Late Attach#
NvSciBuf
provides a mechanism for an application to allocate an NvSciBufObj
that is shared with other peer NvSciIpcEndpoints after allocation of NvSciBufObj
, without requiring each peer NvSciIpcEndpoint
to send an unreconciled NvSciBufAttrList
during initial reconciliation of unreconciled NvSciBufAttrList
and allocation ofNvSciBufObj
.
To ensure that the allocated NvSciBufObj
satisfies the memory requirements of the late peer NvSciIpcEndpoint
, Application must create a proxy unreconciled NvSciBufAttrList
representing the memory requirements of the late peer NvSciIpcEndpoint
. This proxy unreconciled NvSciBufAttrList
must be involved during initial reconciliation of the unreconciledNvSciBufAttrList
. NvSciBuf
provides attribute keys such asNvSciBufAttrKey_PeerLocationInfo
and NvSciBufGeneralAttrKey_PeerHwEngineArray
that should be specified in the proxy unreconciled NvSciBufAttrList
during initial reconciliation.
NvSciBuf
also allows remote late peer NvSciIpcEndpoint
to gain access to already allocated NvSciBufObj
, provided the allocated NvSciBufObj
satisfies the constraints of the unreconciled NvSciBufAttrList
, received from remote late peer NvSciIpcEndpoint
, through the NvSciBufObjAttachPeer()
API.
If the NvSciBufGeneralAttrKey_PeerHwEngineArray
attribute is not specified in the proxy unreconciled NvSciBufAttrList
, thenNvSciBuf
may potentially allocate a buffer of greater than the requested size to compensate for hardware engines that gain access to memory after allocation of NvSciBufObj
. NvSciBuf
also chooses the appropriate carveout memory location, which is accessible to hardware engines that gain access to memory after allocation of NvSciBufObj
.
Note
Detailed descriptions of the attribute keys and the APIs are in the NVIDIA DriveOS API Reference.
Application needs to refer to User Mode Driver (UMD) documentation for details of how to specify the
NvSciBufGeneralAttrKey_PeerHwEngineArray
key.