[RenderEngine] Organize RenderEngine directory.

This patch:
1. adds proper namespace renderengine to all RenderEngine code,
   and namespace gl to all GLES related code
2. creates gl/ directory for GLES backend code
3. Reorder include header files, remove unused header files.

BUG: 112585051
Test: Build, flash, run display validation
Change-Id: I81f0b8831213607cde08562958f7c38ddaf4c9e6
diff --git a/services/surfaceflinger/RenderEngine/Android.bp b/services/surfaceflinger/RenderEngine/Android.bp
index 13752f2..f62596f 100644
--- a/services/surfaceflinger/RenderEngine/Android.bp
+++ b/services/surfaceflinger/RenderEngine/Android.bp
@@ -41,18 +41,24 @@
     name: "librenderengine_sources",
     srcs: [
         "Description.cpp",
-        "GLES20RenderEngine.cpp",
-        "GLExtensions.cpp",
         "Image.cpp",
         "Mesh.cpp",
-        "Program.cpp",
-        "ProgramCache.cpp",
         "RenderEngine.cpp",
         "Surface.cpp",
         "Texture.cpp",
     ],
 }
 
+filegroup {
+    name: "librenderengine_gl_sources",
+    srcs: [
+        "gl/GLES20RenderEngine.cpp",
+        "gl/GLExtensions.cpp",
+        "gl/Program.cpp",
+        "gl/ProgramCache.cpp",
+    ],
+}
+
 cc_library_static {
     name: "librenderengine",
     defaults: ["librenderengine_defaults"],
@@ -68,6 +74,7 @@
     ],
     srcs: [
         ":librenderengine_sources",
+        ":librenderengine_gl_sources",
     ],
     lto: {
         thin: true,
diff --git a/services/surfaceflinger/RenderEngine/Description.cpp b/services/surfaceflinger/RenderEngine/Description.cpp
index d5f2103..b7522da 100644
--- a/services/surfaceflinger/RenderEngine/Description.cpp
+++ b/services/surfaceflinger/RenderEngine/Description.cpp
@@ -14,14 +14,14 @@
  * limitations under the License.
  */
 
-#include <renderengine/Description.h>
+#include <renderengine/private/Description.h>
 
 #include <stdint.h>
-#include <string.h>
 
 #include <utils/TypeHelpers.h>
 
 namespace android {
+namespace renderengine {
 
 void Description::setPremultipliedAlpha(bool premultipliedAlpha) {
     mPremultipliedAlpha = premultipliedAlpha;
@@ -95,4 +95,5 @@
     mDisplayMaxLuminance = maxLuminance;
 }
 
-} /* namespace android */
+}  // namespace renderengine
+}  // namespace android
diff --git a/services/surfaceflinger/RenderEngine/Image.cpp b/services/surfaceflinger/RenderEngine/Image.cpp
index ee140eb..cabcace 100644
--- a/services/surfaceflinger/RenderEngine/Image.cpp
+++ b/services/surfaceflinger/RenderEngine/Image.cpp
@@ -19,12 +19,11 @@
 #include <vector>
 
 #include <log/log.h>
-
-#include <renderengine/GLExtensions.h>
 #include <renderengine/RenderEngine.h>
+#include "gl/GLExtensions.h"
 
 namespace android {
-namespace RE {
+namespace renderengine {
 
 Image::~Image() = default;
 
@@ -43,7 +42,7 @@
     attrs.push_back(EGL_IMAGE_PRESERVED_KHR);
     attrs.push_back(EGL_TRUE);
 
-    if (isProtected && GLExtensions::getInstance().hasProtectedContent()) {
+    if (isProtected && gl::GLExtensions::getInstance().hasProtectedContent()) {
         attrs.push_back(EGL_PROTECTED_CONTENT_EXT);
         attrs.push_back(EGL_TRUE);
     }
@@ -74,6 +73,6 @@
     return true;
 }
 
-} // namespace impl
-} // namespace RE
-} // namespace android
+}  // namespace impl
+}  // namespace renderengine
+}  // namespace android
diff --git a/services/surfaceflinger/RenderEngine/Mesh.cpp b/services/surfaceflinger/RenderEngine/Mesh.cpp
index 43852eb..5a3c2c8 100644
--- a/services/surfaceflinger/RenderEngine/Mesh.cpp
+++ b/services/surfaceflinger/RenderEngine/Mesh.cpp
@@ -19,6 +19,7 @@
 #include <utils/Log.h>
 
 namespace android {
+namespace renderengine {
 
 Mesh::Mesh(Primitive primitive, size_t vertexCount, size_t vertexSize, size_t texCoordSize)
       : mVertexCount(vertexCount),
@@ -94,4 +95,5 @@
     return mStride;
 }
 
-} /* namespace android */
+}  // namespace renderengine
+}  // namespace android
diff --git a/services/surfaceflinger/RenderEngine/RenderEngine.cpp b/services/surfaceflinger/RenderEngine/RenderEngine.cpp
index 594b1ed..c843428 100644
--- a/services/surfaceflinger/RenderEngine/RenderEngine.cpp
+++ b/services/surfaceflinger/RenderEngine/RenderEngine.cpp
@@ -16,29 +16,30 @@
 
 #include <renderengine/RenderEngine.h>
 
