NVIDIA DRIVE OS Linux SDK API Reference

5.1.12.0 Release

 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
nvscibuf.h File Reference

Detailed Description

NVIDIA Software Communications Interface (SCI) : NvSciBuf

Allows applications to allocate and exchange buffers in memory.

Definition in file nvscibuf.h.

Go to the source code of this file.

Data Structures

struct  NvSciRmGpuId
 Defines GPU ID structure. More...
 
struct  NvSciBufAttrKeyValuePair
 Defines a key/value pair of attribute to be set. More...
 
struct  NvSciBufObjIpcExportDescriptor
 Defines the export data (blob) for NvSciBufObj. More...
 

Macros

#define NV_SCI_BUF_TENSOR_MAX_DIMS   8u
 Maximum number of dimensions supported by tensor datatype. More...
 
#define NV_SCI_BUF_IMAGE_MAX_PLANES   3u
 Maximum number of planes supported by image datatype. More...
 
#define NV_SCI_BUF_PYRAMID_MAX_LEVELS   10u
 Maximum number of levels supported by pyramid datatype. More...
 
#define NVSCIBUF_EXPORT_DESC_SIZE   32u
 Indicates the size of export descriptor. More...
 
#define NV_SCI_BUF_ATTRKEY_BIT_COUNT   16u
 Indicates number of bits used for defining an attribute key. More...
 
#define NV_SCI_BUF_DATATYPE_BIT_COUNT   10u
 Indicates number of bits used for defining datatype of a key. More...
 
#define NV_SCI_BUF_ATTR_KEY_TYPE_PUBLIC   0
 Indicates the attribute key is a public key type. More...
 
#define NV_SCI_BUF_KEYTYPE_BIT_START   (NV_SCI_BUF_DATATYPE_BIT_COUNT + NV_SCI_BUF_ATTRKEY_BIT_COUNT)
 Global constant to specify the start-bit of attribute Keytype. More...
 
#define NV_SCI_BUF_GENERAL_ATTR_KEY_START
 Indicates starting value of General attribute keys. More...
 
#define NV_SCI_BUF_RAW_BUF_ATTR_KEY_START
 Indicates the start of Raw-buffer Datatype keys. More...
 
#define NV_SCI_BUF_IMAGE_ATTR_KEY_START
 Indicates the start of Image Datatype keys. More...
 
#define NV_SCI_BUF_PYRAMID_ATTR_KEY_START
 Indicates the start of ImagePyramid Datatype keys. More...
 
#define NV_SCI_BUF_ARRAY_ATTR_KEY_START
 Indicates the start of NvSciBuf Array Datatype keys. More...
 
#define NV_SCI_BUF_TENSOR_ATTR_KEY_START
 Macro to specify the start of Tensor Datatype keys. More...
 

Typedefs

typedef struct NvSciBufModuleRec * NvSciBufModule
 Holds a pointer to NvSciBufModuleRec. More...
 
typedef struct NvSciBufObjRefRec * NvSciBufObj
 Holds a pointer to NvSciBufObjRefRec. More...
 
typedef struct
NvSciBufAttrListRec * 
NvSciBufAttrList
 Holds a pointer to NvSciBufAttrListRec. More...
 

Enumerations

enum  NvSciBufType {
  NvSciBufType_General,
  NvSciBufType_RawBuffer,
  NvSciBufType_Image,
  NvSciBufType_Tensor,
  NvSciBufType_Array,
  NvSciBufType_Pyramid,
  NvSciBufType_MaxValid,
  NvSciBufType_UpperBound
}
 Enum definitions of NvSciBuf Buffer datatype. More...
 
