8 #include <DelegateOptions.hpp>
11 #include <tensorflow/core/public/version.h>
12 #include <tensorflow/lite/c/c_api_opaque.h>
13 #include <tensorflow/lite/core/experimental/acceleration/configuration/c/stable_delegate.h>
14 #include <tensorflow/lite/experimental/acceleration/configuration/delegate_registry.h>
16 #if TF_MAJOR_VERSION > 2 || (TF_MAJOR_VERSION == 2 && TF_MINOR_VERSION > 5)
17 #define ARMNN_POST_TFLITE_2_5
42 TfLiteStatus
DoPrepare(TfLiteOpaqueContext* context, TfLiteOpaqueDelegate* delegate,
void* data);
66 return instance.get();
69 TfLiteOpaqueDelegateBuilder m_Builder =
71 reinterpret_cast<void*
>(
this),
76 kTfLiteDelegateFlagsNone,
82 armnnDelegate::DelegateOptions m_Options;
85 static int TfLiteArmnnOpaqueDelegateErrno(TfLiteOpaqueDelegate* delegate) {
return 0; }
90 using tflite::delegates::DelegatePluginInterface;
96 static std::unique_ptr<ArmnnDelegatePlugin>
New(
const tflite::TFLiteSettings& tflite_settings)
98 return std::make_unique<ArmnnDelegatePlugin>(tflite_settings);
101 tflite::delegates::TfLiteDelegatePtr
Create()
override
104 return tflite::delegates::TfLiteDelegatePtr(
124 const TfLiteOpaqueDelegateParams* parameters,
127 TfLiteStatus
Prepare(TfLiteOpaqueContext* tfLiteContext);
129 TfLiteStatus
Invoke(TfLiteOpaqueContext* tfLiteContext, TfLiteOpaqueNode* tfLiteNode);
132 TfLiteOpaqueContext* tfLiteContext,
133 TfLiteRegistrationExternal* tfLiteRegistration,
134 TfLiteOpaqueNode* tfLiteNode,
139 std::vector<armnn::BindingPointInfo>& inputBindings,
140 std::vector<armnn::BindingPointInfo>& outputBindings)
141 : m_NetworkId(networkId)
143 , m_InputBindings(inputBindings)
144 , m_OutputBindings(outputBindings)
146 static TfLiteStatus AddInputLayer(
DelegateData& delegateData,
147 TfLiteOpaqueContext* tfLiteContext,
148 const TfLiteIntArray* inputs,
149 std::vector<armnn::BindingPointInfo>& inputBindings);
150 static TfLiteStatus AddOutputLayer(
DelegateData& delegateData,
151 TfLiteOpaqueContext* tfLiteContext,
152 const TfLiteIntArray* outputs,
153 std::vector<armnn::BindingPointInfo>& outputBindings);
159 std::vector<armnn::BindingPointInfo> m_InputBindings;
160 std::vector<armnn::BindingPointInfo> m_OutputBindings;