diff options
Diffstat (limited to 'src/armnnSerializer/Serializer.cpp')
-rw-r--r-- | src/armnnSerializer/Serializer.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/armnnSerializer/Serializer.cpp b/src/armnnSerializer/Serializer.cpp index 56c4281a87..3b71e5fc7d 100644 --- a/src/armnnSerializer/Serializer.cpp +++ b/src/armnnSerializer/Serializer.cpp @@ -361,6 +361,39 @@ void SerializerVisitor::VisitMinimumLayer(const armnn::IConnectableLayer* layer, 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); |