enum  NvSciBufAttrKey {
  NvSciBufAttrKey_LowerBound = NV_SCI_BUF_GENERAL_ATTR_KEY_START,
  NvSciBufGeneralAttrKey_Types,
  NvSciBufGeneralAttrKey_NeedCpuAccess,
  NvSciBufGeneralAttrKey_RequiredPerm,
  NvSciBufGeneralAttrKey_EnableCpuCache,
  NvSciBufGeneralAttrKey_GpuId,
  NvSciBufGeneralAttrKey_CpuNeedSwCacheCoherency,
  NvSciBufGeneralAttrKey_ActualPerm,
  NvSciBufGeneralAttrKey_VidMem_GpuId,
  NvSciBufRawBufferAttrKey_Size = NV_SCI_BUF_RAW_BUF_ATTR_KEY_START,
  NvSciBufRawBufferAttrKey_Align,
  NvSciBufImageAttrKey_Layout = NV_SCI_BUF_IMAGE_ATTR_KEY_START,
  NvSciBufImageAttrKey_TopPadding,
  NvSciBufImageAttrKey_BottomPadding,
  NvSciBufImageAttrKey_LeftPadding,
  NvSciBufImageAttrKey_RightPadding,
  NvSciBufImageAttrKey_VprFlag,
  NvSciBufImageAttrKey_Size,
  NvSciBufImageAttrKey_Alignment,
  NvSciBufImageAttrKey_PlaneCount,
  NvSciBufImageAttrKey_PlaneColorFormat,
  NvSciBufImageAttrKey_PlaneColorStd,
  NvSciBufImageAttrKey_PlaneBaseAddrAlign,
  NvSciBufImageAttrKey_PlaneWidth,
  NvSciBufImageAttrKey_PlaneHeight,
  NvSciBufImageAttrKey_PlaneScanType,
  NvSciBufImageAttrKey_ScanType = NvSciBufImageAttrKey_PlaneScanType,
  NvSciBufImageAttrKey_PlaneBitsPerPixel,
  NvSciBufImageAttrKey_PlaneOffset,
  NvSciBufImageAttrKey_PlaneDatatype,
  NvSciBufImageAttrKey_PlaneChannelCount,
  NvSciBufImageAttrKey_PlaneSecondFieldOffset,
  NvSciBufImageAttrKey_PlanePitch,
  NvSciBufImageAttrKey_PlaneAlignedHeight,
  NvSciBufImageAttrKey_PlaneAlignedSize,
  NvSciBufImageAttrKey_ImageCount,
  NvSciBufTensorAttrKey_DataType = NV_SCI_BUF_TENSOR_ATTR_KEY_START,
  NvSciBufTensorAttrKey_NumDims,
  NvSciBufTensorAttrKey_SizePerDim,
  NvSciBufTensorAttrKey_AlignmentPerDim,
  NvSciBufTensorAttrKey_StridesPerDim,
  NvSciBufTensorAttrKey_PixelFormat,
  NvSciBufTensorAttrKey_BaseAddrAlign,
  NvSciBufTensorAttrKey_Size,
  NvSciBufArrayAttrKey_DataType = NV_SCI_BUF_ARRAY_ATTR_KEY_START,
  NvSciBufArrayAttrKey_Stride,
  NvSciBufArrayAttrKey_Capacity,
  NvSciBufArrayAttrKey_Size,
  NvSciBufArrayAttrKey_Alignment,
  NvSciBufPyramidAttrKey_NumLevels = NV_SCI_BUF_PYRAMID_ATTR_KEY_START,
  NvSciBufPyramidAttrKey_Scale,
  NvSciBufPyramidAttrKey_LevelOffset,
  NvSciBufPyramidAttrKey_LevelSize,
  NvSciBufPyramidAttrKey_Alignment,
  NvSciBufAttrKey_UpperBound
}
 Describes the public attribute keys. More...
 
enum  NvSciBufAttrValAccessPerm {
  NvSciBufAccessPerm_Readonly = 1,
  NvSciBufAccessPerm_ReadWrite = 3,
  NvSciBufAccessPerm_Auto,
  NvSciBufAccessPerm_Invalid
}
 Defines access permissions for NvSciBuf. More...
 
enum  NvSciBufAttrValImageLayoutType {
  NvSciBufImage_BlockLinearType,
  NvSciBufImage_PitchLinearType
}
 Defines the image layout type for NvSciBuf. More...
 
enum  NvSciBufAttrValImageScanType {
  NvSciBufScan_ProgressiveType,
  NvSciBufScan_InterlaceType
}
 Defines the image scan type for NvSciBuf. More...
 