+#include <vector>
+
 #include <android/hardware/configstore/1.0/ISurfaceFlingerConfigs.h>
 #include <configstore/Utils.h>
 #include <log/log.h>
 #include <private/gui/SyncFeatures.h>
-#include <renderengine/GLES20RenderEngine.h>
-#include <renderengine/GLExtensions.h>
 #include <renderengine/Image.h>
 #include <renderengine/Mesh.h>
 #include <renderengine/Surface.h>
 #include <ui/Rect.h>
 #include <ui/Region.h>
-
-#include <vector>
+#include <utils/KeyedVector.h>
+#include "gl/GLES20RenderEngine.h"
+#include "gl/GLExtensions.h"
+#include "gl/ProgramCache.h"
 
 using namespace android::hardware::configstore;
 using namespace android::hardware::configstore::V1_0;
+using namespace android::renderengine::gl;
 
 extern "C" EGLAPI const char* eglQueryStringImplementationANDROID(EGLDisplay dpy, EGLint name);
 
-// ---------------------------------------------------------------------------
 namespace android {
-namespace RE {
-// ---------------------------------------------------------------------------
+namespace renderengine {
 
 RenderEngine::~RenderEngine() = default;
 
@@ -187,22 +188,22 @@
     return mEGLDisplay == eglGetCurrentDisplay() && mEGLContext == eglGetCurrentContext();
 }
 
-std::unique_ptr<RE::Surface> RenderEngine::createSurface() {
+std::unique_ptr<renderengine::Surface> RenderEngine::createSurface() {
     return std::make_unique<Surface>(*this);
 }
 
-std::unique_ptr<RE::Image> RenderEngine::createImage() {
+std::unique_ptr<renderengine::Image> RenderEngine::createImage() {
     return std::make_unique<Image>(*this);
 }
 
-bool RenderEngine::setCurrentSurface(const android::RE::Surface& surface) {
-    // Note: RE::Surface is an abstract interface. This implementation only ever
-    // creates RE::impl::Surface's, so it is safe to just cast to the actual
+bool RenderEngine::setCurrentSurface(const android::renderengine::Surface& surface) {
+    // Note: renderengine::Surface is an abstract interface. This implementation only ever
+    // creates renderengine::impl::Surface's, so it is safe to just cast to the actual
     // type.
-    return setCurrentSurface(static_cast<const android::RE::impl::Surface&>(surface));
+    return setCurrentSurface(static_cast<const android::renderengine::impl::Surface&>(surface));
 }
 
-bool RenderEngine::setCurrentSurface(const android::RE::impl::Surface& surface) {
+bool RenderEngine::setCurrentSurface(const android::renderengine::impl::Surface& surface) {
     bool success = true;
     EGLSurface eglSurface = surface.getEGLSurface();
     if (eglSurface != eglGetCurrentSurface(EGL_DRAW)) {
@@ -374,14 +375,16 @@
     glDeleteTextures(count, names);
 }
 
-void RenderEngine::bindExternalTextureImage(uint32_t texName, const android::RE::Image& image) {
-    // Note: RE::Image is an abstract interface. This implementation only ever
-    // creates RE::impl::Image's, so it is safe to just cast to the actual type.
-    return bindExternalTextureImage(texName, static_cast<const android::RE::impl::Image&>(image));
+void RenderEngine::bindExternalTextureImage(uint32_t texName,
+                                            const android::renderengine::Image& image) {
+    // Note: renderengine::Image is an abstract interface. This implementation only ever
+    // creates renderengine::impl::Image's, so it is safe to just cast to the actual type.
+    return bindExternalTextureImage(texName,
+                                    static_cast<const android::renderengine::impl::Image&>(image));
 }
 
 void RenderEngine::bindExternalTextureImage(uint32_t texName,
-                                            const android::RE::impl::Image& image) {
+                                            const android::renderengine::impl::Image& image) {
     const GLenum target = GL_TEXTURE_EXTERNAL_OES;
 
     glBindTexture(target, texName);
@@ -405,10 +408,9 @@
     result.appendFormat("%s\n", extensions.getExtensions());
 }
 
-// ---------------------------------------------------------------------------
-
-void RenderEngine::bindNativeBufferAsFrameBuffer(ANativeWindowBuffer* buffer,
-                                                 RE::BindNativeBufferAsFramebuffer* bindHelper) {
+void RenderEngine::bindNativeBufferAsFrameBuffer(
+        ANativeWindowBuffer* buffer,
+        renderengine::BindNativeBufferAsFramebuffer* bindHelper) {
     bindHelper->mImage = eglCreateImageKHR(mEGLDisplay, EGL_NO_CONTEXT, EGL_NATIVE_BUFFER_ANDROID,
                                            buffer, nullptr);
     if (bindHelper->mImage == EGL_NO_IMAGE_KHR) {
@@ -426,7 +428,8 @@
     bindHelper->mStatus = glStatus == GL_FRAMEBUFFER_COMPLETE_OES ? NO_ERROR : BAD_VALUE;
 }
 
-void RenderEngine::unbindNativeBufferAsFrameBuffer(RE::BindNativeBufferAsFramebuffer* bindHelper) {
+void RenderEngine::unbindNativeBufferAsFrameBuffer(
+        renderengine::BindNativeBufferAsFramebuffer* bindHelper) {
     if (bindHelper->mImage == EGL_NO_IMAGE_KHR) {
         return;
     }
@@ -598,8 +601,7 @@
     ProgramCache::getInstance().primeCache(mFeatureFlags & USE_COLOR_MANAGEMENT);
 }
 
-// ---------------------------------------------------------------------------
 
-} // namespace impl
-} // namespace RE
-} // namespace android
+}  // namespace impl
+}  // namespace renderengine
+}  // namespace android
diff --git a/services/surfaceflinger/RenderEngine/Surface.cpp b/services/surfaceflinger/RenderEngine/Surface.cpp
index 3e98ab4..b9f095b 100644
--- a/services/surfaceflinger/RenderEngine/Surface.cpp
+++ b/services/surfaceflinger/RenderEngine/Surface.cpp
@@ -21,7 +21,7 @@
 #include <ui/PixelFormat.h>
 
 namespace android {
-namespace RE {
+namespace renderengine {
 
 Surface::~Surface() = default;
 
@@ -106,6 +106,6 @@
     return querySurface(EGL_HEIGHT);
 }
 
-} // namespace impl
-} // namespace RE
-} // namespace android
+}  // namespace impl
+}  // namespace renderengine
+}  // namespace android
diff --git a/services/surfaceflinger/RenderEngine/Texture.cpp b/services/surfaceflinger/RenderEngine/Texture.cpp
index c07ba08..5eabbcf 100644
--- a/services/surfaceflinger/RenderEngine/Texture.cpp
+++ b/services/surfaceflinger/RenderEngine/Texture.cpp
@@ -16,9 +16,8 @@
 
 #include <renderengine/Texture.h>
 
-#include <string.h>
-
 namespace android {
+namespace renderengine {
 
 Texture::Texture()
       : mTextureName(0), mTextureTarget(TEXTURE_2D), mWidth(0), mHeight(0), mFiltering(false) {}
@@ -74,4 +73,5 @@
     return mHeight;
 }
 
-} /* namespace android */
+}  // namespace renderengine
+}  // namespace android
diff --git a/services/surfaceflinger/RenderEngine/GLES20RenderEngine.cpp b/services/surfaceflinger/RenderEngine/gl/GLES20RenderEngine.cpp
similarity index 96%
rename from services/surfaceflinger/RenderEngine/GLES20RenderEngine.cpp
rename to services/surfaceflinger/RenderEngine/gl/GLES20RenderEngine.cpp
index 617ba76..e0f1850 100644
--- a/services/surfaceflinger/RenderEngine/GLES20RenderEngine.cpp
+++ b/services/surfaceflinger/RenderEngine/gl/GLES20RenderEngine.cpp
@@ -19,28 +19,26 @@
 #define LOG_TAG "RenderEngine"
 #define ATRACE_TAG ATRACE_TAG_GRAPHICS
 
