summaryrefslogtreecommitdiff
path: root/libs/renderengine/RenderEngine.cpp
diff options
context:
space:
mode:
author Nolan Scobie <nscobie@google.com> 2024-05-20 13:32:13 -0400
committer Nolan Scobie <nscobie@google.com> 2024-05-31 12:05:38 -0400
commit488101bf891623780e2f4d0eaacadc6d02e268f9 (patch)
tree8835a7bfa86cecd9018dd4cae4e115750252746a /libs/renderengine/RenderEngine.cpp
parent4a466641791cb573f2d029f283ce8a2b25974bd5 (diff)
[RenderEngine] Only compile Graphite if either Graphite flag is enabled
RE-Graphite will be *compiled* if either the graphite_renderengine or force_compile_graphite_renderengine ready-only flag is enabled at compile time (inclusive OR). RE-Graphite can be compiled and *enabled* by: 1. setting just graphite_renderengine=true, or 2. setting both force_compile_graphite_renderengine=true and the debug.renderengine.graphite system property to true. Why RenderEngine needs a dep on libsurfaceflingerflags now: libsurfaceflinger_common pulls in SF's FlagManager, which is layered on top of the API that's autogenerated for SF's aconfig module, libsurfaceflingerflags. The COM_ANDROID_GRAPHICS_SURFACEFLINGER_FLAGS(...) macro is defined by com_android_graphics_surfaceflinger_flags.h in that latter aconfig module, and that header is not exported by the higher-level FlagManager code. Bug: b/293371537 Bug: b/331678326 Bug: b/341728634 Test: boot and bloaty (see b/331678326) Flag: com.android.graphics.surfaceflinger.flags.graphite_renderengine Change-Id: I9d0b15bda08430552716a9a1f7cd59d91ee7b9a6
Diffstat (limited to 'libs/renderengine/RenderEngine.cpp')
-rw-r--r--libs/renderengine/RenderEngine.cpp31
1 files changed, 28 insertions, 3 deletions
diff --git a/libs/renderengine/RenderEngine.cpp b/libs/renderengine/RenderEngine.cpp
index 1c60563b25..bc3976d9f1 100644
--- a/libs/renderengine/RenderEngine.cpp
+++ b/libs/renderengine/RenderEngine.cpp
@@ -22,24 +22,49 @@
#include "skia/SkiaGLRenderEngine.h"
#include "threaded/RenderEngineThreaded.h"
+#include <com_android_graphics_surfaceflinger_flags.h>
#include <cutils/properties.h>
#include <log/log.h>
+// TODO: b/341728634 - Clean up conditional compilation.
+#if COM_ANDROID_GRAPHICS_SURFACEFLINGER_FLAGS(GRAPHITE_RENDERENGINE) || \
+ COM_ANDROID_GRAPHICS_SURFACEFLINGER_FLAGS(FORCE_COMPILE_GRAPHITE_RENDERENGINE)
+#define COMPILE_GRAPHITE_RENDERENGINE 1
+#else
+#define COMPILE_GRAPHITE_RENDERENGINE 0
+#endif
+
namespace android {
namespace renderengine {
std::unique_ptr<RenderEngine> RenderEngine::create(const RenderEngineCreationArgs& args) {
threaded::CreateInstanceFactory createInstanceFactory;
+// TODO: b/341728634 - Clean up conditional compilation.
+#if COMPILE_GRAPHITE_RENDERENGINE
+ const RenderEngine::SkiaBackend actualSkiaBackend = args.skiaBackend;
+#else
+ if (args.skiaBackend == RenderEngine::SkiaBackend::GRAPHITE) {
+ ALOGE("RenderEngine with Graphite Skia backend was requested, but Graphite was not "
+ "included in the build. Falling back to Ganesh (%s)",
+ args.graphicsApi == RenderEngine::GraphicsApi::GL ? "GL" : "Vulkan");
+ }
+ const RenderEngine::SkiaBackend actualSkiaBackend = RenderEngine::SkiaBackend::GANESH;
+#endif
+
ALOGD("%sRenderEngine with %s Backend (%s)", args.threaded == Threaded::YES ? "Threaded " : "",
args.graphicsApi == GraphicsApi::GL ? "SkiaGL" : "SkiaVK",
- args.skiaBackend == SkiaBackend::GANESH ? "Ganesh" : "Graphite");
+ actualSkiaBackend == SkiaBackend::GANESH ? "Ganesh" : "Graphite");
- if (args.skiaBackend == SkiaBackend::GRAPHITE) {
+// TODO: b/341728634 - Clean up conditional compilation.
+#if COMPILE_GRAPHITE_RENDERENGINE
+ if (actualSkiaBackend == SkiaBackend::GRAPHITE) {
createInstanceFactory = [args]() {
return android::renderengine::skia::GraphiteVkRenderEngine::create(args);
};
- } else { // GANESH
+ } else
+#endif
+ { // GANESH
if (args.graphicsApi == GraphicsApi::VK) {
createInstanceFactory = [args]() {
return android::renderengine::skia::GaneshVkRenderEngine::create(args);