diff options
author | 2024-05-20 13:32:13 -0400 | |
---|---|---|
committer | 2024-05-31 12:05:38 -0400 | |
commit | 488101bf891623780e2f4d0eaacadc6d02e268f9 (patch) | |
tree | 8835a7bfa86cecd9018dd4cae4e115750252746a /libs/renderengine/RenderEngine.cpp | |
parent | 4a466641791cb573f2d029f283ce8a2b25974bd5 (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.cpp | 31 |
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); |