-#include <renderengine/GLES20RenderEngine.h>
+#include "GLES20RenderEngine.h"
+
+#include <math.h>
+#include <fstream>
+#include <sstream>
 
 #include <GLES2/gl2.h>
 #include <GLES2/gl2ext.h>
-#include <renderengine/Description.h>
+#include <cutils/compiler.h>
 #include <renderengine/Mesh.h>
-#include <renderengine/Program.h>
-#include <renderengine/ProgramCache.h>
 #include <renderengine/Texture.h>
+#include <renderengine/private/Description.h>
 #include <ui/ColorSpace.h>
 #include <ui/DebugUtils.h>
 #include <ui/Rect.h>
 #include <utils/String8.h>
 #include <utils/Trace.h>
+#include "Program.h"
+#include "ProgramCache.h"
 
-#include <cutils/compiler.h>
-#include <math.h>
-
-#include <fstream>
-#include <sstream>
-
-// ---------------------------------------------------------------------------
 bool checkGlError(const char* op, int lineNumber) {
     bool errorFound = false;
     GLint error = glGetError();
@@ -100,11 +98,9 @@
     file.write(reinterpret_cast<char*>(outBuffer.data()), outBuffer.size());
 }
 
-// ---------------------------------------------------------------------------
 namespace android {
-namespace RE {
-namespace impl {
-// ---------------------------------------------------------------------------
+namespace renderengine {
+namespace gl {
 
 using ui::Dataspace;
 
@@ -463,11 +459,9 @@
     return (isInputHdrDataSpace || isOutputHdrDataSpace) && inputTransfer != outputTransfer;
 }
 
-// ---------------------------------------------------------------------------
-} // namespace impl
-} // namespace RE
-} // namespace android
-// ---------------------------------------------------------------------------
+}  // namespace gl
+}  // namespace renderengine
+}  // namespace android
 
 #if defined(__gl_h_)
 #error "don't include gl/gl.h in this file"
