QNN API Revision History

API Version

SDK Version

Description

2.29.0

2.39.0

  • Add Context configuration QNN_CONTEXT_CONFIG_GRAPH_RETENTION_ORDER to specify order in which graphs should be retained in memory as multiple graphs are switched. Support is queried through QNN_PROPERTY_CONTEXT_SUPPORT_GRAPH_RETENTION_ORDER

  • API 2.29 is backwards compatible with previous releases.

  • API 2.29 is ABI compatible with API 2.28/2.28.1.

2.28.1

2.38.0

  • Clarified behavior when using NORMAL priority, which may be restricted by the platform or backend.

2.28.0

2.37.0

  • Added QnnContext_createFromBinaryWithCallback to create contexts from a user provided callback. Enables users to provide custom or platform specific mechanisms for incremental context binary loading at runtime. Depending on implementation, users may see memory or performance benefits when compared to QnnContext_createFromBinary().

  • API 2.28 is backwards compatible with previous releases.

  • API 2.28 is ABI compatible with API 2.27. Applications built with API 2.27 (QAIRT 2.36) may be used with API 2.28 (QAIRT 2.37) without recompilation.

2.27.0

2.36.0

  • Added binary section type QNN_CONTEXT_SECTION_UPDATABLE_WEIGHTS and QNN_CONTEXT_SECTION_UPDATABLE_QUANT_PARAM. Support for these binary section types can be queried through QNN_PROPERTY_CONTEXT_SUPPORT_BINARY_WEIGHT_ONLY_UPDATES and QNN_PROPERTY_CONTEXT_SUPPORT_BINARY_QUANT_ONLY_UPDATES.

  • Add QnnGlobalConfig component.

  • Extended Qnn_SocModel_t with more SoC Types.

2.26.0

2.35.0

  • Added QnnContext_finalize to finish initialization of contexts created with QNN_CONTEXT_CONFIG_OPTION_DEFER_GRAPH_INIT.

2.25.0

2.33.0

  • Added tensor data formats QNN_TENSOR_DATA_FORMAT_HMX_WEIGHT.

  • Added QnnContext_getIncrementalBinary and QnnContext_releaseIncrementalBinary. Support is queried through QNN_PROPERTY_CONTEXT_SUPPORT_INCREMENTAL_BINARY.

2.24.0

2.31.0

  • Added tensor data formats QNN_TENSOR_DATA_FORMAT_UBWC_RGBA8888, QNN_TENSOR_DATA_FORMAT_UBWC_NV12, QNN_TENSOR_DATA_FORMAT_UBWC_NV12_Y, and QNN_TENSOR_DATA_FORMAT_UBWC_NV12_UV.

2.23.0

2.30.0

  • Added tensor data format QNN_TENSOR_DATA_FORMAT_MX.

2.22.0

2.29.0

  • Added tensor types QNN_TENSOR_TYPE_OPTIONAL_APP_WRITE, QNN_TENSOR_TYPE_OPTIONAL_APP_READ, and QNN_TENSOR_TYPE_OPTIONAL_APP_READ_WRITE. Support for these tensor types can be queried with QNN_PROPERTY_TENSOR_SUPPORT_OPTIONAL_APP_WRITE, QNN_PROPERTY_TENSOR_SUPPORT_OPTIONAL_APP_READ, and QNN_PROPERTY_TENSOR_SUPPORT_OPTIONAL_APP_READ_WRITE.

  • Added new tensor memory type QNN_TENSORMEMTYPE_RETRIEVE_RAW. Support can be queried through QNN_PROPERTY_TENSOR_SUPPORT_RETRIEVE_RAW.

  • Added QnnBackend_getProperty and QnnContext_getProperty. Support for custom properties can be queried with QNN_PROPERTY_BACKEND_SUPPORT_CUSTOM_PROPERTY and QNN_PROPERTY_CONTEXT_SUPPORT_CUSTOM_PROPERTY respectively.

2.21.0

2.28.0

  • Added Qnn_OpMapping_t type.

2.20.0

2.27.0

  • Added property QNN_PROPERTY_GRAPH_SUPPORT_ONLINE_PREPARE.

2.19.0

2.26.0

  • Added error code QNN_GRAPH_ERROR_INVALID_CONTEXT.

