1 /* 2 * Copyright (c) Qualcomm Innovation Center, Inc. 3 * All rights reserved. 4 * 5 * This source code is licensed under the BSD-style license found in the 6 * LICENSE file in the root directory of this source tree. 7 */ 8 #include <executorch/backends/qualcomm/runtime/backends/htpbackend/HtpBackendCache.h> 9 #include "HTP/QnnHtpSystemContext.h" 10 11 namespace executorch { 12 namespace backends { 13 namespace qnn { 14 15 using executorch::runtime::Error; 16 RetrieveBackendBinaryInfo(const QnnSystemContext_BinaryInfo_t * binaryinfo)17Error HtpBackendCache::RetrieveBackendBinaryInfo( 18 const QnnSystemContext_BinaryInfo_t* binaryinfo) { 19 QnnHtpSystemContext_HwBlobInfo_t* htp_hwblobinfo = nullptr; 20 21 if (binaryinfo->version == QNN_SYSTEM_CONTEXT_BINARY_INFO_VERSION_1) { 22 htp_hwblobinfo = static_cast<QnnHtpSystemContext_HwBlobInfo_t*>( 23 binaryinfo->contextBinaryInfoV1.hwInfoBlob); 24 } else if (binaryinfo->version == QNN_SYSTEM_CONTEXT_BINARY_INFO_VERSION_2) { 25 htp_hwblobinfo = static_cast<QnnHtpSystemContext_HwBlobInfo_t*>( 26 binaryinfo->contextBinaryInfoV2.hwInfoBlob); 27 } else { 28 QNN_EXECUTORCH_LOG_WARN( 29 "Unknown QNN BinaryInfo version %d.", binaryinfo->version); 30 return Error::Internal; 31 } 32 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 } 38 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; 47 } 48 49 return Error::Ok; 50 } 51 52 } // namespace qnn 53 } // namespace backends 54 } // namespace executorch 55