aboutsummaryrefslogtreecommitdiff
path: root/delegate/opaque/src/Convolution.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'delegate/opaque/src/Convolution.hpp')
-rw-r--r--delegate/opaque/src/Convolution.hpp51
1 files changed, 47 insertions, 4 deletions
diff --git a/delegate/opaque/src/Convolution.hpp b/delegate/opaque/src/Convolution.hpp
index 384c62b678..e4393e7bb0 100644
--- a/delegate/opaque/src/Convolution.hpp
+++ b/delegate/opaque/src/Convolution.hpp
@@ -138,6 +138,27 @@ TfLiteStatus VisitConv2dOperator(DelegateData& delegateData,
armnn::BackendId setBackend;
if (!delegateData.m_Network)
{
+ bool filterIsConst = filterTensorInfo.IsConstant();
+
+ if (!filterIsConst)
+ {
+ filterIsConst = WillInputBeOptimizedToConst(tfLiteContext, inputTensors[1]);
+ }
+ armnn::TensorInfo filterTensorInfoCopy(filterTensorInfo);
+ filterTensorInfoCopy.SetConstant(filterIsConst);
+ armnn::Optional<armnn::TensorInfo> optionalBiasInfoCopy(biasTensorInfo);
+
+ if (biasEnabled)
+ {
+ bool biasIsConst = biasTensorInfo.IsConstant();
+
+ if (!biasIsConst)
+ {
+ biasIsConst = WillInputBeOptimizedToConst(tfLiteContext, inputTensors[2]);
+ }
+ optionalBiasInfoCopy.value().SetConstant(biasIsConst);
+ }
+
bool isSupported = false;
FORWARD_LAYER_OPAQUE_SUPPORT_FUNC("CONV2D",
tfLiteContext,
@@ -148,8 +169,8 @@ TfLiteStatus VisitConv2dOperator(DelegateData& delegateData,
inputTensorInfo,
outputTensorInfo,
descriptor,
- filterTensorInfo,
- optionalBiasInfo);
+ filterTensorInfoCopy,
+ optionalBiasInfoCopy);
return isSupported ? kTfLiteOk : kTfLiteError;
}
@@ -339,6 +360,28 @@ TfLiteStatus VisitDepthwiseConv2dOperator(DelegateData& delegateData,
armnn::BackendId setBackend;
if (!delegateData.m_Network)
{
+ bool filterIsConst = filterTensorInfo.IsConstant();
+
+ if (!filterIsConst)
+ {
+ filterIsConst = WillInputBeOptimizedToConst(tfLiteContext, inputTensors[1]);
+ }
+ armnn::TensorInfo filterTensorInfoCopy(filterTensorInfo);
+ filterTensorInfoCopy.SetConstant(filterIsConst);
+
+ armnn::Optional<armnn::TensorInfo> optionalBiasInfoCopy(biasTensorInfo);
+
+ if (biasEnabled)
+ {
+ bool biasIsConst = biasTensorInfo.IsConstant();
+
+ if (!biasIsConst)
+ {
+ biasIsConst = WillInputBeOptimizedToConst(tfLiteContext, inputTensors[2]);
+ }
+ optionalBiasInfoCopy.value().SetConstant(biasIsConst);
+ }
+
bool isSupported = false;
FORWARD_LAYER_OPAQUE_SUPPORT_FUNC("DEPTHWISE_CONV2D",
tfLiteContext,
@@ -349,8 +392,8 @@ TfLiteStatus VisitDepthwiseConv2dOperator(DelegateData& delegateData,
inputTensorInfo,
outputTensorInfo,
descriptor,
- filterTensorInfo,
- armnn::Optional<armnn::TensorInfo>(biasTensorInfo));
+ filterTensorInfoCopy,
+ optionalBiasInfoCopy);
return isSupported ? kTfLiteOk : kTfLiteError;
}