[RenderEngine] Strip GLES implementation off Image and Surface.

Image and Surface contain GLES implementation details. This patch moves them to
dedicated classes and move all Surface/Image manipulation methods from
impl::RenderEngine to gl::GLES20RenderEngine.

BUG: 112585051
Test: Build, flash, boot and run some display validation.
Change-Id: I77327f79082dff8e87e0a9472baae0c794f047bf
diff --git a/services/surfaceflinger/RenderEngine/gl/GLES20RenderEngine.h b/services/surfaceflinger/RenderEngine/gl/GLES20RenderEngine.h
index c830184..e256f07 100644
--- a/services/surfaceflinger/RenderEngine/gl/GLES20RenderEngine.h
+++ b/services/surfaceflinger/RenderEngine/gl/GLES20RenderEngine.h
@@ -35,6 +35,9 @@
 
 namespace gl {
 
+class GLImage;
+class GLSurface;
+
 class GLES20RenderEngine : public impl::RenderEngine {
     GLuint mProtectedTexName;
     GLint mMaxViewportDims[2];
@@ -60,6 +63,18 @@
     GLES20RenderEngine(uint32_t featureFlags); // See RenderEngine::FeatureFlag
     virtual ~GLES20RenderEngine();
 
+    std::unique_ptr<renderengine::Surface> createSurface() override;
+    std::unique_ptr<renderengine::Image> createImage() override;
+
+    void primeCache() const override;
+
+    bool isCurrent() const;
+    bool setCurrentSurface(const Surface& surface) override;
+    void resetCurrentSurface() override;
+
+    void bindExternalTextureImage(uint32_t texName, const renderengine::Image& image) override;
+
+
 protected:
     virtual void dump(String8& result);
     virtual void setViewportAndProjection(size_t vpw, size_t vph, Rect sourceCrop, size_t hwh,