Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 32f9e699 authored by Ian Elliott's avatar Ian Elliott
Browse files

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
parent 86207bac
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -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");
+5 −0
Original line number Diff line number Diff line
@@ -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
+6 −1
Original line number Diff line number Diff line
@@ -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_
+9 −0
Original line number Diff line number Diff line
@@ -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()) {