enum  NvSciBufAttrValColorFmt {
  NvSciColor_LowerBound,
  NvSciColor_Bayer8RGGB,
  NvSciColor_Bayer8CCCC,
  NvSciColor_Bayer8BGGR,
  NvSciColor_Bayer8GBRG,
  NvSciColor_Bayer8GRBG,
  NvSciColor_Bayer16BGGR,
  NvSciColor_Bayer16CCCC,
  NvSciColor_Bayer16GBRG,
  NvSciColor_Bayer16GRBG,
  NvSciColor_Bayer16RGGB,
  NvSciColor_Bayer16RCCB,
  NvSciColor_Bayer16BCCR,
  NvSciColor_Bayer16CRBC,
  NvSciColor_Bayer16CBRC,
  NvSciColor_Bayer16RCCC,
  NvSciColor_Bayer16CCCR,
  NvSciColor_Bayer16CRCC,
  NvSciColor_Bayer16CCRC,
  NvSciColor_X2Bayer14GBRG,
  NvSciColor_X4Bayer12GBRG,
  NvSciColor_X6Bayer10GBRG,
  NvSciColor_X2Bayer14GRBG,
  NvSciColor_X4Bayer12GRBG,
  NvSciColor_X6Bayer10GRBG,
  NvSciColor_X2Bayer14BGGR,
  NvSciColor_X4Bayer12BGGR,
  NvSciColor_X6Bayer10BGGR,
  NvSciColor_X2Bayer14RGGB,
  NvSciColor_X4Bayer12RGGB,
  NvSciColor_X6Bayer10RGGB,
  NvSciColor_X2Bayer14CCCC,
  NvSciColor_X4Bayer12CCCC,
  NvSciColor_X6Bayer10CCCC,
  NvSciColor_X4Bayer12RCCB,
  NvSciColor_X4Bayer12BCCR,
  NvSciColor_X4Bayer12CRBC,
  NvSciColor_X4Bayer12CBRC,
  NvSciColor_X4Bayer12RCCC,
  NvSciColor_X4Bayer12CCCR,
  NvSciColor_X4Bayer12CRCC,
  NvSciColor_X4Bayer12CCRC,
  NvSciColor_Signed_X2Bayer14CCCC,
  NvSciColor_Signed_X4Bayer12CCCC,
  NvSciColor_Signed_X6Bayer10CCCC,
  NvSciColor_Signed_Bayer16CCCC,
  NvSciColor_FloatISP_Bayer16CCCC,
  NvSciColor_FloatISP_Bayer16RGGB,
  NvSciColor_FloatISP_Bayer16BGGR,
  NvSciColor_FloatISP_Bayer16GRBG,
  NvSciColor_FloatISP_Bayer16GBRG,
  NvSciColor_FloatISP_Bayer16RCCB,
  NvSciColor_FloatISP_Bayer16BCCR,
  NvSciColor_FloatISP_Bayer16CRBC,
  NvSciColor_FloatISP_Bayer16CBRC,
  NvSciColor_FloatISP_Bayer16RCCC,
  NvSciColor_FloatISP_Bayer16CCCR,
  NvSciColor_FloatISP_Bayer16CRCC,
  NvSciColor_FloatISP_Bayer16CCRC,
  NvSciColor_X12Bayer20CCCC,
  NvSciColor_X12Bayer20BGGR,
  NvSciColor_X12Bayer20RGGB,
  NvSciColor_X12Bayer20GRBG,
  NvSciColor_X12Bayer20GBRG,
  NvSciColor_X12Bayer20RCCB,
  NvSciColor_X12Bayer20BCCR,
  NvSciColor_X12Bayer20CRBC,
  NvSciColor_X12Bayer20CBRC,
  NvSciColor_X12Bayer20RCCC,
  NvSciColor_X12Bayer20CCCR,
  NvSciColor_X12Bayer20CRCC,
  NvSciColor_X12Bayer20CCRC,
  NvSciColor_Signed_X12Bayer20CCCC,
  NvSciColor_Signed_X12Bayer20GBRG,
  NvSciColor_U8V8,
  NvSciColor_U8_V8,
  NvSciColor_V8U8,
  NvSciColor_V8_U8,
  NvSciColor_U10V10,
  NvSciColor_V10U10,
  NvSciColor_U12V12,
  NvSciColor_V12U12,
  NvSciColor_U16V16,
  NvSciColor_V16U16,
  NvSciColor_Y8,
  NvSciColor_Y10,
  NvSciColor_Y12,
  NvSciColor_Y16,
  NvSciColor_U8,
  NvSciColor_V8,
  NvSciColor_U10,
  NvSciColor_V10,
  NvSciColor_U12,
  NvSciColor_V12,
  NvSciColor_U16,
  NvSciColor_V16,
  NvSciColor_A8Y8U8V8,
  NvSciColor_Y8U8Y8V8,
  NvSciColor_Y8V8Y8U8,
  NvSciColor_U8Y8V8Y8,
  NvSciColor_V8Y8U8Y8,
  NvSciColor_A16Y16U16V16,
  NvSciColor_A8,
  NvSciColor_Signed_A8,
  NvSciColor_B8G8R8A8,
  NvSciColor_A8R8G8B8,
  NvSciColor_A8B8G8R8,
  NvSciColor_A2R10G10B10,
  NvSciColor_A16,
  NvSciColor_Signed_A16,
  NvSciColor_Signed_R16G16,
  NvSciColor_A16B16G16R16,
  NvSciColor_Signed_A16B16G16R16,
  NvSciColor_Float_A16B16G16R16,
  NvSciColor_A32,
  NvSciColor_Signed_A32,
  NvSciColor_Float_A16,
  NvSciColor_UpperBound
}
 Defines the image color formats for NvSciBuf. More...
 
