[RenderEngine] Add Android.bp to RenderEngine

Besides make RenderEngine as static library, this patch also intentionally
moves all header files to public includable directory. The header files will be
structured better in the progress of stripping off GL implementation out of
public interfaces.

BUG: 112585051
Test: Build, flash and do display validation
Change-Id: Ife6e27896a2ccee6a23781a43ebc508e2587eb71
diff --git a/services/surfaceflinger/RenderEngine/Android.bp b/services/surfaceflinger/RenderEngine/Android.bp
new file mode 100644
index 0000000..13752f2
--- /dev/null
+++ b/services/surfaceflinger/RenderEngine/Android.bp
@@ -0,0 +1,75 @@
+// TODO(b/112585051) Add to VNDK once moved to libs/
+cc_defaults {
+    name: "renderengine_defaults",
+    cflags: [
+        "-DLOG_TAG=\"RenderEngine\"",
+        "-Wall",
+        "-Werror",
+        "-Wthread-safety",
+        "-Wunused",
+        "-Wunreachable-code",
+    ],
+    cppflags: ["-std=c++1z"],
+}
+
+cc_defaults {
+    name: "librenderengine_defaults",
+    defaults: ["renderengine_defaults"],
+    cflags: [
+        "-DGL_GLEXT_PROTOTYPES",
+        "-DEGL_EGLEXT_PROTOTYPES",
+    ],
+    shared_libs: [
+        "android.hardware.configstore-utils",
+        "android.hardware.configstore@1.0",
+        "android.hardware.configstore@1.1",
+        "android.hardware.configstore@1.2",
+        "libcutils",
+        "libEGL",
+        "libGLESv1_CM",
+        "libGLESv2",
+        "libgui",
+        "liblog",
+        "libui",
+        "libutils",
+    ],
+    local_include_dirs: ["include"],
+    export_include_dirs: ["include"],
+}
+
+filegroup {
+    name: "librenderengine_sources",
+    srcs: [
+        "Description.cpp",
+        "GLES20RenderEngine.cpp",
+        "GLExtensions.cpp",
+        "Image.cpp",
+        "Mesh.cpp",
+        "Program.cpp",
+        "ProgramCache.cpp",
+        "RenderEngine.cpp",
+        "Surface.cpp",
+        "Texture.cpp",
+    ],
+}
+
+cc_library_static {
+    name: "librenderengine",
+    defaults: ["librenderengine_defaults"],
+    double_loadable: true,
+
+    clang: true,
+    cflags: [
+        "-fvisibility=hidden",
+        "-Werror=format",
+    ],
+    cppflags: [
+        "-fwhole-program-vtables", // requires ThinLTO
+    ],
+    srcs: [
+        ":librenderengine_sources",
+    ],
+    lto: {
+        thin: true,
+    },
+}
diff --git a/services/surfaceflinger/RenderEngine/Description.cpp b/services/surfaceflinger/RenderEngine/Description.cpp
index d4a2bb4..d5f2103 100644
--- a/services/surfaceflinger/RenderEngine/Description.cpp
+++ b/services/surfaceflinger/RenderEngine/Description.cpp
@@ -14,13 +14,13 @@
  * limitations under the License.
  */
 
+#include <renderengine/Description.h>
+
 #include <stdint.h>
 #include <string.h>
 
 #include <utils/TypeHelpers.h>
 
