IVGCVSW-6073 Add protected mode to ArmNN CreationOptions

 * Adds logic to the Runtime to activate protected mode
 * Adds ProtectedContentAllocation backend capability to ClBackend
   It's not fully activated yet because the CustomAllocator is
   missing. Will print an error message and won't register the backend
   but won't fail.
 * Extends IBackendInternal with an UseCustomAllocator function.
 * Adds related unit tests

Signed-off-by: Jan Eilers <jan.eilers@arm.com>
Change-Id: I64f465c5800eb104aa90db1bbf772a4148b5072f
diff --git a/include/armnn/IRuntime.hpp b/include/armnn/IRuntime.hpp
index bee61d2..fcb8c05 100644
--- a/include/armnn/IRuntime.hpp
+++ b/include/armnn/IRuntime.hpp
@@ -90,6 +90,7 @@
             , m_EnableGpuProfiling(false)
             , m_DynamicBackendsPath("")
             , m_CustomAllocator(nullptr)
+            , m_ProtectedMode(false)
         {}
 
         /// If set, uses the GpuAcc tuned parameters from the given object when executing GPU workloads.
@@ -108,6 +109,12 @@
         /// Only supported for GpuAcc
         ICustomAllocator* m_CustomAllocator;
 
+        /// Setting this flag will allow the user to create the Runtime in protected mode.
+        /// It will run all the inferences on protected memory and will make sure that
+        /// INetworkProperties::m_ImportEnabled set to true with MemorySource::DmaBufProtected option
+        /// This will use Protected Memory Allocator associated with the backend
+        bool m_ProtectedMode;
+
         struct ExternalProfilingOptions
         {
             ExternalProfilingOptions()