2.18.0

2.25.0

  • Added QnnContext_getBinarySectionSize, QnnContext_getBinarySection, and QnnContext_applyBinarySection APIs to provide support for producing and applying updates to context binaries after creation. Support can be queried through QNN_PROPERTY_CONTEXT_SUPPORT_BINARY_UPDATES.

2.17.0

2.24.0

  • Added QnnTensor_updateGraphTensors and QnnTensor_updateContextTensors APIs to modify tensors after graph finalization.

  • Added QNN_TENSOR_TYPE_UPDATEABLE_<> for STATIC, NATIVE, APP_READ, APP_WRITE and APP_READWRITE tensors and corresponding properties QNN_SUPPORT_UPDATEABLE_<>

  • Add GraphInfoV2_t to return updateable tensors in context binary metadata.

  • Add error code QNN_COMMON_ERROR_SYSTEM_COMMUNICATION_FATAL

  • Add QnnContext_createFromBinaryListAsync to asynchronously initialize multiple context binaries.

  • Add new quantization encoding schemes QNN_QUANTIZATION_ENCODING_BLOCK, QNN_QUANTIZATION_ENCODING_BLOCKWISE_EXPANSION, and QNN_QUANTIZATION_ENCODING_VECTOR. Support for these encoding schemes is determined through QNN_PROPERTY_TENSOR_SUPPORT_QUANTIZATION_ENCODING_BLOCK, QNN_PROPERTY_TENSOR_SUPPORT_QUANTIZATION_ENCODING_BLOCKWISE_EXPANSION, and QNN_PROPERTY_TENSOR_SUPPORT_QUANTIZATION_ENCODING_VECTOR repsectively.

2.16.0

2.23.0

  • Added QNN_PROFILE_EVENTUNIT_NONE.

2.15.0

2.21.0

  • Introduced the QnnContext_createFromBinaryWithSignal API.

  • Added QNN_MEM_TYPE_DMA_BUF QnnMem type.

  • Clarified QnnProperty capability descriptions.

2.14.0

2.20.0

  • Introduced Qnn_TensorV2_t. Tensor V2 adds API support for sparse tensors, dynamically shaped tensors, and graph execution early termination. Please consult SDK documentation for further details. Support can be queried via QNN_PROPERTY_TENSOR_SUPPORT_SPARSITY, QNN_PROPERTY_TENSOR_SUPPORT_DYNAMIC_DIMENSIONS, and QNN_PROPERTY_GRAPH_SUPPORT_EARLY_TERMINATION.

2.13.0

2.19.0

  • Introduced the QnnContext_validateBinary API.

2.12.0

2.18.0

  • Introduced the QnnGraph_getProperty API.

  • Allow QnnGraph_finalize for deserialized graphs created via QnnContext_createFromBinary.

  • Introduced the QnnGraph_prepareExecutionEnvironment and QnnGraph_releaseExecutionEnvironment APIs.

  • Added QNN_CONTEXT_CONFIG_BINARY_COMPATIBILITY context config and QNN_CONTEXT_ERROR_BINARY_SUBOPTIMAL context error code.

2.11.0

2.17.0

  • Introduced the QnnError.h API.

  • Introduced QNN_GRAPH_CONFIG_OPTION_SET_PROFILING_STATE and QNN_GRAPH_CONFIG_OPTION_SET_PROFILING_NUM_EXECUTIONS graph configuration options.

  • Added QNN_PROPERTY_MEMORY_SUPPORT_MEM_TYPE_ION and QNN_PROPERTY_MEMORY_SUPPORT_MEM_TYPE_CUSTOM capabilities.

2.10.0

2.16.0

  • Added QNN_CONTEXT_CONFIG_ENABLE_GRAPHS context configuration option, QNN_PROPERTY_CONTEXT_SUPPORT_CONFIG_ENABLE_GRAPHS capability, and QNN_GRAPH_ERROR_DISABLED error code.

  • Added QNN_CONTEXT_CONFIG_MEMORY_LIMIT_HINT context configuration option and QNN_PROPERTY_CONTEXT_SUPPORT_CONFIG_MEMORY_LIMIT capability.

  • Added QNN_CONTEXT_CONFIG_PERSISTENT_BINARY context configuration option and QNN_PROPERTY_CONTEXT_SUPPORT_CONFIG_PERSISTENT_BINARY capability.

  • Added QNN_DATATYPE_SFIXED_POINT_4 and QNN_DATATYPE_UFIXED_POINT_4 data types.