enum  NvSciBufAttrValColorStd {
  NvSciColorStd_SRGB,
  NvSciColorStd_REC601_SR,
  NvSciColorStd_REC601_ER,
  NvSciColorStd_REC709_SR,
  NvSciColorStd_REC709_ER,
  NvSciColorStd_REC2020_RGB,
  NvSciColorStd_REC2020_SR,
  NvSciColorStd_REC2020_ER,
  NvSciColorStd_YcCbcCrc_SR,
  NvSciColorStd_YcCbcCrc_ER,
  NvSciColorStd_SENSOR_RGBA,
  NvSciColorStd_REQ2020PQ_ER
}
 Defines the image color standard for NvSciBuf. More...
 
enum  NvSciBufAttrValDataType {
  NvSciDataType_Int4,
  NvSciDataType_Uint4,
  NvSciDataType_Int8,
  NvSciDataType_Uint8,
  NvSciDataType_Int16,
  NvSciDataType_Uint16,
  NvSciDataType_Int32,
  NvSciDataType_Uint32,
  NvSciDataType_Float16,
  NvSciDataType_Float32,
  NvSciDataType_FloatISP,
  NvSciDataType_Bool,
  NvSciDataType_UpperBound
}
 Defines various numeric datatypes for NvSciBuf. More...
 

Functions

NvSciError NvSciBufAttrListCreate (NvSciBufModule module, NvSciBufAttrList *newAttrList)
 Creates an attribute list holding the attributes of the NvSciBufObj to be allocated. More...
 
void NvSciBufAttrListFree (NvSciBufAttrList attrList)
 Frees the memory of an attribute list. More...
 
NvSciError NvSciBufAttrListSetAttrs (NvSciBufAttrList attrList, NvSciBufAttrKeyValuePair *pairArray, size_t pairCount)
 Sets the attribute values in the attribute list. More...
 
size_t NvSciBufAttrListGetSlotCount (NvSciBufAttrList attrList)
 Returns the slot count per key in an attribute list. More...
 
NvSciError NvSciBufAttrListGetAttrs (NvSciBufAttrList attrList, NvSciBufAttrKeyValuePair *pairArray, size_t pairCount)
 Returns an array of attribute key/value pairs for a given set of keys. More...
 