diff --git a/services/surfaceflinger/RenderEngine/include/renderengine/GLES20RenderEngine.h b/services/surfaceflinger/RenderEngine/gl/GLES20RenderEngine.h
similarity index 85%
rename from services/surfaceflinger/RenderEngine/include/renderengine/GLES20RenderEngine.h
rename to services/surfaceflinger/RenderEngine/gl/GLES20RenderEngine.h
index 0e9efdb..c830184 100644
--- a/services/surfaceflinger/RenderEngine/include/renderengine/GLES20RenderEngine.h
+++ b/services/surfaceflinger/RenderEngine/gl/GLES20RenderEngine.h
@@ -21,22 +21,21 @@
 #include <sys/types.h>
 
 #include <GLES2/gl2.h>
-#include <renderengine/Description.h>
-#include <renderengine/ProgramCache.h>
 #include <renderengine/RenderEngine.h>
+#include <renderengine/private/Description.h>
 
-// ---------------------------------------------------------------------------
 namespace android {
-// ---------------------------------------------------------------------------
 
 class String8;
+
+namespace renderengine {
+
 class Mesh;
 class Texture;
 
-namespace RE {
-namespace impl {
+namespace gl {
 
-class GLES20RenderEngine : public RenderEngine {
+class GLES20RenderEngine : public impl::RenderEngine {
     GLuint mProtectedTexName;
     GLint mMaxViewportDims[2];
     GLint mMaxTextureSize;
@@ -52,7 +51,6 @@
     };
 
     Description mState;
-    Vector<Group> mGroupStack;
 
     virtual void bindImageAsFramebuffer(EGLImageKHR image, uint32_t* texName, uint32_t* fbName,
                                         uint32_t* status);
@@ -112,10 +110,8 @@
     bool needsXYZTransformMatrix() const;
 };
 
-// ---------------------------------------------------------------------------
-} // namespace impl
-} // namespace RE
-} // namespace android
-// ---------------------------------------------------------------------------
+}  // namespace gl
+}  // namespace renderengine
+}  // namespace android
 
 #endif /* SF_GLES20RENDERENGINE_H_ */
diff --git a/services/surfaceflinger/RenderEngine/GLExtensions.cpp b/services/surfaceflinger/RenderEngine/gl/GLExtensions.cpp
similarity index 92%
rename from services/surfaceflinger/RenderEngine/GLExtensions.cpp
rename to services/surfaceflinger/RenderEngine/gl/GLExtensions.cpp
index b4fb2a1..6f50ea7 100644
--- a/services/surfaceflinger/RenderEngine/GLExtensions.cpp
+++ b/services/surfaceflinger/RenderEngine/gl/GLExtensions.cpp
@@ -14,16 +14,17 @@
  * limitations under the License.
  */
 
-#include <renderengine/GLExtensions.h>
+#include "GLExtensions.h"
 
 #include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
 
-namespace android {
-// ---------------------------------------------------------------------------
+ANDROID_SINGLETON_STATIC_INSTANCE(android::renderengine::gl::GLExtensions)
 
-ANDROID_SINGLETON_STATIC_INSTANCE(GLExtensions)
+namespace android {
+namespace renderengine {
+namespace gl {
 
 SortedVector<String8> GLExtensions::parseExtensionString(char const* extensions) {
     SortedVector<String8> list;
@@ -120,5 +121,6 @@
     return mEGLExtensionList.indexOf(s) >= 0;
 }
 
-// ---------------------------------------------------------------------------
-}; // namespace android
+}  // namespace gl
+}  // namespace renderengine
+}  // namespace android
diff --git a/services/surfaceflinger/RenderEngine/include/renderengine/GLExtensions.h b/services/surfaceflinger/RenderEngine/gl/GLExtensions.h
similarity index 93%
rename from services/surfaceflinger/RenderEngine/include/renderengine/GLExtensions.h
rename to services/surfaceflinger/RenderEngine/gl/GLExtensions.h
index 1ff0d24..efdd8b7 100644
--- a/services/surfaceflinger/RenderEngine/include/renderengine/GLExtensions.h
+++ b/services/surfaceflinger/RenderEngine/gl/GLExtensions.h
@@ -24,13 +24,13 @@
 #include <EGL/eglext.h>
 #include <GLES/gl.h>
 #include <GLES/glext.h>
