aboutsummaryrefslogtreecommitdiff
path: root/src/backends/backendsCommon/WorkloadFactory.cpp
diff options
context:
space:
mode:
authorDavid Beck <david.beck@arm.com>2018-11-12 14:59:37 +0000
committerAron Virginas-Tar <aron.virginas-tar@arm.com>2018-11-12 16:02:51 +0000
commit111b5d94d7e854c21377f8d2c0b4234317a903f6 (patch)
tree68111e5d89b605c898b2327cb59b915e3ff64ce9 /src/backends/backendsCommon/WorkloadFactory.cpp
parent4e1e136cce3fca73ba49b570cfcb620f4ec574da (diff)
downloadarmnn-111b5d94d7e854c21377f8d2c0b4234317a903f6.tar.gz
IVGCVSW-2125 : Consolidate backend registries into one
Change-Id: I56da4780f8f5fcef7ff01d232d5d61bf299364bf
Diffstat (limited to 'src/backends/backendsCommon/WorkloadFactory.cpp')
-rw-r--r--src/backends/backendsCommon/WorkloadFactory.cpp22
1 files changed, 18 insertions, 4 deletions
diff --git a/src/backends/backendsCommon/WorkloadFactory.cpp b/src/backends/backendsCommon/WorkloadFactory.cpp
index ec30f34880..bb63b336e9 100644
--- a/src/backends/backendsCommon/WorkloadFactory.cpp
+++ b/src/backends/backendsCommon/WorkloadFactory.cpp
@@ -10,14 +10,17 @@
#include <armnn/Types.hpp>
#include <armnn/LayerSupport.hpp>
+#include <armnn/ILayerSupport.hpp>
-#include <backendsCommon/LayerSupportRegistry.hpp>
+#include <backendsCommon/BackendRegistry.hpp>
#include <backendsCommon/WorkloadFactory.hpp>
+#include <backendsCommon/IBackendInternal.hpp>
#include <boost/cast.hpp>
#include <boost/iterator/transform_iterator.hpp>
#include <cstring>
+#include <sstream>
namespace armnn
{
@@ -66,9 +69,20 @@ bool IWorkloadFactory::IsLayerSupported(const BackendId& backendId,
bool result;
const Layer& layer = *(boost::polymorphic_downcast<const Layer*>(&connectableLayer));
- auto const& layerSupportRegistry = LayerSupportRegistryInstance();
- auto layerSupportFactory = layerSupportRegistry.GetFactory(backendId);
- auto layerSupportObject = layerSupportFactory();
+ auto const& backendRegistry = BackendRegistryInstance();
+ if (!backendRegistry.IsBackendRegistered(backendId))
+ {
+ std::stringstream ss;
+ ss << connectableLayer.GetName() << " is not supported on " << backendId
+ << " because this backend is not registered.";
+
+ outReasonIfUnsupported = ss.str();
+ return false;
+ }
+
+ auto backendFactory = backendRegistry.GetFactory(backendId);
+ auto backendObject = backendFactory();
+ auto layerSupportObject = backendObject->GetLayerSupport();
switch(layer.GetType())
{