namespace armnn
{
+/// Capability class to calculate in the GetCapabilities function
+/// so that only the capability in the scope can be choose to calculate
+enum class CapabilityClass
+{
+ PaddingRequired = 1,
+
+ // add new enum values here
+
+ CapabilityClassMax = 254
+};
+
+/// Capability of the TensorHandleFactory
+struct Capability
+{
+ Capability(CapabilityClass capabilityClass, bool value)
+ : m_CapabilityClass(capabilityClass)
+ , m_Value(value)
+ {}
+
+ CapabilityClass m_CapabilityClass;
+ bool m_Value;
+};
+
class ITensorHandleFactory
{
public:
virtual MemorySourceFlags GetExportFlags() const { return 0; }
virtual MemorySourceFlags GetImportFlags() const { return 0; }
+
+ virtual std::vector<Capability> GetCapabilities(const IConnectableLayer* layer,
+ const IConnectableLayer* connectedLayer,
+ CapabilityClass capabilityClass)
+ {
+ IgnoreUnused(layer);
+ IgnoreUnused(connectedLayer);
+ IgnoreUnused(capabilityClass);
+ return std::vector<Capability>();
+ }
};
enum class EdgeStrategy
BOOST_CHECK(buffer[1] == 10.0f);
}
+BOOST_AUTO_TEST_CASE(RefTensorHandleGetCapabilities)
+{
+ std::shared_ptr<RefMemoryManager> memoryManager = std::make_shared<RefMemoryManager>();
+ RefTensorHandleFactory handleFactory(memoryManager);
+
+ // Builds up the structure of the network.
+ INetworkPtr net(INetwork::Create());
+ IConnectableLayer* input = net->AddInputLayer(0);
+ IConnectableLayer* output = net->AddOutputLayer(0);
+ input->GetOutputSlot(0).Connect(output->GetInputSlot(0));
+
+ std::vector<Capability> capabilities = handleFactory.GetCapabilities(input,
+ output,
+ CapabilityClass::PaddingRequired);
+ BOOST_CHECK(capabilities.empty());
+}
+
#if !defined(__ANDROID__)
// Only run these tests on non Android platforms
BOOST_AUTO_TEST_CASE(CheckSourceType)