2.9.0

2.15.0

  • Added QnnGraph_createSubgraph API and the QNN_PROPERTY_GRAPH_SUPPORT_SUBGRAPH capability.

  • Added QnnBackend_setConfig API.

  • Added QNN_PROFILE_CONFIG_OPTION_ENABLE_OPTRACE and QNN_PROFILE_EVENTTYPE_TRACE.

  • Added QNN_PROPERTY_BACKEND_SUPPORT_COMPOSITION and QNN_PROPERTY_TENSOR_SUPPORT_CONTEXT_TENSORS capability.

  • Added QNN_DATATYPE_FLOAT_64 data type.

  • Clarified QnnSignal behavior when used with QnnGraph_executeAsync.

  • Deprecated QNN_TENSOR_ERROR_ALREADY_EXISTS and QNN_TENSOR_ERROR_NAME_HASH_COLLISION error codes. QnnTensor_createContextTensor and QnnTensor_createGraphTensor will no longer generate them.

2.8.0

2.14.0

  • Introduced QnnProfile_ExtendedEventData_t and QnnProfile_getExtendedEventData to support binary large object data.

  • Added QnnProfile_setConfig and QNN_PROFILE_CONFIG_OPTION_CUSTOM and QNN_PROFILE_CONFIG_OPTION_MAX_EVENTS configuration options.

  • Added the QNN_DATATYPE_STRING data type for scalars.

2.7.2

2.13.0

  • Added QNN_GRAPH_ERROR_GENERAL error code.

  • Added QNN_PROPERTY_GRAPH_SUPPORT_PER_API_PROFILING capability.

  • Added QNN_SIGNAL_ERROR_INCOMPATIBLE_SIGNAL_TYPE error code.

  • Clarified unconfigured QnnSignal behavior.

2.7.1

2.12.0

  • Added QNN_COMMON_ERROR_RESOURCE_UNAVAILABLE common error code.

  • Added QNN_GRAPH_ERROR_TIMED_OUT error code and corrected QnnGraph_execute and QnnGraph_executeAsync API documentation to reference this error code.

2.7.0

2.11.0

  • Added QNN_COMMON_ERROR_LOADING_BINARIES common error code.

  • Added support for timeouts in QnnSignal

    • QNN_SIGNAL_CONFIG_OPTION_TIMEOUT

    • QNN_PROPERTY_SIGNAL_SUPPORT_TIMEOUT

  • Added QNN_CONTEXT_ERROR_MEM_ALLOC error code to QnnContext_getBinarySize and QnnContext_getBinary

  • Added QNN_DEVICE_ERROR_INVALID_HANDLE error code to QnnDevice_getPlatformInfo and QnnDevice_freePlatformInfo

  • Added QNN_DEVICE_ERROR_MEM_ALLOC error code to QnnDevice_getInfrastructure

  • Corrected occurrences of QNN_SIGNAL_ERROR_NOT_SUPPORTED to be QNN_SIGNAL_ERROR_UNSUPPORTED

2.6.0

2.10.40

  • Added QNN_BACKEND_CONFIG_OPTION_PLATFORM backend config option.

  • Added QNN_PROPERTY_BACKEND_SUPPORT_PLATFORM_OPTIONS property.

  • Added QNN_BACKEND_CONFIG_OPTION_PLATFORM backend error code.

  • Indicated that QNN_PRIORITY_NORMAL_HIGH and QNN_PRIORITY_HIGH can be silently treated as QNN_PRIORITY_NORMAL in some scenarios.

  • Cleaned up unused SOC models.

2.5.1

2.10.0

  • Added QNN_COMMON_ERROR_INCOMPATIBLE_BINARIES common error code.

2.5.0

2.9.0

  • Added QNN_PROPERTY_GRAPH_SUPPORT_EXECUTE capability.

  • Added QNN_PROPERTY_GRAPH_SUPPORT_BATCH_MULTIPLE capability.

  • Clarify that a Qnn_ProfileHandle_t can only be bound to one graph at a time.