NvSciError NvSciBufAttrListSlotGetAttrs (NvSciBufAttrList attrList, size_t slotIndex, NvSciBufAttrKeyValuePair *pairArray, size_t pairCount)
 Returns an array of attribute key/value pairs from a multi-slot unreconciled attribute list at the given slot index. More...
 
NvSciError NvSciBufAttrListDebugDump (NvSciBufAttrList attrList, void **buf, size_t *len)
 Allocates a buffer and then dumps the contents of the specified attribute list into the buffer. More...
 
NvSciError NvSciBufAttrListReconcile (NvSciBufAttrList inputArray[], size_t inputCount, NvSciBufAttrList *newReconciledAttrList, NvSciBufAttrList *newConflictList)
 Reconciles the given unreconciled attribute list(s) into a new reconciled attribute list. More...
 
NvSciError NvSciBufAttrListClone (NvSciBufAttrList origAttrList, NvSciBufAttrList *newAttrList)
 Clones an unreconciled/reconciled attribute list. More...
 
NvSciError NvSciBufAttrListAppendUnreconciled (const NvSciBufAttrList inputUnreconciledAttrListArray[], size_t inputUnreconciledAttrListCount, NvSciBufAttrList *newUnreconciledAttrList)
 Append multiple unreconciled attribute lists together, forming a single new unreconciled attribute list with a slot count equal to the sum of all the slot counts in the input list. More...
 
NvSciError NvSciBufAttrListIsReconciled (NvSciBufAttrList attrList, bool *isReconciled)
 Checks if an attribute list is reconciled. More...
 
NvSciError NvSciBufAttrListValidateReconciled (NvSciBufAttrList reconciledAttrList, const NvSciBufAttrList unreconciledAttrListArray[], size_t unreconciledAttrListCount, bool *isReconcileListValid)
 Validates a reconciled attribute list against a set of unreconciled attribute lists. More...
 
NvSciError NvSciBufObjDup (NvSciBufObj bufObj, NvSciBufObj *dupObj)
 Clones a NvSciBuf object. More...
 
NvSciError NvSciBufAttrListReconcileAndObjAlloc (NvSciBufAttrList attrListArray[], size_t attrListCount, NvSciBufObj *bufObj, NvSciBufAttrList *newConflictList)
 Reconcile the input unreconciled attribute list(s) into a new reconciled attribute list and allocate NvSciBuf object that meets all the constraints in the new reconciled attribute list. More...
 
void NvSciBufObjFree (NvSciBufObj bufObj)
 Destroys the NvSciBuf object, which frees any memory allocated for it. More...
 
NvSciError NvSciBufObjGetAttrList (NvSciBufObj bufObj, NvSciBufAttrList *bufAttrList)
 Retrieves the attribute list from an NvSciBuf object. More...
 
NvSciError NvSciBufObjGetCpuPtr (NvSciBufObj bufObj, void **ptr)
 Gets the CPU virtual address (VA) of the NvSciBufObj. More...
 
NvSciError NvSciBufObjGetConstCpuPtr (NvSciBufObj bufObj, const void **ptr)
 Gets the CPU virtual address (VA) of the NvSciBufObj. More...
 
NvSciError NvSciBufObjFlushCpuCacheRange (NvSciBufObj bufObj, uint64_t offset, uint64_t len)
 Flushes the given len bytes at starting offset offset in NvSciBufObj from all CPU-managed caches. More...
 
NvSciError NvSciBufObjAlloc (NvSciBufAttrList reconciledAttrList, NvSciBufObj *bufObj)
 Allocates an NvSciBuf object that meets all the constraints in the specified reconciled attribute list. More...
 
NvSciError NvSciBufObjDupWithReducePerm (NvSciBufObj bufObj, NvSciBufAttrValAccessPerm reducedPerm, NvSciBufObj *newBufObj)
 Creates a Duplicate NvSciBufObj with reduced access permissions. More...
 
NvSciError NvSciBufIpcExportAttrListAndObj (NvSciBufObj bufObj, NvSciBufAttrValAccessPerm permissions, NvSciIpcEndpoint ipcEndpoint, void **attrListAndObjDesc, size_t *attrListAndObjDescSize)
 Exports an NvSciBuf attribute list and object into an NvSciIpc-transferable object binary descriptor. More...
 
