COMPMID-2549: Add GLES Runtime Context interfaces.

* Creates interfaces and concrete classes
* Ports GCActivationalLayer
* Adapts test framework and relevant tests

Change-Id: Ide36cd65ebf185958db3c4a5bebd630fcb2f39b3
Signed-off-by: Georgios Pinitas <georgios.pinitas@arm.com>
Reviewed-on: https://review.mlplatform.org/c/2199
Reviewed-by: Pablo Marquez <pablo.tello@arm.com>
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
diff --git a/arm_compute/core/GLES_COMPUTE/GCKernelLibrary.h b/arm_compute/core/GLES_COMPUTE/GCKernelLibrary.h
index 89d6d17..92e6bee 100644
--- a/arm_compute/core/GLES_COMPUTE/GCKernelLibrary.h
+++ b/arm_compute/core/GLES_COMPUTE/GCKernelLibrary.h
@@ -36,7 +36,7 @@
 namespace arm_compute
 {
 /** GCProgram class */
-class GCProgram
+class GCProgram final
 {
 public:
     /** Default constructor. */
@@ -84,7 +84,7 @@
 };
 
 /** GCKernel class */
-class GCKernel
+class GCKernel final
 {
 public:
     /** Default Constructor. */
@@ -184,22 +184,21 @@
 };
 
 /** GCKernelLibrary class */
-class GCKernelLibrary
+class GCKernelLibrary final
 {
     using StringSet = std::set<std::string>;
 
-private:
+public:
     /** Default Constructor. */
     GCKernelLibrary();
+    /** Default Destructor */
     ~GCKernelLibrary();
-
-public:
     /** Prevent instances of this class from being copied */
     GCKernelLibrary(const GCKernelLibrary &) = delete;
     /** Prevent instances of this class from being copied */
     const GCKernelLibrary &operator=(const GCKernelLibrary &) = delete;
     /** Get the static instance of @ref GCKernelLibrary.
-     *
+     * This method has been deprecated and will be removed in the next release.
      * @return The static instance of GCKernelLibrary.
      */
     static GCKernelLibrary &get();
@@ -209,40 +208,18 @@
      * @param[in] dpy         (Optional) EGLdisplay set by external application.
      * @param[in] ctx         (Optional) EGLContext set by external application.
      */
-    void init(std::string shader_path = "./", EGLDisplay dpy = EGL_NO_DISPLAY, EGLContext ctx = EGL_NO_CONTEXT)
-    {
-        //TODO: deal with old display and context.
-        _shader_path = std::move(shader_path);
-
-        _display = dpy;
-        _context = ctx;
-
-        eglMakeCurrent(_display, EGL_NO_SURFACE, EGL_NO_SURFACE, _context);
-        setup_dummy_fbo();
-    }
-
+    void init(std::string shader_path = "./", EGLDisplay dpy = EGL_NO_DISPLAY, EGLContext ctx = EGL_NO_CONTEXT);
     /** Sets the path that the shaders reside in.
      *
      * @param[in] shader_path Path of the shader.
      */
-    void set_shader_path(const std::string &shader_path)
-    {
-        _shader_path = shader_path;
-    };
+    void set_shader_path(const std::string &shader_path);
     /** Sets display and context to create kernel.
      *
      * @param[in] dpy EGLdisplay set by external application.
      * @param[in] ctx EGLContext set by external application.
      */
-    void set_context(EGLDisplay dpy, EGLContext ctx)
-    {
-        //TODO: deal with old display and context.
-        _display = dpy;
-        _context = ctx;
-
-        eglMakeCurrent(dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, ctx);
-        setup_dummy_fbo();
-    };
+    void set_context(EGLDisplay dpy, EGLContext ctx);
     /** Creates a kernel from the kernel library.
      *
      * @param[in] shader_name       Shader name.
@@ -251,17 +228,11 @@
      * @return The created kernel.
      */
     GCKernel create_kernel(const std::string &shader_name, const StringSet &build_options_set = {}) const;
-    /** Serializes and saves programs to a binary.
-     *
-     */
+    /** Serializes and saves programs to a binary. */
     void save_binary();
-    /** Load serialized binary with all the programs.
-     *
-     */
+    /** Load serialized binary with all the programs. */
     void load_binary();
-    /** Setup a dummy fbo to workaround an issue on Galaxy S8.
-     *
-     */
+    /** Setup a dummy fbo to workaround an issue on Galaxy S8. */
     void setup_dummy_fbo();
 
 private:
@@ -296,5 +267,5 @@
     static const std::map<std::string, std::string> _program_source_map; /**< Contains sources for all programs.
                                                                               Used for compile-time shader inclusion. */
 };
-}
+} // namespace arm_compute
 #endif /* __ARM_COMPUTE_GCKERNELLIBRARY_H__ */