diff options
Diffstat (limited to 'src/backends/backendsCommon')
5 files changed, 42 insertions, 4 deletions
diff --git a/src/backends/backendsCommon/BackendRegistry.hpp b/src/backends/backendsCommon/BackendRegistry.hpp index 145da8819c..4b20cacbe0 100644 --- a/src/backends/backendsCommon/BackendRegistry.hpp +++ b/src/backends/backendsCommon/BackendRegistry.hpp @@ -4,14 +4,13 @@ // #pragma once -#include "IBackendInternal.hpp" #include "RegistryCommon.hpp" - #include <armnn/Types.hpp> namespace armnn { - +class IBackendInternal; +using IBackendInternalUniquePtr = std::unique_ptr<IBackendInternal>; using BackendRegistry = RegistryCommon<IBackendInternal, IBackendInternalUniquePtr>; BackendRegistry& BackendRegistryInstance(); @@ -22,4 +21,4 @@ struct RegisteredTypeName<IBackend> static const char * Name() { return "IBackend"; } }; -} // namespace armnn +} // namespace armnn
\ No newline at end of file diff --git a/src/backends/backendsCommon/CMakeLists.txt b/src/backends/backendsCommon/CMakeLists.txt index 9dd9b92fe3..f4ab45f8b4 100644 --- a/src/backends/backendsCommon/CMakeLists.txt +++ b/src/backends/backendsCommon/CMakeLists.txt @@ -10,6 +10,7 @@ list(APPEND armnnBackendsCommon_sources CpuTensorHandleFwd.hpp CpuTensorHandle.hpp IBackendInternal.hpp + IBackendContext.hpp ILayerSupport.cpp ITensorHandle.hpp LayerSupportRegistry.cpp diff --git a/src/backends/backendsCommon/IBackendContext.hpp b/src/backends/backendsCommon/IBackendContext.hpp new file mode 100644 index 0000000000..de9824956f --- /dev/null +++ b/src/backends/backendsCommon/IBackendContext.hpp @@ -0,0 +1,32 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// +#pragma once + +#include <armnn/IRuntime.hpp> +#include <memory> + +namespace armnn +{ + +class IBackendContext +{ +protected: + IBackendContext(const IRuntime::CreationOptions&) {} + +public: + // Before and after Load network events + virtual bool BeforeLoadNetwork(NetworkId networkId) = 0; + virtual bool AfterLoadNetwork(NetworkId networkId) = 0; + + // Before and after Unload network events + virtual bool BeforeUnloadNetwork(NetworkId networkId) = 0; + virtual bool AfterUnloadNetwork(NetworkId networkId) = 0; + + virtual ~IBackendContext() {} +}; + +using IBackendContextUniquePtr = std::unique_ptr<IBackendContext>; + +} // namespace armnn
\ No newline at end of file diff --git a/src/backends/backendsCommon/IBackendInternal.hpp b/src/backends/backendsCommon/IBackendInternal.hpp index 7e44dbd676..fede366475 100644 --- a/src/backends/backendsCommon/IBackendInternal.hpp +++ b/src/backends/backendsCommon/IBackendInternal.hpp @@ -5,10 +5,12 @@ #pragma once #include <armnn/Types.hpp> +#include <armnn/IRuntime.hpp> namespace armnn { class IWorkloadFactory; +class IBackendContext; class IBackendInternal : public IBackend { @@ -23,7 +25,10 @@ public: ~IBackendInternal() override = default; using IWorkloadFactoryPtr = std::unique_ptr<IWorkloadFactory>; + using IBackendContextPtr = std::unique_ptr<IBackendContext>; + virtual IWorkloadFactoryPtr CreateWorkloadFactory() const = 0; + virtual IBackendContextPtr CreateBackendContext(const IRuntime::CreationOptions&) const = 0; }; using IBackendInternalUniquePtr = std::unique_ptr<IBackendInternal>; diff --git a/src/backends/backendsCommon/test/BackendRegistryTests.cpp b/src/backends/backendsCommon/test/BackendRegistryTests.cpp index 0bc655be09..26175e015f 100644 --- a/src/backends/backendsCommon/test/BackendRegistryTests.cpp +++ b/src/backends/backendsCommon/test/BackendRegistryTests.cpp @@ -6,6 +6,7 @@ #include <armnn/Types.hpp> #include <backendsCommon/BackendRegistry.hpp> +#include <backendsCommon/IBackendInternal.hpp> #include <boost/test/unit_test.hpp> |