NvSciError NvSciBufIpcImportAttrListAndObj (NvSciBufModule module, NvSciIpcEndpoint ipcEndpoint, const void *attrListAndObjDesc, size_t attrListAndObjDescSize, const NvSciBufAttrList attrList[], size_t count, NvSciBufAttrValAccessPerm minPermissions, int64_t timeoutUs, NvSciBufObj *bufObj)
 This API is invoked by importing process after it receives the binary blob sent by the other process who has created the binary descriptor. More...
 
void NvSciBufAttrListAndObjFreeDesc (void *attrListAndObjDescBuf)
 Frees the descriptor used for exporting/importing both attrlist and NvSciBuf Object together. More...
 
NvSciError NvSciBufObjIpcExport (NvSciBufObj bufObj, NvSciBufAttrValAccessPerm accPerm, NvSciIpcEndpoint ipcEndpoint, NvSciBufObjIpcExportDescriptor *exportData)
 Exports a NvSciBuf object into an NvSciIpc-transferable object binary descriptor. More...
 
NvSciError NvSciBufObjIpcImport (NvSciIpcEndpoint ipcEndpoint, const NvSciBufObjIpcExportDescriptor *desc, NvSciBufAttrList reconciledAttrList, NvSciBufAttrValAccessPerm minPermissions, int64_t timeoutUs, NvSciBufObj *bufObj)
 Creates a NvSciBuf object based on supplied binary descriptor and returns the NvSciBuf object. More...
 
NvSciError NvSciBufAttrListIpcExportUnreconciled (NvSciBufAttrList unreconciledAttrListArray[], size_t unreconciledAttrListCount, NvSciIpcEndpoint ipcEndpoint, void **descBuf, size_t *descLen)
 Transforms the input attribute list(s) to an exported attribute list descriptor that can be transported by the application to any remote process as serialized set of bytes over an IPC/IVC/nvIPC channel. More...
 
NvSciError NvSciBufAttrListIpcExportReconciled (NvSciBufAttrList reconciledAttrList, NvSciIpcEndpoint ipcEndpoint, void **descBuf, size_t *descLen)
 Transforms the input attribute list(s) to an exported attribute list descriptor that can be transported by the application to any remote process as serialized set of bytes over an IPC/IVC/nvIPC channel. More...
 
NvSciError NvSciBufAttrListIpcImportUnreconciled (NvSciBufModule module, NvSciIpcEndpoint ipcEndpoint, const void *descBuf, size_t descLen, NvSciBufAttrList *importedUnreconciledAttrList)
 Retrieves the attribute list from the attribute descriptor received over IPC channel. More...
 
NvSciError NvSciBufAttrListIpcImportReconciled (NvSciBufModule module, NvSciIpcEndpoint ipcEndpoint, const void *descBuf, size_t descLen, NvSciBufAttrList inputUnreconciledAttrListArray[], size_t inputUnreconciledAttrListCount, NvSciBufAttrList *importedReconciledAttrList)
 Retrieves the attribute list from the attribute descriptor received over IPC channel. More...
 
void NvSciBufAttrListFreeDesc (void *descBuf)
 Frees the NvSciBuf exported attribute list descriptor. More...
 
NvSciError NvSciBufModuleOpen (NvSciBufModule *newModule)
 Initializes an instance of the NvSciBuf module within the calling process and provides an NvSciBufModule representing the instance. More...
 
void NvSciBufModuleClose (NvSciBufModule module)
 Releases an instance of the NvSciBuf module obtained through an earlier call to NvSciBufModuleOpen(). More...
 
NvSciError NvSciBufCheckVersionCompatibility (uint32_t majorVer, uint32_t minorVer, bool *isCompatible)
 API to check if loaded library version is compatible with passed library build version. More...
 

Variables

static const uint32_t NvSciBufMajorVersion = 2U
 API Major version number. More...
 
static const uint32_t NvSciBufMinorVersion = 0U
 API Minor version number. More...