COMPMID-417: Fix NEGaussianPyramidOrb.

Change-Id: I9e89136a926f33cc591784d4e7785618bba7b0b2
Reviewed-on: http://mpd-gerrit.cambridge.arm.com/88116
Reviewed-by: Pablo Tello <pablo.tello@arm.com>
Tested-by: Kaizen <jeremy.johnson+kaizengerrit@arm.com>
diff --git a/src/runtime/NEON/functions/NEGaussianPyramid.cpp b/src/runtime/NEON/functions/NEGaussianPyramid.cpp
index 90bd584..84ea0ca 100644
--- a/src/runtime/NEON/functions/NEGaussianPyramid.cpp
+++ b/src/runtime/NEON/functions/NEGaussianPyramid.cpp
@@ -116,8 +116,7 @@
 }
 
 NEGaussianPyramidOrb::NEGaussianPyramidOrb() // NOLINT
-    : _offsets(),
-      _gaus5x5(),
+    : _gaus5x5(),
       _scale_nearest()
 {
 }
@@ -140,29 +139,18 @@
     if(num_levels > 1)
     {
         _gaus5x5       = arm_compute::support::cpp14::make_unique<NEGaussian5x5[]>(num_levels - 1);
-        _scale_nearest = arm_compute::support::cpp14::make_unique<NEScaleKernel[]>(num_levels - 1);
-        _offsets       = arm_compute::support::cpp14::make_unique<Image[]>(num_levels - 1);
+        _scale_nearest = arm_compute::support::cpp14::make_unique<NEScale[]>(num_levels - 1);
 
         PyramidInfo pyramid_info(num_levels - 1, SCALE_PYRAMID_ORB, pyramid->info()->tensor_shape(), Format::U8);
         _tmp.init(pyramid_info);
 
         for(unsigned int i = 0; i < num_levels - 1; ++i)
         {
-            const size_t width  = _pyramid->get_pyramid_level(i + 1)->info()->dimension(0);
-            const size_t height = _pyramid->get_pyramid_level(i + 1)->info()->dimension(1);
-
-            /* Allocate Image for the offsets used by NEAREST interpolation */
-            TensorInfo tensor_info(TensorShape(width, height), Format::S32);
-            _offsets[i].allocator()->init(tensor_info);
-
             /* Configure gaussian 5x5 */
             _gaus5x5[i].configure(_pyramid->get_pyramid_level(i), _tmp.get_pyramid_level(i), border_mode, constant_border_value);
 
-            /* Configure scale image kernel */
-            _scale_nearest[i].configure(_tmp.get_pyramid_level(i), nullptr, nullptr, _offsets.get() + i, _pyramid->get_pyramid_level(i + 1), InterpolationPolicy::NEAREST_NEIGHBOR,
-                                        border_mode == BorderMode::UNDEFINED);
-
-            _offsets[i].allocator()->allocate();
+            /* Configure scale */
+            _scale_nearest[i].configure(_tmp.get_pyramid_level(i), _pyramid->get_pyramid_level(i + 1), InterpolationPolicy::NEAREST_NEIGHBOR, BorderMode::UNDEFINED);
         }
 
         _tmp.allocate();
@@ -182,6 +170,6 @@
     for(unsigned int i = 0; i < num_levels - 1; ++i)
     {
         _gaus5x5[i].run();
-        NEScheduler::get().schedule(_scale_nearest.get() + i, Window::DimY);
+        _scale_nearest[i].run();
     }
 }
diff --git a/src/runtime/NEON/functions/NEScale.cpp b/src/runtime/NEON/functions/NEScale.cpp
index 6c5ac3c..0b17e80 100644
--- a/src/runtime/NEON/functions/NEScale.cpp
+++ b/src/runtime/NEON/functions/NEScale.cpp
@@ -86,9 +86,8 @@
 }
 } // namespace
 
-NEScale::NEScale(std::shared_ptr<IMemoryManager> memory_manager) // NOLINT
-    : _memory_group(std::move(memory_manager)),
-      _offsets(),
+NEScale::NEScale() // NOLINT
+    : _offsets(),
       _dx(),
       _dy(),
       _scale_kernel(),
@@ -131,7 +130,6 @@
         {
             TensorInfo tensor_info_offsets(shape, Format::S32);
             _offsets.allocator()->init(tensor_info_offsets);
-            _memory_group.manage(&_offsets);
 
             _scale_kernel.configure(input, nullptr, nullptr, &_offsets, output, policy, border_undefined);
 
@@ -151,11 +149,6 @@
             _dx.allocator()->init(tensor_info_dxdy);
             _dy.allocator()->init(tensor_info_dxdy);
 
-            // Manage intermediate buffers
-            _memory_group.manage(&_offsets);
-            _memory_group.manage(&_dx);
-            _memory_group.manage(&_dy);
-
             _scale_kernel.configure(input, &_dx, &_dy, &_offsets, output, policy, border_undefined);
 
             // Allocate once the configure methods have been called
@@ -181,10 +174,6 @@
 
 void NEScale::run()
 {
-    _memory_group.acquire();
-
     NEScheduler::get().schedule(&_border_handler, Window::DimZ);
     NEScheduler::get().schedule(&_scale_kernel, Window::DimY);
-
-    _memory_group.release();
 }