IVGCVSW-6527 Support the new memory API in loaded network

 * enable external memory management for neon and ref backends
 * change m_TensorMemoryVector to hold shared pointers
 * change input layer backend Id to match backend id of connected layer

Signed-off-by: Finn Williams <finn.williams@arm.com>
Change-Id: I2216a724028312eb101b290df3f224177826b1a0
diff --git a/include/armnn/IRuntime.hpp b/include/armnn/IRuntime.hpp
index 93f8b0f..bdfd9b2 100644
--- a/include/armnn/IRuntime.hpp
+++ b/include/armnn/IRuntime.hpp
@@ -43,7 +43,8 @@
           m_ProfilingEnabled(profilingEnabled),
           m_OutputNetworkDetailsMethod(ProfilingDetailsMethod::Undefined),
           m_InputSource(m_ImportEnabled ? MemorySource::Malloc : MemorySource::Undefined),
-          m_OutputSource(m_ExportEnabled ? MemorySource::Malloc : MemorySource::Undefined)
+          m_OutputSource(m_ExportEnabled ? MemorySource::Malloc : MemorySource::Undefined),
+          m_ExternalMemoryManagementEnabled(false)
     {}
 
     ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Please use INetworkProperties constructor without numThreads argument", "22.02")
@@ -58,7 +59,8 @@
           m_ProfilingEnabled(profilingEnabled),
           m_OutputNetworkDetailsMethod(ProfilingDetailsMethod::Undefined),
           m_InputSource(inputSource),
-          m_OutputSource(outputSource)
+          m_OutputSource(outputSource),
+          m_ExternalMemoryManagementEnabled(false)
     {
         armnn::IgnoreUnused(numThreads);
     }
@@ -67,14 +69,16 @@
                        MemorySource inputSource,
                        MemorySource outputSource,
                        bool profilingEnabled = false,
-                       ProfilingDetailsMethod detailsMethod = ProfilingDetailsMethod::Undefined)
+                       ProfilingDetailsMethod detailsMethod = ProfilingDetailsMethod::Undefined,
+                       bool externalMemoryManagementEnabled = false)
         : m_ImportEnabled(inputSource != MemorySource::Undefined),
           m_ExportEnabled(outputSource != MemorySource::Undefined),
           m_AsyncEnabled(asyncEnabled),
           m_ProfilingEnabled(profilingEnabled),
           m_OutputNetworkDetailsMethod(detailsMethod),
           m_InputSource(inputSource),
-          m_OutputSource(outputSource)
+          m_OutputSource(outputSource),
+          m_ExternalMemoryManagementEnabled(externalMemoryManagementEnabled)
     {}
 
     /// Deprecated and will be removed in future release.
@@ -91,6 +95,8 @@
     const MemorySource m_InputSource;
     const MemorySource m_OutputSource;
 
+    const bool m_ExternalMemoryManagementEnabled;
+
     virtual ~INetworkProperties() {}
 };