diff options
author | David Beck <david.beck@arm.com> | 2018-11-12 14:59:37 +0000 |
---|---|---|
committer | Aron Virginas-Tar <aron.virginas-tar@arm.com> | 2018-11-12 16:02:51 +0000 |
commit | 111b5d94d7e854c21377f8d2c0b4234317a903f6 (patch) | |
tree | 68111e5d89b605c898b2327cb59b915e3ff64ce9 /src/backends/backendsCommon/WorkloadFactory.cpp | |
parent | 4e1e136cce3fca73ba49b570cfcb620f4ec574da (diff) | |
download | armnn-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.cpp | 22 |
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()) { |