-
 #include <utils/Singleton.h>
 #include <utils/SortedVector.h>
 #include <utils/String8.h>
 
 namespace android {
-// ---------------------------------------------------------------------------
+namespace renderengine {
+namespace gl {
 
 class GLExtensions : public Singleton<GLExtensions> {
     friend class Singleton<GLExtensions>;
@@ -82,7 +82,8 @@
     bool hasEGLExtension(char const* extension) const;
 };
 
-// ---------------------------------------------------------------------------
-}; // namespace android
+}  // namespace gl
+}  // namespace renderengine
+}  // namespace android
 
 #endif // ANDROID_SF_GLEXTENSION_H
diff --git a/services/surfaceflinger/RenderEngine/Program.cpp b/services/surfaceflinger/RenderEngine/gl/Program.cpp
similarity index 96%
rename from services/surfaceflinger/RenderEngine/Program.cpp
rename to services/surfaceflinger/RenderEngine/gl/Program.cpp
index 87371dc..4d6839b 100644
--- a/services/surfaceflinger/RenderEngine/Program.cpp
+++ b/services/surfaceflinger/RenderEngine/gl/Program.cpp
@@ -14,17 +14,19 @@
  * limitations under the License.
  */
 
-#include <renderengine/Program.h>
+#include "Program.h"
 
 #include <stdint.h>
 
 #include <log/log.h>
 #include <math/mat4.h>
-#include <renderengine/Description.h>
-#include <renderengine/ProgramCache.h>
+#include <renderengine/private/Description.h>
 #include <utils/String8.h>
+#include "ProgramCache.h"
 
 namespace android {
+namespace renderengine {
+namespace gl {
 
 Program::Program(const ProgramCache::Key& /*needs*/, const char* vertex, const char* fragment)
       : mInitialized(false) {
@@ -152,4 +154,6 @@
     glUniformMatrix4fv(mProjectionMatrixLoc, 1, GL_FALSE, desc.mProjectionMatrix.asArray());
 }
 
-} /* namespace android */
+}  // namespace gl
+}  // namespace renderengine
+}  // namespace android
diff --git a/services/surfaceflinger/RenderEngine/include/renderengine/Program.h b/services/surfaceflinger/RenderEngine/gl/Program.h
similarity index 92%
rename from services/surfaceflinger/RenderEngine/include/renderengine/Program.h
rename to services/surfaceflinger/RenderEngine/gl/Program.h
index 5e621cb..bb429ef 100644
--- a/services/surfaceflinger/RenderEngine/include/renderengine/Program.h
+++ b/services/surfaceflinger/RenderEngine/gl/Program.h
@@ -20,13 +20,16 @@
 #include <stdint.h>
 
 #include <GLES2/gl2.h>
-#include <renderengine/Description.h>
-#include <renderengine/ProgramCache.h>
+#include <renderengine/private/Description.h>
+#include "ProgramCache.h"
 
 namespace android {
 
 class String8;
 
+namespace renderengine {
+namespace gl {
+
 /*
  * Abstracts a GLSL program comprising a vertex and fragment shader
  */
@@ -85,6 +88,8 @@
     GLint mOutputTransformMatrixLoc;
 };
 
-} /* namespace android */
+}  // namespace gl
+}  // namespace renderengine
+}  // namespace android
 
 #endif /* SF_RENDER_ENGINE_PROGRAM_H */
diff --git a/services/surfaceflinger/RenderEngine/ProgramCache.cpp b/services/surfaceflinger/RenderEngine/gl/ProgramCache.cpp
similarity index 98%
rename from services/surfaceflinger/RenderEngine/ProgramCache.cpp
rename to services/surfaceflinger/RenderEngine/gl/ProgramCache.cpp
index b7101e0..a19c1f1 100644
--- a/services/surfaceflinger/RenderEngine/ProgramCache.cpp
+++ b/services/surfaceflinger/RenderEngine/gl/ProgramCache.cpp
@@ -16,17 +16,20 @@
 
 #define ATRACE_TAG ATRACE_TAG_GRAPHICS
 
-#include <renderengine/ProgramCache.h>
+#include "ProgramCache.h"
 
 #include <GLES2/gl2.h>
 #include <GLES2/gl2ext.h>
-#include <renderengine/Description.h>
-#include <renderengine/Program.h>
+#include <renderengine/private/Description.h>
 #include <utils/String8.h>
 #include <utils/Trace.h>