-#include "Description.h"
-
 namespace android {
 
 void Description::setPremultipliedAlpha(bool premultipliedAlpha) {
diff --git a/services/surfaceflinger/RenderEngine/GLES20RenderEngine.cpp b/services/surfaceflinger/RenderEngine/GLES20RenderEngine.cpp
index 136d12f..617ba76 100644
--- a/services/surfaceflinger/RenderEngine/GLES20RenderEngine.cpp
+++ b/services/surfaceflinger/RenderEngine/GLES20RenderEngine.cpp
@@ -19,26 +19,24 @@
 #define LOG_TAG "RenderEngine"
 #define ATRACE_TAG ATRACE_TAG_GRAPHICS
 
+#include <renderengine/GLES20RenderEngine.h>
+
 #include <GLES2/gl2.h>
 #include <GLES2/gl2ext.h>
-
+#include <renderengine/Description.h>
+#include <renderengine/Mesh.h>
+#include <renderengine/Program.h>
+#include <renderengine/ProgramCache.h>
+#include <renderengine/Texture.h>
 #include <ui/ColorSpace.h>
 #include <ui/DebugUtils.h>
 #include <ui/Rect.h>
-
 #include <utils/String8.h>
 #include <utils/Trace.h>
 
 #include <cutils/compiler.h>
 #include <math.h>
 
-#include "Description.h"
-#include "GLES20RenderEngine.h"
-#include "Mesh.h"
-#include "Program.h"
-#include "ProgramCache.h"
-#include "Texture.h"
-
 #include <fstream>
 #include <sstream>
 
diff --git a/services/surfaceflinger/RenderEngine/GLExtensions.cpp b/services/surfaceflinger/RenderEngine/GLExtensions.cpp
index 23480b4..b4fb2a1 100644
--- a/services/surfaceflinger/RenderEngine/GLExtensions.cpp
+++ b/services/surfaceflinger/RenderEngine/GLExtensions.cpp
@@ -14,12 +14,12 @@
  * limitations under the License.
  */
 
+#include <renderengine/GLExtensions.h>
+
 #include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
 
-#include "GLExtensions.h"
-
 namespace android {
 // ---------------------------------------------------------------------------
 
diff --git a/services/surfaceflinger/RenderEngine/Image.cpp b/services/surfaceflinger/RenderEngine/Image.cpp
index 6e0a880..ee140eb 100644
--- a/services/surfaceflinger/RenderEngine/Image.cpp
+++ b/services/surfaceflinger/RenderEngine/Image.cpp
@@ -14,14 +14,14 @@
  * limitations under the License.
  */
 
-#include "Image.h"
+#include <renderengine/Image.h>
 
 #include <vector>
 
 #include <log/log.h>
 
-#include "GLExtensions.h"
-#include "RenderEngine.h"
+#include <renderengine/GLExtensions.h>
+#include <renderengine/RenderEngine.h>
 
 namespace android {
 namespace RE {
diff --git a/services/surfaceflinger/RenderEngine/Mesh.cpp b/services/surfaceflinger/RenderEngine/Mesh.cpp
index 6a62b1d..43852eb 100644
--- a/services/surfaceflinger/RenderEngine/Mesh.cpp
+++ b/services/surfaceflinger/RenderEngine/Mesh.cpp
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#include "Mesh.h"
+#include <renderengine/Mesh.h>
 
 #include <utils/Log.h>
 
diff --git a/services/surfaceflinger/RenderEngine/Program.cpp b/services/surfaceflinger/RenderEngine/Program.cpp
index fe536f0..87371dc 100644
--- a/services/surfaceflinger/RenderEngine/Program.cpp
+++ b/services/surfaceflinger/RenderEngine/Program.cpp
@@ -14,15 +14,15 @@
  * limitations under the License.
  */
 
+#include <renderengine/Program.h>
+
 #include <stdint.h>
 
 #include <log/log.h>
-#include <utils/String8.h>
-
 #include <math/mat4.h>
-#include "Description.h"
-#include "Program.h"
-#include "ProgramCache.h"
+#include <renderengine/Description.h>
+#include <renderengine/ProgramCache.h>
+#include <utils/String8.h>
 
 namespace android {
 
diff --git a/services/surfaceflinger/RenderEngine/ProgramCache.cpp b/services/surfaceflinger/RenderEngine/ProgramCache.cpp
index a1d0561..b7101e0 100644
--- a/services/surfaceflinger/RenderEngine/ProgramCache.cpp
+++ b/services/surfaceflinger/RenderEngine/ProgramCache.cpp
@@ -16,16 +16,15 @@
 
 #define ATRACE_TAG ATRACE_TAG_GRAPHICS
 
+#include <renderengine/ProgramCache.h>
+
 #include <GLES2/gl2.h>
 #include <GLES2/gl2ext.h>
-
+#include <renderengine/Description.h>
+#include <renderengine/Program.h>
 #include <utils/String8.h>
 #include <utils/Trace.h>
 
-#include "Description.h"
-#include "Program.h"
-#include "ProgramCache.h"
-
 namespace android {
 // -----------------------------------------------------------------------------------------------
 
diff --git a/services/surfaceflinger/RenderEngine/RenderEngine.cpp b/services/surfaceflinger/RenderEngine/RenderEngine.cpp
index e5dbe2f..594b1ed 100644
--- a/services/surfaceflinger/RenderEngine/RenderEngine.cpp
+++ b/services/surfaceflinger/RenderEngine/RenderEngine.cpp
@@ -14,22 +14,21 @@
  * limitations under the License.
  */
 
-#include <log/log.h>
-#include <ui/Rect.h>
-#include <ui/Region.h>
-
-#include "GLES20RenderEngine.h"
-#include "GLExtensions.h"
-#include "Image.h"
-#include "Mesh.h"
-#include "RenderEngine.h"
-
-#include <SurfaceFlinger.h>
-#include <vector>
+#include <renderengine/RenderEngine.h>
 
 #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>
 
 using namespace android::hardware::configstore;
 using namespace android::hardware::configstore::V1_0;
diff --git a/services/surfaceflinger/RenderEngine/Surface.cpp b/services/surfaceflinger/RenderEngine/Surface.cpp
index 3bf42fb..3e98ab4 100644
--- a/services/surfaceflinger/RenderEngine/Surface.cpp
+++ b/services/surfaceflinger/RenderEngine/Surface.cpp
@@ -14,11 +14,10 @@
  * limitations under the License.
  */
 
-#include "Surface.h"
-
-#include "RenderEngine.h"
+#include <renderengine/Surface.h>
 
 #include <log/log.h>
+#include <renderengine/RenderEngine.h>
 #include <ui/PixelFormat.h>
 
 namespace android {
diff --git a/services/surfaceflinger/RenderEngine/Texture.cpp b/services/surfaceflinger/RenderEngine/Texture.cpp
index 351430f..c07ba08 100644
--- a/services/surfaceflinger/RenderEngine/Texture.cpp
+++ b/services/surfaceflinger/RenderEngine/Texture.cpp
@@ -14,9 +14,9 @@
  * limitations under the License.
  */
 
-#include <string.h>
+#include <renderengine/Texture.h>
 
-#include "Texture.h"
+#include <string.h>
 
 namespace android {
 
diff --git a/services/surfaceflinger/RenderEngine/Description.h b/services/surfaceflinger/RenderEngine/include/renderengine/Description.h
similarity index 98%
rename from services/surfaceflinger/RenderEngine/Description.h
rename to services/surfaceflinger/RenderEngine/include/renderengine/Description.h
index 6ebb340..9bc7e1c 100644
--- a/services/surfaceflinger/RenderEngine/Description.h
+++ b/services/surfaceflinger/RenderEngine/include/renderengine/Description.h
@@ -15,7 +15,7 @@
  */
 
 #include <GLES2/gl2.h>
-#include "Texture.h"
+#include <renderengine/Texture.h>
 
 #ifndef SF_RENDER_ENGINE_DESCRIPTION_H_
 #define SF_RENDER_ENGINE_DESCRIPTION_H_
diff --git a/services/surfaceflinger/RenderEngine/GLES20RenderEngine.h b/services/surfaceflinger/RenderEngine/include/renderengine/GLES20RenderEngine.h
similarity index 96%
rename from services/surfaceflinger/RenderEngine/GLES20RenderEngine.h
rename to services/surfaceflinger/RenderEngine/include/renderengine/GLES20RenderEngine.h
index d8cb73b..0e9efdb 100644
--- a/services/surfaceflinger/RenderEngine/GLES20RenderEngine.h
+++ b/services/surfaceflinger/RenderEngine/include/renderengine/GLES20RenderEngine.h
@@ -21,10 +21,9 @@
 #include <sys/types.h>
 
 #include <GLES2/gl2.h>
-
-#include "Description.h"
-#include "ProgramCache.h"
-#include "RenderEngine.h"
+#include <renderengine/Description.h>
+#include <renderengine/ProgramCache.h>
+#include <renderengine/RenderEngine.h>
 
 // ---------------------------------------------------------------------------
 namespace android {
diff --git a/services/surfaceflinger/RenderEngine/GLExtensions.h b/services/surfaceflinger/RenderEngine/include/renderengine/GLExtensions.h
similarity index 99%
rename from services/surfaceflinger/RenderEngine/GLExtensions.h
rename to services/surfaceflinger/RenderEngine/include/renderengine/GLExtensions.h
index a6a5053..1ff0d24 100644
--- a/services/surfaceflinger/RenderEngine/GLExtensions.h
+++ b/services/surfaceflinger/RenderEngine/include/renderengine/GLExtensions.h
@@ -20,15 +20,15 @@
 #include <stdint.h>
 #include <sys/types.h>
 
-#include <utils/Singleton.h>
-#include <utils/SortedVector.h>
-#include <utils/String8.h>
-
 #include <EGL/egl.h>
 #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 {
 // ---------------------------------------------------------------------------
 
diff --git a/services/surfaceflinger/RenderEngine/Image.h b/services/surfaceflinger/RenderEngine/include/renderengine/Image.h
similarity index 100%
rename from services/surfaceflinger/RenderEngine/Image.h
rename to services/surfaceflinger/RenderEngine/include/renderengine/Image.h
diff --git a/services/surfaceflinger/RenderEngine/Mesh.h b/services/surfaceflinger/RenderEngine/include/renderengine/Mesh.h
similarity index 100%
rename from services/surfaceflinger/RenderEngine/Mesh.h
rename to services/surfaceflinger/RenderEngine/include/renderengine/Mesh.h
diff --git a/services/surfaceflinger/RenderEngine/Program.h b/services/surfaceflinger/RenderEngine/include/renderengine/Program.h
similarity index 96%
rename from services/surfaceflinger/RenderEngine/Program.h
rename to services/surfaceflinger/RenderEngine/include/renderengine/Program.h
index ae796c5..5e621cb 100644
--- a/services/surfaceflinger/RenderEngine/Program.h
+++ b/services/surfaceflinger/RenderEngine/include/renderengine/Program.h
@@ -20,9 +20,8 @@
 #include <stdint.h>
 
 #include <GLES2/gl2.h>
-
-#include "Description.h"
-#include "ProgramCache.h"
+#include <renderengine/Description.h>
+#include <renderengine/ProgramCache.h>
 
 namespace android {
 
diff --git a/services/surfaceflinger/RenderEngine/ProgramCache.h b/services/surfaceflinger/RenderEngine/include/renderengine/ProgramCache.h
similarity index 99%
rename from services/surfaceflinger/RenderEngine/ProgramCache.h
rename to services/surfaceflinger/RenderEngine/include/renderengine/ProgramCache.h
index 424633e..a5bee45 100644
--- a/services/surfaceflinger/RenderEngine/ProgramCache.h
+++ b/services/surfaceflinger/RenderEngine/include/renderengine/ProgramCache.h
@@ -18,13 +18,11 @@
 #define SF_RENDER_ENGINE_PROGRAMCACHE_H
 
 #include <GLES2/gl2.h>
-
+#include <renderengine/Description.h>
 #include <utils/KeyedVector.h>
 #include <utils/Singleton.h>
 #include <utils/TypeHelpers.h>
 
-#include "Description.h"
-
 namespace android {
 
 class Description;
diff --git a/services/surfaceflinger/RenderEngine/RenderEngine.h b/services/surfaceflinger/RenderEngine/include/renderengine/RenderEngine.h
similarity index 100%
rename from services/surfaceflinger/RenderEngine/RenderEngine.h
rename to services/surfaceflinger/RenderEngine/include/renderengine/RenderEngine.h
diff --git a/services/surfaceflinger/RenderEngine/Surface.h b/services/surfaceflinger/RenderEngine/include/renderengine/Surface.h
similarity index 100%
rename from services/surfaceflinger/RenderEngine/Surface.h
rename to services/surfaceflinger/RenderEngine/include/renderengine/Surface.h
diff --git a/services/surfaceflinger/RenderEngine/Texture.h b/services/surfaceflinger/RenderEngine/include/renderengine/Texture.h
similarity index 100%
rename from services/surfaceflinger/RenderEngine/Texture.h
rename to services/surfaceflinger/RenderEngine/include/renderengine/Texture.h