IVGCVSW-5766 Avoiding driver abort when Cts tests use invalid filter shape.
* A number of DepthwiseConv2d Cts tests pass a filter operand with a
dimension[0] value greater than 1 in contravention of Android
documentation. Adding a check to handle this gracefully.
* Changing a hard assert in ConversionUtils::ConstTensorPin to a warning.
Signed-off-by: Colm Donelan <Colm.Donelan@arm.com>
Change-Id: I605340d098b717d1d88d259a0ed89a801287764d
diff --git a/ConversionUtils.cpp b/ConversionUtils.cpp
index b03ffbd..9cc6e28 100644
--- a/ConversionUtils.cpp
+++ b/ConversionUtils.cpp
@@ -62,7 +62,10 @@
const armnn::PermutationVector& mappings)
{
armnn::IgnoreUnused(numBytes);
- assert(tensorInfo.GetNumBytes() == numBytes);
+ if (tensorInfo.GetNumBytes() != numBytes)
+ {
+ ALOGW("The size of ConstTensor does not match its TensorInfo.");
+ }
const bool needsSwizzling = (mappings.GetSize() > 0);
if (needsSwizzling)
diff --git a/ConversionUtils.hpp b/ConversionUtils.hpp
index e5f99ed..439d4a4 100644
--- a/ConversionUtils.hpp
+++ b/ConversionUtils.hpp
@@ -2559,6 +2559,14 @@
{
return Fail("%s: Operand is invalid", __func__);
}
+ // Basic sanity check on the weights shape.
+ // ANEURALNETWORKS_DEPTHWISE_CONV_2D specifies a 4-D tensor, of shape
+ // [1, filter_height, filter_width, depth_out]
+ if (weightsOperand->dimensions[0] != 1)
+ {
+ return Fail("%s: Filter operand dimension 0 is invalid, should be 1", __func__);
+ }
+
armnn::DepthwiseConvolution2dDescriptor desc;
desc.m_DataLayout = armnn::DataLayout::NHWC;