+#include "Program.h"
+
+ANDROID_SINGLETON_STATIC_INSTANCE(android::renderengine::gl::ProgramCache)
 
 namespace android {
-// -----------------------------------------------------------------------------------------------
+namespace renderengine {
+namespace gl {
 
 /*
  * A simple formatter class to automatically add the endl and
@@ -73,10 +76,6 @@
     return f;
 }
 
-// -----------------------------------------------------------------------------------------------
-
-ANDROID_SINGLETON_STATIC_INSTANCE(ProgramCache)
-
 ProgramCache::ProgramCache() {}
 
 ProgramCache::~ProgramCache() {}
@@ -685,4 +684,6 @@
     }
 }
 
-} /* namespace android */
+}  // namespace gl
+}  // namespace renderengine
+}  // namespace android
diff --git a/services/surfaceflinger/RenderEngine/include/renderengine/ProgramCache.h b/services/surfaceflinger/RenderEngine/gl/ProgramCache.h
similarity index 96%
rename from services/surfaceflinger/RenderEngine/include/renderengine/ProgramCache.h
rename to services/surfaceflinger/RenderEngine/gl/ProgramCache.h
index a5bee45..ea77a2d 100644
--- a/services/surfaceflinger/RenderEngine/include/renderengine/ProgramCache.h
+++ b/services/surfaceflinger/RenderEngine/gl/ProgramCache.h
@@ -18,17 +18,23 @@
 #define SF_RENDER_ENGINE_PROGRAMCACHE_H
 
 #include <GLES2/gl2.h>
-#include <renderengine/Description.h>
+#include <renderengine/private/Description.h>
 #include <utils/KeyedVector.h>
 #include <utils/Singleton.h>
 #include <utils/TypeHelpers.h>
 
 namespace android {
 
+class String8;
+
+namespace renderengine {
+
 class Description;
+
+namespace gl {
+
 class Formatter;
 class Program;
-class String8;
 
 /*
  * This class generates GLSL programs suitable to handle a given
@@ -188,8 +194,11 @@
     DefaultKeyedVector<Key, Program*> mCache;
 };
 
-ANDROID_BASIC_TYPES_TRAITS(ProgramCache::Key)
+}  // namespace gl
+}  // namespace renderengine
 
-} /* namespace android */
+ANDROID_BASIC_TYPES_TRAITS(renderengine::gl::ProgramCache::Key)
+
+}  // namespace android
 
 #endif /* SF_RENDER_ENGINE_PROGRAMCACHE_H */
diff --git a/services/surfaceflinger/RenderEngine/include/renderengine/Image.h b/services/surfaceflinger/RenderEngine/include/renderengine/Image.h
index c38fe0a..9b34b68 100644
--- a/services/surfaceflinger/RenderEngine/include/renderengine/Image.h
+++ b/services/surfaceflinger/RenderEngine/include/renderengine/Image.h
@@ -24,7 +24,7 @@
 struct ANativeWindowBuffer;
 
 namespace android {
-namespace RE {
+namespace renderengine {
 
 class Image {
 public:
@@ -36,7 +36,7 @@
 
 class RenderEngine;
 
-class Image : public RE::Image {
+class Image : public renderengine::Image {
 public:
     explicit Image(const RenderEngine& engine);
     ~Image() override;
@@ -55,6 +55,6 @@
     EGLImageKHR mEGLImage = EGL_NO_IMAGE_KHR;
 };
 
-} // namespace impl
-} // namespace RE
-} // namespace android
+}  // namespace impl
+}  // namespace renderengine
+}  // namespace android
diff --git a/services/surfaceflinger/RenderEngine/include/renderengine/Mesh.h b/services/surfaceflinger/RenderEngine/include/renderengine/Mesh.h
index d0a9ac0..39ca2f7 100644
--- a/services/surfaceflinger/RenderEngine/include/renderengine/Mesh.h
+++ b/services/surfaceflinger/RenderEngine/include/renderengine/Mesh.h
@@ -20,6 +20,7 @@
 #include <stdint.h>
 
 namespace android {
+namespace renderengine {
 
 class Mesh {
 public:
@@ -97,5 +98,6 @@
     Primitive mPrimitive;
 };
 
-} /* namespace android */
+}  // namespace renderengine
+}  // namespace android
 #endif /* SF_RENDER_ENGINE_MESH_H */
diff --git a/services/surfaceflinger/RenderEngine/include/renderengine/RenderEngine.h b/services/surfaceflinger/RenderEngine/include/renderengine/RenderEngine.h
index 6213784..c532adc 100644
--- a/services/surfaceflinger/RenderEngine/include/renderengine/RenderEngine.h
+++ b/services/surfaceflinger/RenderEngine/include/renderengine/RenderEngine.h
@@ -17,10 +17,9 @@
 #ifndef SF_RENDERENGINE_H_
 #define SF_RENDERENGINE_H_
 
-#include <memory>
-
 #include <stdint.h>
 #include <sys/types.h>
+#include <memory>
 
 #include <EGL/egl.h>
 #include <EGL/eglext.h>
@@ -33,21 +32,19 @@
 
 struct ANativeWindowBuffer;
 
