IVGCVSW-4596 Fix BufferManager's packet order

Signed-off-by: Finn Williams <Finn.Williams@arm.com>
Change-Id: I35e0a891cd69f2c130b8886460089c441d8e666d
diff --git a/src/armnn/test/RuntimeTests.cpp b/src/armnn/test/RuntimeTests.cpp
index d5bc26a..eca4bf8 100644
--- a/src/armnn/test/RuntimeTests.cpp
+++ b/src/armnn/test/RuntimeTests.cpp
@@ -692,17 +692,17 @@
     // Does the inference.
     runtime.EnqueueWorkload(netId, inputTensors, outputTensors);
 
-    // Get readable buffer for inference timeline
-    auto inferenceReadableBuffer = bufferManager.GetReadableBuffer();
-    BOOST_CHECK(inferenceReadableBuffer != nullptr);
+    // Get readable buffer for input workload
+    auto  inputReadableBuffer = bufferManager.GetReadableBuffer();
+    BOOST_CHECK(inputReadableBuffer != nullptr);
 
     // Get readable buffer for output workload
     auto outputReadableBuffer = bufferManager.GetReadableBuffer();
     BOOST_CHECK(outputReadableBuffer != nullptr);
 
-    // Get readable buffer for input workload
-    auto inputReadableBuffer = bufferManager.GetReadableBuffer();
-    BOOST_CHECK(inputReadableBuffer != nullptr);
+    // Get readable buffer for inference timeline
+    auto inferenceReadableBuffer = bufferManager.GetReadableBuffer();
+    BOOST_CHECK(inferenceReadableBuffer != nullptr);
 
     // Validate input workload data
     size = inputReadableBuffer->GetSize();
diff --git a/src/profiling/BufferManager.cpp b/src/profiling/BufferManager.cpp
index f5ab729..a7b71e5 100644
--- a/src/profiling/BufferManager.cpp
+++ b/src/profiling/BufferManager.cpp
@@ -45,7 +45,7 @@
     std::unique_lock<std::mutex> readableListLock(m_ReadableMutex, std::defer_lock);
     packetBuffer->Commit(size);
     readableListLock.lock();
-    m_ReadableList.push_back(std::move(packetBuffer));
+    m_ReadableList.push(std::move(packetBuffer));
     readableListLock.unlock();
 
     if (notifyConsumer)
@@ -62,7 +62,6 @@
         IPacketBufferPtr buffer = std::make_unique<PacketBuffer>(m_MaxBufferSize);
         m_AvailableList.emplace_back(std::move(buffer));
     }
-    m_ReadableList.reserve(m_NumberOfBuffers);
 }
 
 void BufferManager::Release(IPacketBufferPtr& packetBuffer)
@@ -81,7 +80,7 @@
     std::lock_guard<std::mutex> availableListLock(m_AvailableMutex);
 
     m_AvailableList.clear();
-    m_ReadableList.clear();
+    std::queue<IPacketBufferPtr>().swap(m_ReadableList);
 
     Initialize();
 }
@@ -91,8 +90,8 @@
     std::unique_lock<std::mutex> readableListLock(m_ReadableMutex);
     if (!m_ReadableList.empty())
     {
-        IPacketBufferPtr buffer = std::move(m_ReadableList.back());
-        m_ReadableList.pop_back();
+        IPacketBufferPtr buffer = std::move(m_ReadableList.front());
+        m_ReadableList.pop();
         readableListLock.unlock();
         return buffer;
     }
diff --git a/src/profiling/BufferManager.hpp b/src/profiling/BufferManager.hpp
index d678cd3..f4e63da 100644
--- a/src/profiling/BufferManager.hpp
+++ b/src/profiling/BufferManager.hpp
@@ -11,6 +11,7 @@
 #include <condition_variable>
 #include <mutex>
 #include <vector>
+#include <queue>
 
 namespace armnn
 {
@@ -56,7 +57,7 @@
     std::vector<IPacketBufferPtr> m_AvailableList;
 
     // List of readable packet buffers
-    std::vector<IPacketBufferPtr> m_ReadableList;
+    std::queue<IPacketBufferPtr> m_ReadableList;
 
     // Mutex for available packet buffer list
     std::mutex m_AvailableMutex;
diff --git a/src/profiling/test/ProfilingTestUtils.cpp b/src/profiling/test/ProfilingTestUtils.cpp
index 325cb40..74e140c 100644
--- a/src/profiling/test/ProfilingTestUtils.cpp
+++ b/src/profiling/test/ProfilingTestUtils.cpp
@@ -773,17 +773,17 @@
     // Does the inference.
     runtime.EnqueueWorkload(netId, inputTensors, outputTensors);
 
-    // Get readable buffer for inference timeline
-    auto inferenceReadableBuffer = bufferManager.GetReadableBuffer();
-    BOOST_CHECK(inferenceReadableBuffer != nullptr);
+    // Get readable buffer for input workload
+    auto inputReadableBuffer = bufferManager.GetReadableBuffer();
+    BOOST_CHECK(inputReadableBuffer != nullptr);
 
     // Get readable buffer for output workload
     auto outputReadableBuffer = bufferManager.GetReadableBuffer();
     BOOST_CHECK(outputReadableBuffer != nullptr);
 
-    // Get readable buffer for input workload
-    auto inputReadableBuffer = bufferManager.GetReadableBuffer();
-    BOOST_CHECK(inputReadableBuffer != nullptr);
+    // Get readable buffer for inference timeline
+    auto inferenceReadableBuffer = bufferManager.GetReadableBuffer();
+    BOOST_CHECK(inferenceReadableBuffer != nullptr);
 
     // Validate input workload data
     size = inputReadableBuffer->GetSize();