2.4.0

2.8.0

  • Introduced continuous QnnGraph profiling via the QNN_GRAPH_CONFIG_OPTION_PROFILE_HANDLE config option. Backend support is communicated via QNN_PROPERTY_GRAPH_SUPPORT_CONTINUOUS_PROFILING.

  • Added the following QnnProfile event types:

    • QNN_PROFILE_EVENTTYPE_EXECUTE_QUEUE_WAIT

    • QNN_PROFILE_EVENTTYPE_EXECUTE_PREPROCESS

    • QNN_PROFILE_EVENTTYPE_EXECUTE_DEVICE

    • QNN_PROFILE_EVENTTYPE_EXECUTE_POSTPROCESS

  • Introduced a new Qnn_Priority_t level: QNN_PRIORITY_NORMAL_HIGH.

2.3.2

2.7.0

  • Deprecate Qnn_SocModel_t.

2.3.1

2.5.0

  • Add note to QnnProperty_hasCapability that it can be called at any time.

2.3.0

2.4.0

  • Introduction of the QnnSignal API.

  • Added QNN_SOC_MODEL_SM8325.

  • Added new capabilities for support of QnnSignal in QnnGraph APIs:

    • QNN_PROPERTY_GRAPH_SUPPORT_FINALIZE_SIGNAL

    • QNN_PROPERTY_GRAPH_SUPPORT_EXECUTE_SIGNAL

    • QNN_PROPERTY_GRAPH_SUPPORT_EXECUTE_ASYNC_SIGNAL

2.2.0

2.3.0

  • Moved QNN_API definition to QnnCommon.h from QnnTypes.h.

  • Updated QnnGraph_executeAsync() behavior to block until the execution is enqueued rather than returning early if the queue is full.

  • Clarified behavior with concurrent calls to QnnGraph_execute() and QnnGraph_executeAsync().

  • Introduced a queue depth context config to control the maximum depth of the async execution queue.

  • Added QNN_SOC_MODEL_SXR2230P and QNN_SOC_MODEL_SM7475.

2.1.0

2.1.0

  • Added QNN_SOC_MODEL_SXR1230P, QNN_SOC_MODEL_SSG2115P, and QNN_SOC_MODEL_SM6450.

2.0.0

