NvStreams Changes#
NvSciError_StreamBadBlock#
Target Changes |
Backward Compatible |
Platform |
OS |
|---|---|---|---|
The following APIs, which return
|
No |
NSR, SR |
Linux and QNX |
Migration Path
Orin to Thor
Migration Rationale
In 5.2, NvSciStream used NvSciError_BadParameter for all invalid input, like null pointer, invalid block handle, invalid packet handle, etc. The user could not tell the exact issue from the error code. In 6.0, specific error code: NvSciError_StreamBadBlock, for invalid block handle was introduced, but not all APIs migrated to this new error code. 7.0 moves all the APIs to this new error code (NvSciError_StreamBadBlock) consistently.
Steps to Migrate
Sample old application implementation:
NvSciError err;
err = NvSciStreamProducerCreate( pool, &producer);
if (err != NvSciError_Success) {
if (err == NvSciError_BadParameter) {
printf("NvSciError_BadParameter received from \
NvSciStreamProducerCreate, pool block could be invalid\n");
}
exit();
}
NvSciSync Timestamp Behavior Changes#
Target Changes |
Backward Compatible |
Platform |
OS |
|---|---|---|---|
NvSciSync timestamp behavior changes for CUDA NvSciSync on Linux. CUDA-provided timestamps will be in microseconds instead of nanoseconds. NvSciSync on DRIVE Linux will obtain time via a CCPLEX register tracking with ARM TSC (previously from CLOCK_MONOTONIC). This change exists from 6.0.9.3` prior releases. |
No |
NSR |
Linux and QNX |
Migration Path
Orin to Thor
Migration Rationale
It was confusing to have a timestamp from a different unit or source. This update makes timestamps across engines and the CCPLEX consistent.
Steps to Migrate
Application code that assumes nanoseconds for NvSciSync timestamps from CUDA requires a change to the scaling factor. Application code that assumes CLOCK_MONOTONIC and adjusts it to be consistent with ARM TSC requires removal; use the raw value instead.
NvSciBuf API Changes#
Target Changes |
Backward Compatible |
Platform |
OS |
|---|---|---|---|
The following NvSciBuf APIs may now return
|
Yes |
NSR |
Linux and Android |
Migration Path
Orin to Thor
Dimensity C-X1 to Dimensity C-X1
Migration Release Path
6.x to 7.x
7.2.3.0 to 7.2.4.0 (NVIDIA DriveOS for Dimensity)
7.2.5.0+ (NVIDIA DRIVE Orin/Thor)
Migration Rationale
NvMap now defers work after the kernel module probe. Calling these APIs may race with that work and require the caller to retry later. The error code is now propagated to the application for the application to decide how to handle the new error.
Steps to Migrate
Handle NvSciError_Busy in callers of the affected APIs.
When this error is returned, depending on your application’s requirements, you
may choose to retry the operation later when the kernel module is ready or return
an error.
NvSciBuf and NvSciSync NUMA Attribute Support#
Target Changes |
Backward Compatible |
Platform |
OS |
|---|---|---|---|
NvSciBuf and NvSciSync provide optional NUMA locality attributes for resource allocation:
|
Yes |
NSR |
Linux |
Migration Path
Thor to Dual Thor with NVLink
Migration Release Path
7.2.5.0+
Migration Rationale
Thor supports NUMA configurations where buffer and synchronization object placement can affect application performance. These optional attributes allow applications to request NvSciBuf and NvSciSync resources from a specific NUMA node when NUMA locality matters.
Steps to Migrate
Applications that do not require NUMA locality do not need to change. Leave these attributes unset to preserve the previous behavior.
Applications that require NUMA locality should set
NvSciBufGeneralAttrKey_NumaNodeId in the NvSciBuf unreconciled attribute
list and NvSciSyncAttrKey_Numa in the NvSciSync unreconciled attribute
list. For NvSciSync, ensure the signaler and waiter attribute lists request
compatible NUMA node values. Reconciliation fails if a waiter attribute list
specifies a NUMA node but the corresponding signaler attribute list does not
specify the same node.
NvSciSync API Changes#
Target Changes |
Backward Compatible |
Platform |
OS |
|---|---|---|---|
The following NvSciSync APIs may now return
|
Yes |
NSR |
Linux and Android |
Migration Path
Orin to Thor
Dimensity C-X1 to Dimensity C-X1
Migration Release Path
7.2.3.0 to 7.2.4.0 (NVIDIA DriveOS for Dimensity)
7.2.5.0+ (NVIDIA DRIVE Orin/Thor)
Migration Rationale
NvMap now defers work after the kernel module probe. Calling these APIs may race with that work and require the caller to retry later. The error code is now propagated to the application for the application to decide how to handle the new error.
Steps to Migrate
Handle NvSciError_Busy in callers of the affected APIs.
When this error is returned, depending on your application’s requirements, you
may choose to retry the operation later when the kernel module is ready or return
an error.
NvSciIpc Transitive Dependency on libnvos_s3_safety (QNX)#
Target Changes |
Backward Compatible |
Platform |
OS |
|---|---|---|---|
On QNX, Any application that links |
No |
NSR, SR |
QNX |
Migration Path
Orin to Thor
Migration Release Path
6.x to 7.x
Migration Rationale
NvSciIpc on QNX added a dependency on NvOS for its logging (NvLog) path. As a
result, libnvsciipc.so now pulls in the NvOsDebugPrintStrStr symbol
provided by libnvos_s3_safety.so. Because this is a transitive dependency
of a shared library, the linker requires the dependent library to be specified
explicitly on the application’s link line.
Steps to Migrate
Add -lnvos_s3_safety to LDLIBS (after -lnvsciipc) for any QNX
target that links libnvsciipc:
LDLIBS += -lnvsciipc
LDLIBS += -lnvos_s3_safety
The DRIVE OS NvSci and NvSciStream sample applications are updated
accordingly: nvscistream_event_sample, nvscistream_safety_sample_app,
nvscistream_drive_event_sample, rawstream, and rawstream_iep.
NvSciBuf, NvSciStream, and NvSciSync Library Minor Version Bumps#
Target Changes |
Backward Compatible |
Platform |
OS |
|---|---|---|---|
|
Yes |
SR |
QNX |
Migration Path
Orin to Thor
Migration Release Path
6.5.4.2 to 7.2.5.0
Migration Rationale
Standard minor-version bumps that advertise the backwards-compatible additions shipping in this release. Applications that probe the library version at runtime see the new values.
Steps to Migrate
Update any hard-coded minor-version comparisons in version-probe logic to accept the new values.
NvSciBuf and NvSciStream Tightened Input-Validity Contracts#
Target Changes |
Backward Compatible |
Platform |
OS |
|---|---|---|---|
|
Yes |
SR |
QNX |
Migration Path
Orin to Thor
Migration Release Path
6.5.4.2 to 7.2.5.0
Migration Rationale
Establishes single-source documented preconditions used by every NvSciBuf and NvSciStream API rather than re-stating them per function, and tightens the documented input-validity contract that callers must satisfy before invoking the APIs.
Steps to Migrate
Audit any code that constructs NvSciBuf or NvSciStream opaque handles other than via the documented constructors, or that retains a handle past its destroy call. Such usage was previously tolerated by accident.
Audit attribute-key assignments to ensure values are within the valid ranges documented for each
NvSciBufAttrListkey.
NvSciBuf Color Format and Bits-Per-Component Additions#
Target Changes |
Backward Compatible |
Platform |
OS |
|---|---|---|---|
|
Yes |
SR |
QNX |
Migration Path
Orin to Thor
Migration Release Path
6.5.4.2 to 7.2.5.0
Migration Rationale
Adds support for additional camera/display pixel formats including packed and tightly-packed YUV/RGB/Bayer RAW variants used by ISP pipelines, and aligns the documented contracts with the bit-layout reality of the new packed formats.
Steps to Migrate
Applications iterating
NvSciBufAttrValColorFmtorNvSciBufSurfBPCvalues must accept the new entries (and the shifted terminator values) in any switch / table-driven logic.NvSciBufAttrValColorFmt fmt = NvSciColor_Bayer12RGGB;
NvSciBufSurfBPC bpc = NvSciSurfBPC_10t;
Applications computing pitch or bits-per-pixel manually for right-justified Bayer RAW 10-bit / 12-bit formats must follow the updated special-case rules documented on
NvSciBufImageAttrKey_PlaneBitsPerPixelandNvSciBufImageAttrKey_PlanePitch.
NvSciBufObjGetCpuPtr Read-Only Buffer Behavior Change#
Target Changes |
Backward Compatible |
Platform |
OS |
|---|---|---|---|
The documented contract for |
No. The source rebuilds, but runtime behavior changed. |
SR |
QNX |
Migration Path
Orin to Thor
Migration Release Path
6.5.4.2 to 7.2.5.0
Migration Rationale
Allows CPU read access on read-only NvSciBufObj instances while
making writes to such buffers undefined behavior rather than a hard
error.
Steps to Migrate
Replace any code that relied on NvSciError_BadParameter from NvSciBufObjGetCpuPtr to detect read-only buffers with an explicit permission query, and ensure the caller never writes to the returned pointer when the underlying object is read-only.
// Previously: BadParameter if not ReadWrite. if (NvSciBufObjGetCpuPtr(obj, &ptr) == NvSciError_BadParameter) { /* RO buffer */ }// Now: succeeds for RO buffers; writes are UB. NvSciBufAttrValAccessPerm perm = ...; // query separately NvSciBufObjGetCpuPtr(obj, &ptr); if (perm == NvSciBufAccessPerm_Readonly) { /* read only */ }
NvSciStream Documented Error-Code Enrichments#
Target Changes |
Backward Compatible |
Platform |
OS |
|---|---|---|---|
|
No. The source rebuilds, but runtime behavior changed. |
SR |
QNX |
Migration Path
Orin to Thor
Migration Release Path
6.5.4.2 to 7.2.5.0
Migration Rationale
Documents previously implicit failure modes, tightens parameter validation contracts, and surfaces previously undocumented downstream error and panic propagation so callers can plan for them.
Steps to Migrate
Audit switch statements or error-handling tables over NvSciStream return codes to recognize the additional documented codes (
NvSciError_BadAddress,NvSciError_IndexOutOfRange,NvSciError_Busy, and the propagated NvSciIpc / NvSciEvent / NvSciBuf / NvSciSync errors and panics).Remove any handler for the removed
NvSciError_InsufficientMemoryreturn onNvSciStreamPoolPacketCreate.
NvSciStream Ipc/C2C Constructor Error Surface Expanded#
Target Changes |
Backward Compatible |
Platform |
OS |
|---|---|---|---|
The Ipc/C2C source/destination block constructors
|
No. Source rebuilds, but runtime behavior changed. |
SR |
QNX |
Migration Path
Orin to Thor
Migration Release Path
6.5.4.2 to 7.2.5.0
Migration Rationale
Surfaces the underlying NvSciIpc query error path that was previously undocumented so customers can plan for it.
Steps to Migrate
Add a handler for NvSciError_NotInitialized and any NvSciIpcEndpointGetTopoId-propagated errors in callers of these constructors.
NvSciError err = NvSciStreamIpcSrcCreate2(ipc, queue, &block);NvSciError err = NvSciStreamIpcSrcCreate2(ipc, queue, &block); if (err == NvSciError_NotInitialized) { /* uninitialised ipc */ }
NvSciStreamPacketSendSync No Longer Supported on C2C Blocks#
Target Changes |
Backward Compatible |
Platform |
OS |
|---|---|---|---|
The documented contract for |
No. The source rebuilds, but runtime behavior changed. |
SR |
QNX |
Migration Path
Orin to Thor
Migration Release Path
6.5.4.2 to 7.2.5.0
Migration Rationale
Reflects the actual supported scope of the API; C2C send-sync was not part of the validated contract.
Steps to Migrate
Remove or guard any call sites that pass a C2C block to NvSciStreamPacketSendSync; route the call to the inter-process IpcSrc or IpcDst block instead.
// Previously assumed C2C support: NvSciStreamPacketSendSync(c2cBlock);// Now: only on inter-proc IpcSrc / IpcDst. NvSciStreamPacketSendSync(ipcSrcOrIpcDstBlock);