-// ---------------------------------------------------------------------------
 namespace android {
-// ---------------------------------------------------------------------------
 
 class String8;
 class Rect;
 class Region;
+
+namespace renderengine {
+
+class BindNativeBufferAsFramebuffer;
 class Mesh;
-class Texture;
-
-namespace RE {
-
 class Image;
 class Surface;
-class BindNativeBufferAsFramebuffer;
+class Texture;
 
 namespace impl {
 class RenderEngine;
@@ -61,8 +58,8 @@
 
     virtual ~RenderEngine() = 0;
 
-    virtual std::unique_ptr<RE::Surface> createSurface() = 0;
-    virtual std::unique_ptr<RE::Image> createImage() = 0;
+    virtual std::unique_ptr<renderengine::Surface> createSurface() = 0;
+    virtual std::unique_ptr<renderengine::Image> createImage() = 0;
 
     virtual void primeCache() const = 0;
 
@@ -73,7 +70,7 @@
     virtual bool useWaitSync() const = 0;
 
     virtual bool isCurrent() const = 0;
-    virtual bool setCurrentSurface(const RE::Surface& surface) = 0;
+    virtual bool setCurrentSurface(const renderengine::Surface& surface) = 0;
     virtual void resetCurrentSurface() = 0;
 
     // helpers
@@ -97,11 +94,11 @@
     virtual void disableScissor() = 0;
     virtual void genTextures(size_t count, uint32_t* names) = 0;
     virtual void deleteTextures(size_t count, uint32_t const* names) = 0;
-    virtual void bindExternalTextureImage(uint32_t texName, const RE::Image& image) = 0;
+    virtual void bindExternalTextureImage(uint32_t texName, const renderengine::Image& image) = 0;
     virtual void readPixels(size_t l, size_t b, size_t w, size_t h, uint32_t* pixels) = 0;
     virtual void bindNativeBufferAsFrameBuffer(ANativeWindowBuffer* buffer,
-                                               RE::BindNativeBufferAsFramebuffer* bindHelper) = 0;
-    virtual void unbindNativeBufferAsFrameBuffer(RE::BindNativeBufferAsFramebuffer* bindHelper) = 0;
+                                               BindNativeBufferAsFramebuffer* bindHelper) = 0;
+    virtual void unbindNativeBufferAsFrameBuffer(BindNativeBufferAsFramebuffer* bindHelper) = 0;
 
     // set-up
     virtual void checkErrors() const;
@@ -155,7 +152,7 @@
 class Image;
 class Surface;
 
-class RenderEngine : public RE::RenderEngine {
+class RenderEngine : public renderengine::RenderEngine {
     enum GlesVersion {
         GLES_VERSION_1_0 = 0x10000,
         GLES_VERSION_1_1 = 0x10001,
@@ -185,8 +182,8 @@
 
     // RenderEngine interface implementation
 
-    std::unique_ptr<RE::Surface> createSurface() override;
-    std::unique_ptr<RE::Image> createImage() override;
+    std::unique_ptr<renderengine::Surface> createSurface() override;
+    std::unique_ptr<renderengine::Image> createImage() override;
 
     void primeCache() const override;
 
@@ -197,7 +194,7 @@
     bool useWaitSync() const override;
 
     bool isCurrent() const;
-    bool setCurrentSurface(const RE::Surface& surface) override;
+    bool setCurrentSurface(const renderengine::Surface& surface) override;
     void resetCurrentSurface() override;
 
     // synchronization
@@ -223,7 +220,7 @@
     void disableScissor() override;
     void genTextures(size_t count, uint32_t* names) override;
     void deleteTextures(size_t count, uint32_t const* names) override;
-    void bindExternalTextureImage(uint32_t texName, const RE::Image& image) override;
+    void bindExternalTextureImage(uint32_t texName, const renderengine::Image& image) override;
     void readPixels(size_t l, size_t b, size_t w, size_t h, uint32_t* pixels) override;
 
     void checkErrors() const override;
@@ -235,12 +232,14 @@
     EGLConfig getEGLConfig() const;
 
     // Common implementation
-    bool setCurrentSurface(const RE::impl::Surface& surface);
-    void bindExternalTextureImage(uint32_t texName, const RE::impl::Image& image);
+    bool setCurrentSurface(const renderengine::impl::Surface& surface);
+    void bindExternalTextureImage(uint32_t texName, const renderengine::impl::Image& image);
 
-    void bindNativeBufferAsFrameBuffer(ANativeWindowBuffer* buffer,
-                                       RE::BindNativeBufferAsFramebuffer* bindHelper) override;
-    void unbindNativeBufferAsFrameBuffer(RE::BindNativeBufferAsFramebuffer* bindHelper) override;
+    void bindNativeBufferAsFrameBuffer(
+            ANativeWindowBuffer* buffer,
+            renderengine::BindNativeBufferAsFramebuffer* bindHelper) override;
+    void unbindNativeBufferAsFrameBuffer(
+            renderengine::BindNativeBufferAsFramebuffer* bindHelper) override;
 
     // Overriden by each specialization
     virtual void bindImageAsFramebuffer(EGLImageKHR image, uint32_t* texName, uint32_t* fbName,
@@ -248,8 +247,8 @@
     virtual void unbindFramebuffer(uint32_t texName, uint32_t fbName) = 0;
 };
 
-} // namespace impl
-} // namespace RE
-} // namespace android
+}  // namespace impl
+}  // namespace renderengine
+}  // namespace android
 
 #endif /* SF_RENDERENGINE_H_ */
