diff options
author | 2022-11-22 15:30:29 -0700 | |
---|---|---|
committer | 2022-11-23 10:05:35 -0700 | |
commit | 32f9e69927c2efefe6f7a138bfd291f130ccc486 (patch) | |
tree | e306d1b83f3269d8ebea2eb862ba3c7b14d81eb5 | |
parent | 86207bac10e8ad0f0459b92cb9814b165db74896 (diff) |
Allow SkiaVkRenderEngine to not be compiled
A device will use RenderEngine with either SkiaVk or SkiaGL, but never
both at the same time. Given that the choice is controlled by a
build-time value in the device's "device.mk" file, to save space, we
should allow the RenderEngine back-ends to be optionally built. For
now, we'll only do this for SkiaVkRenderEngine.
Test: Compile
Bug: 259323498
Change-Id: Id547feaee7e8aeb4e46759d3d7c9c5dbe18f5211
-rw-r--r-- | libs/renderengine/RenderEngine.cpp | 8 | ||||
-rw-r--r-- | libs/renderengine/skia/SkiaVkRenderEngine.cpp | 5 | ||||
-rw-r--r-- | libs/renderengine/skia/SkiaVkRenderEngine.h | 7 | ||||
-rw-r--r-- | libs/renderengine/tests/RenderEngineTest.cpp | 9 |
4 files changed, 28 insertions, 1 deletions
diff --git a/libs/renderengine/RenderEngine.cpp b/libs/renderengine/RenderEngine.cpp index d08c2213ad..341c011dc9 100644 --- a/libs/renderengine/RenderEngine.cpp +++ b/libs/renderengine/RenderEngine.cpp @@ -39,8 +39,12 @@ std::unique_ptr<RenderEngine> RenderEngine::create(const RenderEngineCreationArg ALOGD("RenderEngine with SkiaGL Backend"); return renderengine::skia::SkiaGLRenderEngine::create(args); case RenderEngineType::SKIA_VK: +#ifdef RE_SKIAVK ALOGD("RenderEngine with SkiaVK Backend"); return renderengine::skia::SkiaVkRenderEngine::create(args); +#else + LOG_ALWAYS_FATAL("Requested VK backend, but RE_SKIAVK is not defined!"); +#endif case RenderEngineType::SKIA_GL_THREADED: { ALOGD("Threaded RenderEngine with SkiaGL Backend"); return renderengine::threaded::RenderEngineThreaded::create( @@ -50,12 +54,16 @@ std::unique_ptr<RenderEngine> RenderEngine::create(const RenderEngineCreationArg args.renderEngineType); } case RenderEngineType::SKIA_VK_THREADED: +#ifdef RE_SKIAVK ALOGD("Threaded RenderEngine with SkiaVK Backend"); return renderengine::threaded::RenderEngineThreaded::create( [args]() { return android::renderengine::skia::SkiaVkRenderEngine::create(args); }, args.renderEngineType); +#else + LOG_ALWAYS_FATAL("Requested VK backend, but RE_SKIAVK is not defined!"); +#endif case RenderEngineType::GLES: default: ALOGD("RenderEngine with GLES Backend"); diff --git a/libs/renderengine/skia/SkiaVkRenderEngine.cpp b/libs/renderengine/skia/SkiaVkRenderEngine.cpp index f9424f0f15..2b8495c3f7 100644 --- a/libs/renderengine/skia/SkiaVkRenderEngine.cpp +++ b/libs/renderengine/skia/SkiaVkRenderEngine.cpp @@ -14,6 +14,10 @@ * limitations under the License. */ +// Allow the SkiaVkRenderEngine class to not be compiled, to save space +// NOTE: In order to build this class, define `RE_SKIAVK` in a build file. +#ifdef RE_SKIAVK + // #define LOG_NDEBUG 0 #undef LOG_TAG #define LOG_TAG "RenderEngine" @@ -673,3 +677,4 @@ void SkiaVkRenderEngine::appendBackendSpecificInfoToDump(std::string& result) { } // namespace skia } // namespace renderengine } // namespace android +#endif // RE_SKIAVK diff --git a/libs/renderengine/skia/SkiaVkRenderEngine.h b/libs/renderengine/skia/SkiaVkRenderEngine.h index 2e0cf45220..1e42b80c10 100644 --- a/libs/renderengine/skia/SkiaVkRenderEngine.h +++ b/libs/renderengine/skia/SkiaVkRenderEngine.h @@ -17,6 +17,10 @@ #ifndef SF_SKIAVKRENDERENGINE_H_ #define SF_SKIAVKRENDERENGINE_H_ +// Allow the SkiaVkRenderEngine class to not be compiled, to save space +// NOTE: In order to build this class, define `RE_SKIAVK` in a build file. +#ifdef RE_SKIAVK + #include <vk/GrVkBackendContext.h> #include "SkiaRenderEngine.h" @@ -55,4 +59,5 @@ private: } // namespace renderengine } // namespace android -#endif +#endif // RE_SKIAVK +#endif // SF_SKIAVKRENDERENGINE_H_ diff --git a/libs/renderengine/tests/RenderEngineTest.cpp b/libs/renderengine/tests/RenderEngineTest.cpp index f3f2da8a0e..7db95a7ea0 100644 --- a/libs/renderengine/tests/RenderEngineTest.cpp +++ b/libs/renderengine/tests/RenderEngineTest.cpp @@ -112,6 +112,7 @@ public: virtual bool useColorManagement() const = 0; }; +#ifdef RE_SKIAVK class SkiaVkRenderEngineFactory : public RenderEngineFactory { public: std::string name() override { return "SkiaVkRenderEngineFactory"; } @@ -152,6 +153,8 @@ class SkiaVkCMRenderEngineFactory : public SkiaVkRenderEngineFactory { public: bool useColorManagement() const override { return true; } }; +#endif // RE_SKIAVK + class SkiaGLESRenderEngineFactory : public RenderEngineFactory { public: std::string name() override { return "SkiaGLRenderEngineFactory"; } @@ -1557,11 +1560,17 @@ void RenderEngineTest::tonemap(ui::Dataspace sourceDataspace, std::function<vec3 expectBufferColor(Rect(kGreyLevels, 1), generator, 2); } +#ifdef RE_SKIAVK INSTANTIATE_TEST_SUITE_P(PerRenderEngineType, RenderEngineTest, testing::Values(std::make_shared<SkiaGLESRenderEngineFactory>(), std::make_shared<SkiaGLESCMRenderEngineFactory>(), std::make_shared<SkiaVkRenderEngineFactory>(), std::make_shared<SkiaVkCMRenderEngineFactory>())); +#else // RE_SKIAVK +INSTANTIATE_TEST_SUITE_P(PerRenderEngineType, RenderEngineTest, + testing::Values(std::make_shared<SkiaGLESRenderEngineFactory>(), + std::make_shared<SkiaGLESCMRenderEngineFactory>())); +#endif // RE_SKIAVK TEST_P(RenderEngineTest, drawLayers_noLayersToDraw) { if (!GetParam()->typeSupported()) { |