2.0.0

  • The following list itemizes updates as compared to QNN API 1.x.

  • See 1.x to 2.0 migration guide in SDK docs for details.

  • QnnInterface:

    • QnnInterface_getProviders function signature update.

  • QnnTypes:

    • Qnn_Tensor_t data structure update:

      • Add versioning (i.e. Qnn_TensorV1_t).

      • Add name field. ID field is now backend generated.

      • Consolidate max and current dimensions into one field.

      • INT4 support (see Qnn_BwScaleOffset_t and Qnn_BwAxisScaleOffset_t).

    • Qnn_OpConfig_t data structure update:

      • Add versioning (i.e. Qnn_OpConfigV1_t).

    • Added Qnn_SocModel_t.

  • QnnTensor:

    • Qnn_Tensor_t is now an output argument to QnnTensor_createContextTensor and QnnTensor_createGraphTensor since the ID is now generated by the backend from the name.

    • Added QNN_TENSOR_ERROR_NAME_HASH_COLLISION error code.

  • QnnDevice introduction:

    • Adds multi-core support.

  • QnnBackend:

    • Introduce Qnn_BackendHandle_t.

    • These APIs now take a Qnn_BackendHandle_t as an argument:

      • QnnBackend_registerOpPackage

      • QnnBackend_validateOpConfig

      • QnnBackend_registerOpPackage

    • QnnBackend_initialize replaced by QnnBackend_create.

    • QnnBackend_terminate replaced by QnnBackend_free.

    • Added QnnBackend_getSupportedOperations and QnnBackend_OperationName_t.

    • Removed QnnBackend_getPerfInfrastructure (see QnnDevice_getInfrastructure).

    • Added and removed a variety of error codes.

  • QnnMem:

    • QnnMem_register now take a Qnn_ContextHandle_t as an argument.

    • Add backend specific memory registration extensions.

  • QnnContext:

    • Increased maximum context binary size to 64-bit.

    • Consolidate QnnContext_createFromBinary and QnnContext_createFromBinaryWithConfig.

    • QnnContext_create and QnnContext_createFromBinary function signature updates:

      • Qnn_BackendHandle_t association.

      • Qnn_DeviceHandle_t association.

  • QnnLog:

    • Introduce Qnn_LogHandle_t.

    • QnnLog_setLogLevel now takes a Qnn_LogHandle_t as an argument.

    • QnnLog_initialize replaced by QnnLog_create.

    • QnnLog_terminate replaced by QnnLog_free.

    • Qnn_LogHandle_t is associated to a Qnn_BackendHandle_t in QnnBackend_create.

    • Added and removed a variety of error codes.

  • QnnProperty:

    • Removed QnnProperty_get and QnnProperty_free.

    • Removed the following capability keys:

      • QNN_PROPERTY_BACKEND_SUPPORT_BUILD_ID

      • QNN_PROPERTY_BACKEND_SUPPORT_PERF_INFRASTRUCTURE

      • QNN_PROPERTY_BACKEND_SUPPORT_OP_VALIDATION

      • QNN_PROPERTY_CONTEXT_SUPPORT_GET_BINARY

      • QNN_PROPERTY_CONTEXT_SUPPORT_GET_BINARY_SIZE

      • QNN_PROPERTY_CONTEXT_SUPPORT_CREATE_BINARY

    • Added the following capability keys:

      • QNN_PROPERTY_CONTEXT_SUPPORT_CACHING

      • QNN_PROPERTY_GRAPH_SUPPORT_PRIORITY_CONTROL

      • QNN_PROPERTY_GROUP_DEVICE

      • QNN_PROPERTY_DEVICE_SUPPORT_INFRASTRUCTURE

      • QNN_PROPERTY_GRAPH_SUPPORT_PRIORITY_CONTROL

    • Added and removed a variety of error codes.

  • QnnGraph:

    • Add priority configuration.

    • Add QnnGraph_setConfig API.

    • Removed asynch execution configs.

  • QnnProfile:

    • QnnProfile_create associated with a Qnn_BackendHandle_t.

  • QnnOpPackage:

    • Introduce Qnn_OpPackageHandle_t.

    • Introduce 2.0 interface to the backend.

    • Removed the QNN_OP_PACKAGE_API_VERSION_* macros and replaced them with QNN_OP_PACKAGE_API_VERSION_1_4_0 and QNN_OP_PACKAGE_API_VERSION_2_0_0.

  • QnnSystem:

    • QnnSystemInterface_getProviders function signature update.

    • QnnSystemContext_getBinaryInfo function signature update for const output.

    • Added QnnSystemContext_BinaryInfoV2_t to support QnnDevice.

  • QnnOpDef:

    • Added op set version.

  • Other:

    • Prune header inclusions.

QNN System API Revision History

API Version

SDK Version

Description

1.5.0

2.38.0

  • Introduce QnnSystemProfile component to enable backend agnostic manipulation of QNN profiling events. Add QnnSystemProfile_createSerializationTarget, QnnSystemProfile_serializeEventData and QnnSystemProfile_freeSerializationTarget, to support serialization of QNN profile events to profile logs. Profile logs produced from these APIs can be used with qnn-profile-event-viewer.

  • Improve error code naming across several components. All existing error codes retain values.

1.4.0

2.33.0

  • Introduce QnnSystemLog component. Add QnnSystemLog_create, QnnSystemLog_setLogLevel, and QnnSystemLog_free.

  • Introduce QnnSystemDlc component. Add QnnSystemDlc_createFromFile, QnnSystemDlc_createFromBuffer, QnnSystemDlc_composeGraphs, QnnSystemDlc_getOpMappings and QnnSystemDlc_free.

1.3.0

2.31.0

  • Introduce QnnSystemTensor component. Add QnnSystemTensor_getMemoryFootprint.

1.2.0

2.28.0

  • Added QnnSystemContext_GraphInfoV3_t and QnnSystemContext_BinaryInfoV3_t.

1.1.0

2.13.0

  • Added QnnSystemContext_getMetadata.

  • Deprecated QnnSystemContext_getBinaryInfo.

1.0.0

2.0.0

  • Initial release.