Skip to content

Commit 65d2f80

Browse files
committed
Qualcomm AI Engine Direct - Support QNN 2.28
Note that if merged, QNN version less than 2.28 will not support it.
1 parent 86cb5d7 commit 65d2f80

File tree

2 files changed

+30
-12
lines changed

2 files changed

+30
-12
lines changed

backends/qualcomm/runtime/backends/QnnBackendCache.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@ Error QnnBackendCache::GetQnnGraphInfoFromBinary(
5252
} else if (binaryinfo->version == QNN_SYSTEM_CONTEXT_BINARY_INFO_VERSION_2) {
5353
num_graphs = binaryinfo->contextBinaryInfoV2.numGraphs;
5454
graphs = binaryinfo->contextBinaryInfoV2.graphs;
55+
} else if (binaryinfo->version == QNN_SYSTEM_CONTEXT_BINARY_INFO_VERSION_3) {
56+
num_graphs = binaryinfo->contextBinaryInfoV3.numGraphs;
57+
graphs = binaryinfo->contextBinaryInfoV3.graphs;
5558
} else {
5659
QNN_EXECUTORCH_LOG_WARN(
5760
"Unknown QNN BinaryInfo version %d.", binaryinfo->version);
@@ -63,6 +66,8 @@ Error QnnBackendCache::GetQnnGraphInfoFromBinary(
6366
RetrieveGraphInfo<QnnSystemContext_GraphInfoV1_t>(graphs[i].graphInfoV1);
6467
} else if (graphs->version == QNN_SYSTEM_CONTEXT_GRAPH_INFO_VERSION_2) {
6568
RetrieveGraphInfo<QnnSystemContext_GraphInfoV2_t>(graphs[i].graphInfoV2);
69+
} else if (graphs->version == QNN_SYSTEM_CONTEXT_GRAPH_INFO_VERSION_3) {
70+
RetrieveGraphInfo<QnnSystemContext_GraphInfoV3_t>(graphs[i].graphInfoV3);
6671
} else {
6772
QNN_EXECUTORCH_LOG_WARN(
6873
"Unknown QNN GraphInfo version %d.", binaryinfo->version);

backends/qualcomm/runtime/backends/htpbackend/HtpBackendCache.cpp

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,33 +17,46 @@ using executorch::runtime::Error;
1717
Error HtpBackendCache::RetrieveBackendBinaryInfo(
1818
const QnnSystemContext_BinaryInfo_t* binaryinfo) {
1919
QnnHtpSystemContext_HwBlobInfo_t* htp_hwblobinfo = nullptr;
20+
QnnHtpSystemContext_GraphBlobInfo_t* htp_graphblobinfo = nullptr;
2021

2122
if (binaryinfo->version == QNN_SYSTEM_CONTEXT_BINARY_INFO_VERSION_1) {
2223
htp_hwblobinfo = static_cast<QnnHtpSystemContext_HwBlobInfo_t*>(
2324
binaryinfo->contextBinaryInfoV1.hwInfoBlob);
2425
} else if (binaryinfo->version == QNN_SYSTEM_CONTEXT_BINARY_INFO_VERSION_2) {
2526
htp_hwblobinfo = static_cast<QnnHtpSystemContext_HwBlobInfo_t*>(
2627
binaryinfo->contextBinaryInfoV2.hwInfoBlob);
28+
} else if (binaryinfo->version == QNN_SYSTEM_CONTEXT_BINARY_INFO_VERSION_3) {
29+
htp_graphblobinfo = static_cast<QnnHtpSystemContext_GraphBlobInfo_t*>(
30+
binaryinfo->contextBinaryInfoV3.graphs->graphInfoV3.graphBlobInfo);
2731
} else {
2832
QNN_EXECUTORCH_LOG_WARN(
2933
"Unknown QNN BinaryInfo version %d.", binaryinfo->version);
3034
return Error::Internal;
3135
}
3236

33-
if (htp_hwblobinfo == nullptr) {
34-
QNN_EXECUTORCH_LOG_WARN(
35-
"Htp hardware blob information is not found in binary information.");
36-
return Error::Ok;
37+
if (htp_hwblobinfo) {
38+
if (htp_hwblobinfo->version ==
39+
QNN_SYSTEM_CONTEXT_HTP_HW_INFO_BLOB_VERSION_V1) {
40+
spill_fill_buf_ =
41+
(*htp_hwblobinfo).contextBinaryHwInfoBlobV1_t.spillFillBufferSize;
42+
} else {
43+
QNN_EXECUTORCH_LOG_WARN(
44+
"Unknown QNN Htp hw blob info version %d.", htp_hwblobinfo->version);
45+
return Error::Internal;
46+
}
3747
}
3848

39-
if (htp_hwblobinfo->version ==
40-
QNN_SYSTEM_CONTEXT_HTP_HW_INFO_BLOB_VERSION_V1) {
41-
spill_fill_buf_ =
42-
(*htp_hwblobinfo).contextBinaryHwInfoBlobV1_t.spillFillBufferSize;
43-
} else {
44-
QNN_EXECUTORCH_LOG_WARN(
45-
"Unknown QNN Htp hw blob info version %d.", htp_hwblobinfo->version);
46-
return Error::Internal;
49+
if (htp_graphblobinfo) {
50+
if (htp_graphblobinfo->version ==
51+
QNN_SYSTEM_CONTEXT_HTP_GRAPH_INFO_BLOB_VERSION_V1) {
52+
spill_fill_buf_ =
53+
(*htp_graphblobinfo).contextBinaryGraphBlobInfoV1.spillFillBufferSize;
54+
} else {
55+
QNN_EXECUTORCH_LOG_WARN(
56+
"Unknown QNN Htp graph blob info version %d.",
57+
htp_graphblobinfo->version);
58+
return Error::Internal;
59+
}
4760
}
4861

4962
return Error::Ok;

0 commit comments

Comments
 (0)