IVGCVSW-2697 Add Serialize/Deserialize for the Merger Layer
* Force generation of schema header in every build
* Also fixed typo in OriginsDescriptor comment (Descriptors.hpp)
* Added Serialize/Deserialize check on Addition Layer
* Added Serialize/Deserialize check on Floor Layer
* Added Serialize/Deserialize check on Minimum Layer
* Added Serialize/Deserialize check on Maximum Layer
* Added Serialize/Deserialize check on Multiplication Layer
* Added Serialize/Deserialize check on Division Layer
Change-Id: I1358ea4db7ca506d8bcec2ee64e1fbad6005e723
Signed-off-by: Jim Flynn <jim.flynn@arm.com>
diff --git a/src/armnnSerializer/Serializer.cpp b/src/armnnSerializer/Serializer.cpp
index 56c4281..3b71e5f 100644
--- a/src/armnnSerializer/Serializer.cpp
+++ b/src/armnnSerializer/Serializer.cpp
@@ -361,6 +361,39 @@
CreateAnyLayer(fbMinimumLayer.o, serializer::Layer::Layer_MinimumLayer);
}
+void SerializerVisitor::VisitMergerLayer(const armnn::IConnectableLayer* layer,
+ const armnn::OriginsDescriptor& mergerDescriptor,
+ const char* name)
+{
+ auto flatBufferMergerBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Merger);
+
+ std::vector<flatbuffers::Offset<UintVector>> views;
+ for (unsigned int v = 0; v < mergerDescriptor.GetNumViews(); ++v)
+ {
+ const uint32_t* origin = mergerDescriptor.GetViewOrigin(v);
+ std::vector<uint32_t> origins;
+ for (unsigned int d = 0; d < mergerDescriptor.GetNumDimensions(); ++d)
+ {
+ origins.push_back(origin[d]);
+ }
+ auto view = m_flatBufferBuilder.CreateVector(origins);
+ auto uintVector = CreateUintVector(m_flatBufferBuilder, view);
+ views.push_back(uintVector);
+ }
+
+ auto flatBufferMergerDescriptor = CreateOriginsDescriptor(m_flatBufferBuilder,
+ mergerDescriptor.GetConcatAxis(),
+ mergerDescriptor.GetNumViews(),
+ mergerDescriptor.GetNumDimensions(),
+ m_flatBufferBuilder.CreateVector(views));
+
+ auto flatBufferLayer = CreateMergerLayer(m_flatBufferBuilder,
+ flatBufferMergerBaseLayer,
+ flatBufferMergerDescriptor);
+
+ CreateAnyLayer(flatBufferLayer.o, serializer::Layer::Layer_MergerLayer);
+}
+
void SerializerVisitor::VisitMultiplicationLayer(const armnn::IConnectableLayer* layer, const char* name)
{
auto fbMultiplicationBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Multiplication);