diff --git a/services/surfaceflinger/RenderEngine/include/renderengine/Surface.h b/services/surfaceflinger/RenderEngine/include/renderengine/Surface.h
index d4d3d8c..aaa9c7b 100644
--- a/services/surfaceflinger/RenderEngine/include/renderengine/Surface.h
+++ b/services/surfaceflinger/RenderEngine/include/renderengine/Surface.h
@@ -23,7 +23,7 @@
 struct ANativeWindow;
 
 namespace android {
-namespace RE {
+namespace renderengine {
 
 class Surface {
 public:
@@ -48,7 +48,7 @@
 
 class RenderEngine;
 
-class Surface final : public RE::Surface {
+class Surface final : public renderengine::Surface {
 public:
     Surface(const RenderEngine& engine);
     ~Surface();
@@ -56,7 +56,7 @@
     Surface(const Surface&) = delete;
     Surface& operator=(const Surface&) = delete;
 
-    // RE::Surface implementation
+    // renderengine::Surface implementation
     void setCritical(bool enable) override { mCritical = enable; }
     void setAsync(bool enable) override { mAsync = enable; }
 
@@ -90,6 +90,6 @@
     EGLSurface mEGLSurface = EGL_NO_SURFACE;
 };
 
-} // namespace impl
-} // namespace RE
-} // namespace android
+}  // namespace impl
+}  // namespace renderengine
+}  // namespace android
diff --git a/services/surfaceflinger/RenderEngine/include/renderengine/Texture.h b/services/surfaceflinger/RenderEngine/include/renderengine/Texture.h
index 56b6b31..130037c 100644
--- a/services/surfaceflinger/RenderEngine/include/renderengine/Texture.h
+++ b/services/surfaceflinger/RenderEngine/include/renderengine/Texture.h
@@ -14,13 +14,15 @@
  * limitations under the License.
  */
 
-#include <math/mat4.h>
-#include <stdint.h>
-
 #ifndef SF_RENDER_ENGINE_TEXTURE_H
 #define SF_RENDER_ENGINE_TEXTURE_H
 
+#include <stdint.h>
+
+#include <math/mat4.h>
+
 namespace android {
+namespace renderengine {
 
 class Texture {
     uint32_t mTextureName;
@@ -52,5 +54,6 @@
     size_t getHeight() const;
 };
 
-} /* namespace android */
+}  // namespace renderengine
+}  // namespace android
 #endif /* SF_RENDER_ENGINE_TEXTURE_H */
diff --git a/services/surfaceflinger/RenderEngine/include/renderengine/Description.h b/services/surfaceflinger/RenderEngine/include/renderengine/private/Description.h
similarity index 93%
rename from services/surfaceflinger/RenderEngine/include/renderengine/Description.h
rename to services/surfaceflinger/RenderEngine/include/renderengine/private/Description.h
index 9bc7e1c..a6301ae 100644
--- a/services/surfaceflinger/RenderEngine/include/renderengine/Description.h
+++ b/services/surfaceflinger/RenderEngine/include/renderengine/private/Description.h
@@ -14,15 +14,18 @@
  * limitations under the License.
  */
 
-#include <GLES2/gl2.h>
-#include <renderengine/Texture.h>
-
 #ifndef SF_RENDER_ENGINE_DESCRIPTION_H_
 #define SF_RENDER_ENGINE_DESCRIPTION_H_
 
-namespace android {
+#include <renderengine/Texture.h>
 
+namespace android {
+namespace renderengine {
+
+namespace gl {
 class Program;
+class ProgramCache;
+}
 
 /*
  * This holds the state of the rendering engine. This class is used
@@ -63,8 +66,8 @@
     void setDisplayMaxLuminance(const float maxLuminance);
 
 private:
-    friend class Program;
-    friend class ProgramCache;
+    friend class gl::Program;
+    friend class gl::ProgramCache;
 
     // whether textures are premultiplied
     bool mPremultipliedAlpha = false;
@@ -94,6 +97,7 @@
     mat4 mOutputTransformMatrix;
 };
 
-} /* namespace android */
+}  // namespace renderengine
+}  // namespace android
 
 #endif /* SF_RENDER_ENGINE_DESCRIPTION_H_ */