diff options
author | 2024-01-24 15:21:05 -0500 | |
---|---|---|
committer | 2024-01-25 10:56:43 -0500 | |
commit | 696bf9334787b34445a09be620d543b1d8bb03e9 (patch) | |
tree | 916dda95adf99e02d28758757f345661b0e9f20c | |
parent | 5ef5500b16a0f2fcc5884025acddbf60f743c518 (diff) |
Split RenderEngineType into two enums
Primary motivation is to prepare for making switching RenderEngine to
use Graphite. This is orthogonal to whether or not we're using
RenderEngineThreaded. The enum already encodes orthogonal types, so
split them up in the natural way, rather than adding more combos.
Replace RenderEngine::getRenderEngineType() with isThreaded(), as the
only caller really wants to know whether it's threaded. This allows
fixing a bug where the SKIA_VK_THREADED backend didn't offload
renderScreenImpl for no good reason. (This is not a behavior change
for users or dogfooders, since no one is currently using
SKIA_VK_THREADED.)
Add a vulkan_renderengine option to FlagManager, which will switch
RenderEngine to use Skia's *Ganesh* Vulkan backend. Though this is not
what we intend to ship, this will allow us to get more soak time on
Vulkan before making the switch to Graphite.
Update the comments for PROPERTY_DEBUG_RENDERENGINE_BACKEND, which were
already out of date. Specify that it will *override* the default
settings, which will now be determined by flags.
Bug: 293371537
Test: manual (sysprops)
Test: atest librenderengine_test
Test: atest librenderengine_bench
Change-Id: Ib9b8abb25f4894f1b50b6286720c2abf89ca74e2
-rw-r--r-- | libs/renderengine/RenderEngine.cpp | 36 | ||||
-rw-r--r-- | libs/renderengine/benchmark/RenderEngineBench.cpp | 56 | ||||
-rw-r--r-- | libs/renderengine/include/renderengine/RenderEngine.h | 47 | ||||
-rw-r--r-- | libs/renderengine/skia/SkiaGLRenderEngine.cpp | 2 | ||||
-rw-r--r-- | libs/renderengine/skia/SkiaRenderEngine.cpp | 9 | ||||
-rw-r--r-- | libs/renderengine/skia/SkiaRenderEngine.h | 2 | ||||
-rw-r--r-- | libs/renderengine/skia/SkiaVkRenderEngine.cpp | 2 | ||||
-rw-r--r-- | libs/renderengine/tests/RenderEngineTest.cpp | 195 | ||||
-rw-r--r-- | libs/renderengine/tests/RenderEngineThreadedTest.cpp | 3 | ||||
-rw-r--r-- | libs/renderengine/threaded/RenderEngineThreaded.cpp | 9 | ||||
-rw-r--r-- | libs/renderengine/threaded/RenderEngineThreaded.h | 5 | ||||
-rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 33 | ||||
-rw-r--r-- | services/surfaceflinger/common/FlagManager.cpp | 2 | ||||
-rw-r--r-- | services/surfaceflinger/common/include/common/FlagManager.h | 1 |
14 files changed, 187 insertions, 215 deletions
diff --git a/libs/renderengine/RenderEngine.cpp b/libs/renderengine/RenderEngine.cpp index 3e1ac33d57..233134d2db 100644 --- a/libs/renderengine/RenderEngine.cpp +++ b/libs/renderengine/RenderEngine.cpp @@ -28,28 +28,28 @@ namespace android { namespace renderengine { std::unique_ptr<RenderEngine> RenderEngine::create(const RenderEngineCreationArgs& args) { - switch (args.renderEngineType) { - case RenderEngineType::SKIA_GL: + if (args.threaded == Threaded::YES) { + switch (args.graphicsApi) { + case GraphicsApi::GL: + ALOGD("Threaded RenderEngine with SkiaGL Backend"); + return renderengine::threaded::RenderEngineThreaded::create([args]() { + return android::renderengine::skia::SkiaGLRenderEngine::create(args); + }); + case GraphicsApi::VK: + ALOGD("Threaded RenderEngine with SkiaVK Backend"); + return renderengine::threaded::RenderEngineThreaded::create([args]() { + return android::renderengine::skia::SkiaVkRenderEngine::create(args); + }); + } + } + + switch (args.graphicsApi) { + case GraphicsApi::GL: ALOGD("RenderEngine with SkiaGL Backend"); return renderengine::skia::SkiaGLRenderEngine::create(args); - case RenderEngineType::SKIA_VK: + case GraphicsApi::VK: ALOGD("RenderEngine with SkiaVK Backend"); return renderengine::skia::SkiaVkRenderEngine::create(args); - case RenderEngineType::SKIA_GL_THREADED: { - ALOGD("Threaded RenderEngine with SkiaGL Backend"); - return renderengine::threaded::RenderEngineThreaded::create( - [args]() { - return android::renderengine::skia::SkiaGLRenderEngine::create(args); - }, - args.renderEngineType); - } - case RenderEngineType::SKIA_VK_THREADED: - ALOGD("Threaded RenderEngine with SkiaVK Backend"); - return renderengine::threaded::RenderEngineThreaded::create( - [args]() { - return android::renderengine::skia::SkiaVkRenderEngine::create(args); - }, - args.renderEngineType); } } diff --git a/libs/renderengine/benchmark/RenderEngineBench.cpp b/libs/renderengine/benchmark/RenderEngineBench.cpp index a7f1df9a9b..101f519e55 100644 --- a/libs/renderengine/benchmark/RenderEngineBench.cpp +++ b/libs/renderengine/benchmark/RenderEngineBench.cpp @@ -30,46 +30,6 @@ using namespace android; using namespace android::renderengine; /////////////////////////////////////////////////////////////////////////////// -// Helpers for Benchmark::Apply -/////////////////////////////////////////////////////////////////////////////// - -std::string RenderEngineTypeName(RenderEngine::RenderEngineType type) { - switch (type) { - case RenderEngine::RenderEngineType::SKIA_GL_THREADED: - return "skiaglthreaded"; - case RenderEngine::RenderEngineType::SKIA_GL: - return "skiagl"; - case RenderEngine::RenderEngineType::SKIA_VK: - return "skiavk"; - case RenderEngine::RenderEngineType::SKIA_VK_THREADED: - return "skiavkthreaded"; - } -} - -/** - * Passed (indirectly - see RunSkiaGLThreaded) to Benchmark::Apply to create a - * Benchmark which specifies which RenderEngineType it uses. - * - * This simplifies calling ->Arg(type)->Arg(type) and provides strings to make - * it obvious which version is being run. - * - * @param b The benchmark family - * @param type The type of RenderEngine to use. - */ -static void AddRenderEngineType(benchmark::internal::Benchmark* b, - RenderEngine::RenderEngineType type) { - b->Arg(static_cast<int64_t>(type)); - b->ArgName(RenderEngineTypeName(type)); -} - -/** - * Run a benchmark once using SKIA_GL_THREADED. - */ -static void RunSkiaGLThreaded(benchmark::internal::Benchmark* b) { - AddRenderEngineType(b, RenderEngine::RenderEngineType::SKIA_GL_THREADED); -} - -/////////////////////////////////////////////////////////////////////////////// // Helpers for calling drawLayers /////////////////////////////////////////////////////////////////////////////// @@ -104,7 +64,8 @@ std::pair<uint32_t, uint32_t> getDisplaySize() { return std::pair<uint32_t, uint32_t>(width, height); } -static std::unique_ptr<RenderEngine> createRenderEngine(RenderEngine::RenderEngineType type) { +static std::unique_ptr<RenderEngine> createRenderEngine(RenderEngine::Threaded threaded, + RenderEngine::GraphicsApi graphicsApi) { auto args = RenderEngineCreationArgs::Builder() .setPixelFormat(static_cast<int>(ui::PixelFormat::RGBA_8888)) .setImageCacheSize(1) @@ -112,7 +73,8 @@ static std::unique_ptr<RenderEngine> createRenderEngine(RenderEngine::RenderEngi .setPrecacheToneMapperShaderOnly(false) .setSupportsBackgroundBlur(true) .setContextPriority(RenderEngine::ContextPriority::REALTIME) - .setRenderEngineType(type) + .setThreaded(threaded) + .setGraphicsApi(graphicsApi) .build(); return RenderEngine::create(args); } @@ -214,8 +176,11 @@ static void benchDrawLayers(RenderEngine& re, const std::vector<LayerSettings>& // Benchmarks /////////////////////////////////////////////////////////////////////////////// -void BM_blur(benchmark::State& benchState) { - auto re = createRenderEngine(static_cast<RenderEngine::RenderEngineType>(benchState.range())); +template <class... Args> +void BM_blur(benchmark::State& benchState, Args&&... args) { + auto args_tuple = std::make_tuple(std::move(args)...); + auto re = createRenderEngine(static_cast<RenderEngine::Threaded>(std::get<0>(args_tuple)), + static_cast<RenderEngine::GraphicsApi>(std::get<1>(args_tuple))); // Initially use cpu access so we can decode into it with AImageDecoder. auto [width, height] = getDisplaySize(); @@ -259,4 +224,5 @@ void BM_blur(benchmark::State& benchState) { benchDrawLayers(*re, layers, benchState, "blurred"); } -BENCHMARK(BM_blur)->Apply(RunSkiaGLThreaded); +BENCHMARK_CAPTURE(BM_blur, SkiaGLThreaded, RenderEngine::Threaded::YES, + RenderEngine::GraphicsApi::GL); diff --git a/libs/renderengine/include/renderengine/RenderEngine.h b/libs/renderengine/include/renderengine/RenderEngine.h index 818d0350c0..7047358e62 100644 --- a/libs/renderengine/include/renderengine/RenderEngine.h +++ b/libs/renderengine/include/renderengine/RenderEngine.h @@ -33,7 +33,7 @@ #include <memory> /** - * Allows to set RenderEngine backend to GLES (default) or SkiaGL (NOT yet supported). + * Allows to override the RenderEngine backend. */ #define PROPERTY_DEBUG_RENDERENGINE_BACKEND "debug.renderengine.backend" @@ -92,11 +92,14 @@ public: REALTIME = 4, }; - enum class RenderEngineType { - SKIA_GL = 3, - SKIA_GL_THREADED = 4, - SKIA_VK = 5, - SKIA_VK_THREADED = 6, + enum class Threaded { + NO, + YES, + }; + + enum class GraphicsApi { + GL, + VK, }; static std::unique_ptr<RenderEngine> create(const RenderEngineCreationArgs& args); @@ -176,10 +179,9 @@ public: // query is required to be thread safe. virtual bool supportsBackgroundBlur() = 0; - // Returns the current type of RenderEngine instance that was created. // TODO(b/180767535): This is only implemented to allow for backend-specific behavior, which // we should not allow in general, so remove this. - RenderEngineType getRenderEngineType() const { return mRenderEngineType; } + bool isThreaded() const { return mThreaded == Threaded::YES; } static void validateInputBufferUsage(const sp<GraphicBuffer>&); static void validateOutputBufferUsage(const sp<GraphicBuffer>&); @@ -191,9 +193,9 @@ public: virtual void setEnableTracing(bool /*tracingEnabled*/) {} protected: - RenderEngine() : RenderEngine(RenderEngineType::SKIA_GL) {} + RenderEngine() : RenderEngine(Threaded::NO) {} - RenderEngine(RenderEngineType type) : mRenderEngineType(type) {} + RenderEngine(Threaded threaded) : mThreaded(threaded) {} // Maps GPU resources for this buffer. // Note that work may be deferred to an additional thread, i.e. this call @@ -228,7 +230,7 @@ protected: friend class impl::ExternalTexture; friend class threaded::RenderEngineThreaded; friend class RenderEngineTest_cleanupPostRender_cleansUpOnce_Test; - const RenderEngineType mRenderEngineType; + const Threaded mThreaded; // Update protectedContext mode depending on whether or not any layer has a protected buffer. void updateProtectedContext(const std::vector<LayerSettings>&, @@ -251,7 +253,8 @@ struct RenderEngineCreationArgs { bool precacheToneMapperShaderOnly; bool supportsBackgroundBlur; RenderEngine::ContextPriority contextPriority; - RenderEngine::RenderEngineType renderEngineType; + RenderEngine::Threaded threaded; + RenderEngine::GraphicsApi graphicsApi; struct Builder; @@ -261,14 +264,16 @@ private: bool _enableProtectedContext, bool _precacheToneMapperShaderOnly, bool _supportsBackgroundBlur, RenderEngine::ContextPriority _contextPriority, - RenderEngine::RenderEngineType _renderEngineType) + RenderEngine::Threaded _threaded, + RenderEngine::GraphicsApi _graphicsApi) : pixelFormat(_pixelFormat), imageCacheSize(_imageCacheSize), enableProtectedContext(_enableProtectedContext), precacheToneMapperShaderOnly(_precacheToneMapperShaderOnly), supportsBackgroundBlur(_supportsBackgroundBlur), contextPriority(_contextPriority), - renderEngineType(_renderEngineType) {} + threaded(_threaded), + graphicsApi(_graphicsApi) {} RenderEngineCreationArgs() = delete; }; @@ -299,14 +304,18 @@ struct RenderEngineCreationArgs::Builder { this->contextPriority = contextPriority; return *this; } - Builder& setRenderEngineType(RenderEngine::RenderEngineType renderEngineType) { - this->renderEngineType = renderEngineType; + Builder& setThreaded(RenderEngine::Threaded threaded) { + this->threaded = threaded; + return *this; + } + Builder& setGraphicsApi(RenderEngine::GraphicsApi graphicsApi) { + this->graphicsApi = graphicsApi; return *this; } RenderEngineCreationArgs build() const { return RenderEngineCreationArgs(pixelFormat, imageCacheSize, enableProtectedContext, precacheToneMapperShaderOnly, supportsBackgroundBlur, - contextPriority, renderEngineType); + contextPriority, threaded, graphicsApi); } private: @@ -317,8 +326,8 @@ private: bool precacheToneMapperShaderOnly = false; bool supportsBackgroundBlur = false; RenderEngine::ContextPriority contextPriority = RenderEngine::ContextPriority::MEDIUM; - RenderEngine::RenderEngineType renderEngineType = - RenderEngine::RenderEngineType::SKIA_GL_THREADED; + RenderEngine::Threaded threaded = RenderEngine::Threaded::YES; + RenderEngine::GraphicsApi graphicsApi = RenderEngine::GraphicsApi::GL; }; } // namespace renderengine diff --git a/libs/renderengine/skia/SkiaGLRenderEngine.cpp b/libs/renderengine/skia/SkiaGLRenderEngine.cpp index d688b51793..fea4129ec0 100644 --- a/libs/renderengine/skia/SkiaGLRenderEngine.cpp +++ b/libs/renderengine/skia/SkiaGLRenderEngine.cpp @@ -268,7 +268,7 @@ EGLConfig SkiaGLRenderEngine::chooseEglConfig(EGLDisplay display, int format, bo SkiaGLRenderEngine::SkiaGLRenderEngine(const RenderEngineCreationArgs& args, EGLDisplay display, EGLContext ctxt, EGLSurface placeholder, EGLContext protectedContext, EGLSurface protectedPlaceholder) - : SkiaRenderEngine(args.renderEngineType, static_cast<PixelFormat>(args.pixelFormat), + : SkiaRenderEngine(args.threaded, static_cast<PixelFormat>(args.pixelFormat), args.supportsBackgroundBlur), mEGLDisplay(display), mEGLContext(ctxt), diff --git a/libs/renderengine/skia/SkiaRenderEngine.cpp b/libs/renderengine/skia/SkiaRenderEngine.cpp index 3729be6ca2..fc84bbf283 100644 --- a/libs/renderengine/skia/SkiaRenderEngine.cpp +++ b/libs/renderengine/skia/SkiaRenderEngine.cpp @@ -269,9 +269,9 @@ void SkiaRenderEngine::setEnableTracing(bool tracingEnabled) { SkAndroidFrameworkTraceUtil::setEnableTracing(tracingEnabled); } -SkiaRenderEngine::SkiaRenderEngine(RenderEngineType type, PixelFormat pixelFormat, +SkiaRenderEngine::SkiaRenderEngine(Threaded threaded, PixelFormat pixelFormat, bool supportsBackgroundBlur) - : RenderEngine(type), mDefaultPixelFormat(pixelFormat) { + : RenderEngine(threaded), mDefaultPixelFormat(pixelFormat) { if (supportsBackgroundBlur) { ALOGD("Background Blurs Enabled"); mBlurFilter = new KawaseBlurFilter(); @@ -389,10 +389,9 @@ void SkiaRenderEngine::ensureGrContextsCreated() { void SkiaRenderEngine::mapExternalTextureBuffer(const sp<GraphicBuffer>& buffer, bool isRenderable) { // Only run this if RE is running on its own thread. This - // way the access to GL operations is guaranteed to be happening on the + // way the access to GL/VK operations is guaranteed to be happening on the // same thread. - if (mRenderEngineType != RenderEngineType::SKIA_GL_THREADED && - mRenderEngineType != RenderEngineType::SKIA_VK_THREADED) { + if (!isThreaded()) { return; } // We don't attempt to map a buffer if the buffer contains protected content. In GL this is diff --git a/libs/renderengine/skia/SkiaRenderEngine.h b/libs/renderengine/skia/SkiaRenderEngine.h index ac134afa64..e88d44cca6 100644 --- a/libs/renderengine/skia/SkiaRenderEngine.h +++ b/libs/renderengine/skia/SkiaRenderEngine.h @@ -59,7 +59,7 @@ class BlurFilter; class SkiaRenderEngine : public RenderEngine { public: static std::unique_ptr<SkiaRenderEngine> create(const RenderEngineCreationArgs& args); - SkiaRenderEngine(RenderEngineType type, PixelFormat pixelFormat, bool supportsBackgroundBlur); + SkiaRenderEngine(Threaded, PixelFormat pixelFormat, bool supportsBackgroundBlur); ~SkiaRenderEngine() override; std::future<void> primeCache(bool shouldPrimeUltraHDR) override final; diff --git a/libs/renderengine/skia/SkiaVkRenderEngine.cpp b/libs/renderengine/skia/SkiaVkRenderEngine.cpp index ba20d1f223..3af85c064e 100644 --- a/libs/renderengine/skia/SkiaVkRenderEngine.cpp +++ b/libs/renderengine/skia/SkiaVkRenderEngine.cpp @@ -596,7 +596,7 @@ std::unique_ptr<SkiaVkRenderEngine> SkiaVkRenderEngine::create( } SkiaVkRenderEngine::SkiaVkRenderEngine(const RenderEngineCreationArgs& args) - : SkiaRenderEngine(args.renderEngineType, static_cast<PixelFormat>(args.pixelFormat), + : SkiaRenderEngine(args.threaded, static_cast<PixelFormat>(args.pixelFormat), args.supportsBackgroundBlur) {} SkiaVkRenderEngine::~SkiaVkRenderEngine() { diff --git a/libs/renderengine/tests/RenderEngineTest.cpp b/libs/renderengine/tests/RenderEngineTest.cpp index 2fd2a35927..b4597e53d1 100644 --- a/libs/renderengine/tests/RenderEngineTest.cpp +++ b/libs/renderengine/tests/RenderEngineTest.cpp @@ -106,8 +106,8 @@ public: virtual ~RenderEngineFactory() = default; virtual std::string name() = 0; - virtual renderengine::RenderEngine::RenderEngineType type() = 0; - virtual bool typeSupported() = 0; + virtual renderengine::RenderEngine::GraphicsApi graphicsApi() = 0; + virtual bool apiSupported() = 0; std::unique_ptr<renderengine::RenderEngine> createRenderEngine() { renderengine::RenderEngineCreationArgs reCreationArgs = renderengine::RenderEngineCreationArgs::Builder() @@ -117,7 +117,8 @@ public: .setPrecacheToneMapperShaderOnly(false) .setSupportsBackgroundBlur(true) .setContextPriority(renderengine::RenderEngine::ContextPriority::MEDIUM) - .setRenderEngineType(type()) + .setThreaded(renderengine::RenderEngine::Threaded::NO) + .setGraphicsApi(graphicsApi()) .build(); return renderengine::RenderEngine::create(reCreationArgs); } @@ -127,11 +128,11 @@ class SkiaVkRenderEngineFactory : public RenderEngineFactory { public: std::string name() override { return "SkiaVkRenderEngineFactory"; } - renderengine::RenderEngine::RenderEngineType type() { - return renderengine::RenderEngine::RenderEngineType::SKIA_VK; + renderengine::RenderEngine::GraphicsApi graphicsApi() override { + return renderengine::RenderEngine::GraphicsApi::VK; } - bool typeSupported() override { + bool apiSupported() override { return skia::SkiaVkRenderEngine::canSupportSkiaVkRenderEngine(); } }; @@ -140,11 +141,11 @@ class SkiaGLESRenderEngineFactory : public RenderEngineFactory { public: std::string name() override { return "SkiaGLRenderEngineFactory"; } - renderengine::RenderEngine::RenderEngineType type() { - return renderengine::RenderEngine::RenderEngineType::SKIA_GL; + renderengine::RenderEngine::GraphicsApi graphicsApi() { + return renderengine::RenderEngine::GraphicsApi::GL; } - bool typeSupported() override { return true; } + bool apiSupported() override { return true; } }; class RenderEngineTest : public ::testing::TestWithParam<std::shared_ptr<RenderEngineFactory>> { @@ -1479,7 +1480,7 @@ INSTANTIATE_TEST_SUITE_P(PerRenderEngineType, RenderEngineTest, std::make_shared<SkiaVkRenderEngineFactory>())); TEST_P(RenderEngineTest, drawLayers_noLayersToDraw) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1487,7 +1488,7 @@ TEST_P(RenderEngineTest, drawLayers_noLayersToDraw) { } TEST_P(RenderEngineTest, drawLayers_fillRedBufferAndEmptyBuffer) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1514,7 +1515,7 @@ TEST_P(RenderEngineTest, drawLayers_fillRedBufferAndEmptyBuffer) { } TEST_P(RenderEngineTest, drawLayers_withoutBuffers_withColorTransform) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1548,7 +1549,7 @@ TEST_P(RenderEngineTest, drawLayers_withoutBuffers_withColorTransform) { } TEST_P(RenderEngineTest, drawLayers_nullOutputBuffer) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1569,7 +1570,7 @@ TEST_P(RenderEngineTest, drawLayers_nullOutputBuffer) { } TEST_P(RenderEngineTest, drawLayers_fillRedBuffer_colorSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1577,7 +1578,7 @@ TEST_P(RenderEngineTest, drawLayers_fillRedBuffer_colorSource) { } TEST_P(RenderEngineTest, drawLayers_fillGreenBuffer_colorSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1585,7 +1586,7 @@ TEST_P(RenderEngineTest, drawLayers_fillGreenBuffer_colorSource) { } TEST_P(RenderEngineTest, drawLayers_fillBlueBuffer_colorSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1593,7 +1594,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBlueBuffer_colorSource) { } TEST_P(RenderEngineTest, drawLayers_fillRedTransparentBuffer_colorSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1601,7 +1602,7 @@ TEST_P(RenderEngineTest, drawLayers_fillRedTransparentBuffer_colorSource) { } TEST_P(RenderEngineTest, drawLayers_fillBufferPhysicalOffset_colorSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1609,7 +1610,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBufferPhysicalOffset_colorSource) { } TEST_P(RenderEngineTest, drawLayers_fillBufferCheckersRotate0_colorSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1617,7 +1618,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBufferCheckersRotate0_colorSource) { } TEST_P(RenderEngineTest, drawLayers_fillBufferCheckersRotate90_colorSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1625,7 +1626,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBufferCheckersRotate90_colorSource) { } TEST_P(RenderEngineTest, drawLayers_fillBufferCheckersRotate180_colorSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1633,7 +1634,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBufferCheckersRotate180_colorSource) { } TEST_P(RenderEngineTest, drawLayers_fillBufferCheckersRotate270_colorSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1641,7 +1642,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBufferCheckersRotate270_colorSource) { } TEST_P(RenderEngineTest, drawLayers_fillBufferLayerTransform_colorSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1649,7 +1650,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBufferLayerTransform_colorSource) { } TEST_P(RenderEngineTest, drawLayers_fillBufferColorTransform_colorSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1659,7 +1660,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBufferColorTransform_colorSource) { TEST_P(RenderEngineTest, drawLayers_fillBufferColorTransform_sourceDataspace) { const auto& renderEngineFactory = GetParam(); // skip for non color management - if (!renderEngineFactory->typeSupported()) { + if (!renderEngineFactory->apiSupported()) { GTEST_SKIP(); } @@ -1670,7 +1671,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBufferColorTransform_sourceDataspace) { TEST_P(RenderEngineTest, drawLayers_fillBufferColorTransform_outputDataspace) { const auto& renderEngineFactory = GetParam(); // skip for non color management - if (!renderEngineFactory->typeSupported()) { + if (!renderEngineFactory->apiSupported()) { GTEST_SKIP(); } @@ -1679,7 +1680,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBufferColorTransform_outputDataspace) { } TEST_P(RenderEngineTest, drawLayers_fillBufferRoundedCorners_colorSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1687,7 +1688,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBufferRoundedCorners_colorSource) { } TEST_P(RenderEngineTest, drawLayers_fillBufferColorTransformZeroLayerAlpha_colorSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1695,7 +1696,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBufferColorTransformZeroLayerAlpha_color } TEST_P(RenderEngineTest, drawLayers_fillBufferAndBlurBackground_colorSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1703,7 +1704,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBufferAndBlurBackground_colorSource) { } TEST_P(RenderEngineTest, drawLayers_fillSmallLayerAndBlurBackground_colorSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1711,7 +1712,7 @@ TEST_P(RenderEngineTest, drawLayers_fillSmallLayerAndBlurBackground_colorSource) } TEST_P(RenderEngineTest, drawLayers_overlayCorners_colorSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1719,7 +1720,7 @@ TEST_P(RenderEngineTest, drawLayers_overlayCorners_colorSource) { } TEST_P(RenderEngineTest, drawLayers_fillRedBuffer_opaqueBufferSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1727,7 +1728,7 @@ TEST_P(RenderEngineTest, drawLayers_fillRedBuffer_opaqueBufferSource) { } TEST_P(RenderEngineTest, drawLayers_fillGreenBuffer_opaqueBufferSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1735,7 +1736,7 @@ TEST_P(RenderEngineTest, drawLayers_fillGreenBuffer_opaqueBufferSource) { } TEST_P(RenderEngineTest, drawLayers_fillBlueBuffer_opaqueBufferSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1743,7 +1744,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBlueBuffer_opaqueBufferSource) { } TEST_P(RenderEngineTest, drawLayers_fillRedTransparentBuffer_opaqueBufferSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1751,7 +1752,7 @@ TEST_P(RenderEngineTest, drawLayers_fillRedTransparentBuffer_opaqueBufferSource) } TEST_P(RenderEngineTest, drawLayers_fillBufferPhysicalOffset_opaqueBufferSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1759,7 +1760,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBufferPhysicalOffset_opaqueBufferSource) } TEST_P(RenderEngineTest, drawLayers_fillBufferCheckersRotate0_opaqueBufferSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1767,7 +1768,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBufferCheckersRotate0_opaqueBufferSource } TEST_P(RenderEngineTest, drawLayers_fillBufferCheckersRotate90_opaqueBufferSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1775,7 +1776,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBufferCheckersRotate90_opaqueBufferSourc } TEST_P(RenderEngineTest, drawLayers_fillBufferCheckersRotate180_opaqueBufferSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1783,7 +1784,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBufferCheckersRotate180_opaqueBufferSour } TEST_P(RenderEngineTest, drawLayers_fillBufferCheckersRotate270_opaqueBufferSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1791,7 +1792,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBufferCheckersRotate270_opaqueBufferSour } TEST_P(RenderEngineTest, drawLayers_fillBufferLayerTransform_opaqueBufferSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1799,7 +1800,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBufferLayerTransform_opaqueBufferSource) } TEST_P(RenderEngineTest, drawLayers_fillBufferColorTransform_opaqueBufferSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1809,7 +1810,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBufferColorTransform_opaqueBufferSource) TEST_P(RenderEngineTest, drawLayers_fillBufferColorTransformAndSourceDataspace_opaqueBufferSource) { const auto& renderEngineFactory = GetParam(); // skip for non color management - if (!renderEngineFactory->typeSupported()) { + if (!renderEngineFactory->apiSupported()) { GTEST_SKIP(); } @@ -1820,7 +1821,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBufferColorTransformAndSourceDataspace_o TEST_P(RenderEngineTest, drawLayers_fillBufferColorTransformAndOutputDataspace_opaqueBufferSource) { const auto& renderEngineFactory = GetParam(); // skip for non color management - if (!renderEngineFactory->typeSupported()) { + if (!renderEngineFactory->apiSupported()) { GTEST_SKIP(); } @@ -1829,7 +1830,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBufferColorTransformAndOutputDataspace_o } TEST_P(RenderEngineTest, drawLayers_fillBufferRoundedCorners_opaqueBufferSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1837,7 +1838,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBufferRoundedCorners_opaqueBufferSource) } TEST_P(RenderEngineTest, drawLayers_fillBufferColorTransformZeroLayerAlpha_opaqueBufferSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1845,7 +1846,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBufferColorTransformZeroLayerAlpha_opaqu } TEST_P(RenderEngineTest, drawLayers_fillBufferAndBlurBackground_opaqueBufferSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1853,7 +1854,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBufferAndBlurBackground_opaqueBufferSour } TEST_P(RenderEngineTest, drawLayers_fillSmallLayerAndBlurBackground_opaqueBufferSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1861,7 +1862,7 @@ TEST_P(RenderEngineTest, drawLayers_fillSmallLayerAndBlurBackground_opaqueBuffer } TEST_P(RenderEngineTest, drawLayers_overlayCorners_opaqueBufferSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1869,7 +1870,7 @@ TEST_P(RenderEngineTest, drawLayers_overlayCorners_opaqueBufferSource) { } TEST_P(RenderEngineTest, drawLayers_fillRedBuffer_bufferSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1877,7 +1878,7 @@ TEST_P(RenderEngineTest, drawLayers_fillRedBuffer_bufferSource) { } TEST_P(RenderEngineTest, drawLayers_fillGreenBuffer_bufferSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1885,7 +1886,7 @@ TEST_P(RenderEngineTest, drawLayers_fillGreenBuffer_bufferSource) { } TEST_P(RenderEngineTest, drawLayers_fillBlueBuffer_bufferSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1893,7 +1894,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBlueBuffer_bufferSource) { } TEST_P(RenderEngineTest, drawLayers_fillRedTransparentBuffer_bufferSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1901,7 +1902,7 @@ TEST_P(RenderEngineTest, drawLayers_fillRedTransparentBuffer_bufferSource) { } TEST_P(RenderEngineTest, drawLayers_fillBufferPhysicalOffset_bufferSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1909,7 +1910,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBufferPhysicalOffset_bufferSource) { } TEST_P(RenderEngineTest, drawLayers_fillBufferCheckersRotate0_bufferSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1917,7 +1918,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBufferCheckersRotate0_bufferSource) { } TEST_P(RenderEngineTest, drawLayers_fillBufferCheckersRotate90_bufferSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1925,7 +1926,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBufferCheckersRotate90_bufferSource) { } TEST_P(RenderEngineTest, drawLayers_fillBufferCheckersRotate180_bufferSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1933,7 +1934,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBufferCheckersRotate180_bufferSource) { } TEST_P(RenderEngineTest, drawLayers_fillBufferCheckersRotate270_bufferSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1941,7 +1942,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBufferCheckersRotate270_bufferSource) { } TEST_P(RenderEngineTest, drawLayers_fillBufferLayerTransform_bufferSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1949,7 +1950,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBufferLayerTransform_bufferSource) { } TEST_P(RenderEngineTest, drawLayers_fillBufferColorTransform_bufferSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1959,7 +1960,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBufferColorTransform_bufferSource) { TEST_P(RenderEngineTest, drawLayers_fillBufferColorTransformAndSourceDataspace_bufferSource) { const auto& renderEngineFactory = GetParam(); // skip for non color management - if (!renderEngineFactory->typeSupported()) { + if (!renderEngineFactory->apiSupported()) { GTEST_SKIP(); } @@ -1970,7 +1971,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBufferColorTransformAndSourceDataspace_b TEST_P(RenderEngineTest, drawLayers_fillBufferColorTransformAndOutputDataspace_bufferSource) { const auto& renderEngineFactory = GetParam(); // skip for non color management - if (!renderEngineFactory->typeSupported()) { + if (!renderEngineFactory->apiSupported()) { GTEST_SKIP(); } @@ -1979,7 +1980,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBufferColorTransformAndOutputDataspace_b } TEST_P(RenderEngineTest, drawLayers_fillBufferRoundedCorners_bufferSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1987,7 +1988,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBufferRoundedCorners_bufferSource) { } TEST_P(RenderEngineTest, drawLayers_fillBufferColorTransformZeroLayerAlpha_bufferSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -1995,7 +1996,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBufferColorTransformZeroLayerAlpha_buffe } TEST_P(RenderEngineTest, drawLayers_fillBufferAndBlurBackground_bufferSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -2003,7 +2004,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBufferAndBlurBackground_bufferSource) { } TEST_P(RenderEngineTest, drawLayers_fillSmallLayerAndBlurBackground_bufferSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -2011,7 +2012,7 @@ TEST_P(RenderEngineTest, drawLayers_fillSmallLayerAndBlurBackground_bufferSource } TEST_P(RenderEngineTest, drawLayers_overlayCorners_bufferSource) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -2019,7 +2020,7 @@ TEST_P(RenderEngineTest, drawLayers_overlayCorners_bufferSource) { } TEST_P(RenderEngineTest, drawLayers_fillBufferTextureTransform) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -2027,7 +2028,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBufferTextureTransform) { } TEST_P(RenderEngineTest, drawLayers_fillBuffer_premultipliesAlpha) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -2035,7 +2036,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBuffer_premultipliesAlpha) { } TEST_P(RenderEngineTest, drawLayers_fillBuffer_withoutPremultiplyingAlpha) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -2043,7 +2044,7 @@ TEST_P(RenderEngineTest, drawLayers_fillBuffer_withoutPremultiplyingAlpha) { } TEST_P(RenderEngineTest, drawLayers_fillShadow_castsWithoutCasterLayer) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -2061,7 +2062,7 @@ TEST_P(RenderEngineTest, drawLayers_fillShadow_castsWithoutCasterLayer) { } TEST_P(RenderEngineTest, drawLayers_fillShadow_casterLayerMinSize) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -2084,7 +2085,7 @@ TEST_P(RenderEngineTest, drawLayers_fillShadow_casterLayerMinSize) { } TEST_P(RenderEngineTest, drawLayers_fillShadow_casterColorLayer) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -2108,7 +2109,7 @@ TEST_P(RenderEngineTest, drawLayers_fillShadow_casterColorLayer) { } TEST_P(RenderEngineTest, drawLayers_fillShadow_casterOpaqueBufferLayer) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -2133,7 +2134,7 @@ TEST_P(RenderEngineTest, drawLayers_fillShadow_casterOpaqueBufferLayer) { } TEST_P(RenderEngineTest, drawLayers_fillShadow_casterWithRoundedCorner) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -2159,7 +2160,7 @@ TEST_P(RenderEngineTest, drawLayers_fillShadow_casterWithRoundedCorner) { } TEST_P(RenderEngineTest, drawLayers_fillShadow_translucentCasterWithAlpha) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -2188,7 +2189,7 @@ TEST_P(RenderEngineTest, drawLayers_fillShadow_translucentCasterWithAlpha) { } TEST_P(RenderEngineTest, cleanupPostRender_cleansUpOnce) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -2224,7 +2225,7 @@ TEST_P(RenderEngineTest, cleanupPostRender_cleansUpOnce) { if (mRE->canSkipPostRenderCleanup()) { // Skia's Vk backend may keep the texture alive beyond drawLayersInternal, so // it never gets added to the cleanup list. In those cases, we can skip. - EXPECT_TRUE(GetParam()->type() == renderengine::RenderEngine::RenderEngineType::SKIA_VK); + EXPECT_TRUE(GetParam()->graphicsApi() == renderengine::RenderEngine::GraphicsApi::VK); } else { mRE->cleanupPostRender(); EXPECT_TRUE(mRE->canSkipPostRenderCleanup()); @@ -2232,7 +2233,7 @@ TEST_P(RenderEngineTest, cleanupPostRender_cleansUpOnce) { } TEST_P(RenderEngineTest, testRoundedCornersCrop) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -2285,7 +2286,7 @@ TEST_P(RenderEngineTest, testRoundedCornersCrop) { } TEST_P(RenderEngineTest, testRoundedCornersParentCrop) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -2333,7 +2334,7 @@ TEST_P(RenderEngineTest, testRoundedCornersParentCrop) { } TEST_P(RenderEngineTest, testRoundedCornersParentCropSmallBounds) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -2370,7 +2371,7 @@ TEST_P(RenderEngineTest, testRoundedCornersParentCropSmallBounds) { } TEST_P(RenderEngineTest, testRoundedCornersXY) { - if (GetParam()->type() != renderengine::RenderEngine::RenderEngineType::SKIA_GL) { + if (GetParam()->graphicsApi() != renderengine::RenderEngine::GraphicsApi::GL) { GTEST_SKIP(); } @@ -2413,7 +2414,7 @@ TEST_P(RenderEngineTest, testRoundedCornersXY) { } TEST_P(RenderEngineTest, testClear) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -2445,7 +2446,7 @@ TEST_P(RenderEngineTest, testClear) { } TEST_P(RenderEngineTest, testDisableBlendingBuffer) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -2496,7 +2497,7 @@ TEST_P(RenderEngineTest, testDisableBlendingBuffer) { } TEST_P(RenderEngineTest, testBorder) { - if (GetParam()->type() != renderengine::RenderEngine::RenderEngineType::SKIA_GL) { + if (GetParam()->graphicsApi() != renderengine::RenderEngine::GraphicsApi::GL) { GTEST_SKIP(); } @@ -2541,7 +2542,7 @@ TEST_P(RenderEngineTest, testBorder) { } TEST_P(RenderEngineTest, testDimming) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -2616,7 +2617,7 @@ TEST_P(RenderEngineTest, testDimming) { } TEST_P(RenderEngineTest, testDimming_inGammaSpace) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -2694,7 +2695,7 @@ TEST_P(RenderEngineTest, testDimming_inGammaSpace) { } TEST_P(RenderEngineTest, testDimming_inGammaSpace_withDisplayColorTransform) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -2757,7 +2758,7 @@ TEST_P(RenderEngineTest, testDimming_inGammaSpace_withDisplayColorTransform) { } TEST_P(RenderEngineTest, testDimming_inGammaSpace_withDisplayColorTransform_deviceHandles) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -2821,7 +2822,7 @@ TEST_P(RenderEngineTest, testDimming_inGammaSpace_withDisplayColorTransform_devi } TEST_P(RenderEngineTest, testDimming_withoutTargetLuminance) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -2875,7 +2876,7 @@ TEST_P(RenderEngineTest, testDimming_withoutTargetLuminance) { } TEST_P(RenderEngineTest, test_isOpaque) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -2925,7 +2926,7 @@ TEST_P(RenderEngineTest, test_isOpaque) { } TEST_P(RenderEngineTest, test_tonemapPQMatches) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } @@ -2942,7 +2943,7 @@ TEST_P(RenderEngineTest, test_tonemapPQMatches) { } TEST_P(RenderEngineTest, test_tonemapHLGMatches) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } @@ -2959,7 +2960,7 @@ TEST_P(RenderEngineTest, test_tonemapHLGMatches) { } TEST_P(RenderEngineTest, r8_behaves_as_mask) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -3019,7 +3020,7 @@ TEST_P(RenderEngineTest, r8_behaves_as_mask) { } TEST_P(RenderEngineTest, r8_respects_color_transform) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -3084,7 +3085,7 @@ TEST_P(RenderEngineTest, r8_respects_color_transform) { } TEST_P(RenderEngineTest, r8_respects_color_transform_when_device_handles) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); @@ -3152,7 +3153,7 @@ TEST_P(RenderEngineTest, r8_respects_color_transform_when_device_handles) { } TEST_P(RenderEngineTest, primeShaderCache) { - if (!GetParam()->typeSupported()) { + if (!GetParam()->apiSupported()) { GTEST_SKIP(); } initializeRenderEngine(); diff --git a/libs/renderengine/tests/RenderEngineThreadedTest.cpp b/libs/renderengine/tests/RenderEngineThreadedTest.cpp index 1b9adba063..d56dbb2a7b 100644 --- a/libs/renderengine/tests/RenderEngineThreadedTest.cpp +++ b/libs/renderengine/tests/RenderEngineThreadedTest.cpp @@ -35,8 +35,7 @@ struct RenderEngineThreadedTest : public ::testing::Test { void SetUp() override { mThreadedRE = renderengine::threaded::RenderEngineThreaded::create( - [this]() { return std::unique_ptr<renderengine::RenderEngine>(mRenderEngine); }, - renderengine::RenderEngine::RenderEngineType::SKIA_GL_THREADED); + [this]() { return std::unique_ptr<renderengine::RenderEngine>(mRenderEngine); }); } std::unique_ptr<renderengine::threaded::RenderEngineThreaded> mThreadedRE; diff --git a/libs/renderengine/threaded/RenderEngineThreaded.cpp b/libs/renderengine/threaded/RenderEngineThreaded.cpp index f58f543854..f4cebc05ec 100644 --- a/libs/renderengine/threaded/RenderEngineThreaded.cpp +++ b/libs/renderengine/threaded/RenderEngineThreaded.cpp @@ -33,13 +33,12 @@ namespace android { namespace renderengine { namespace threaded { -std::unique_ptr<RenderEngineThreaded> RenderEngineThreaded::create(CreateInstanceFactory factory, - RenderEngineType type) { - return std::make_unique<RenderEngineThreaded>(std::move(factory), type); +std::unique_ptr<RenderEngineThreaded> RenderEngineThreaded::create(CreateInstanceFactory factory) { + return std::make_unique<RenderEngineThreaded>(std::move(factory)); } -RenderEngineThreaded::RenderEngineThreaded(CreateInstanceFactory factory, RenderEngineType type) - : RenderEngine(type) { +RenderEngineThreaded::RenderEngineThreaded(CreateInstanceFactory factory) + : RenderEngine(Threaded::YES) { ATRACE_CALL(); std::lock_guard lockThread(mThreadMutex); diff --git a/libs/renderengine/threaded/RenderEngineThreaded.h b/libs/renderengine/threaded/RenderEngineThreaded.h index 3f1e67f285..d440c961e7 100644 --- a/libs/renderengine/threaded/RenderEngineThreaded.h +++ b/libs/renderengine/threaded/RenderEngineThreaded.h @@ -37,10 +37,9 @@ using CreateInstanceFactory = std::function<std::unique_ptr<renderengine::Render */ class RenderEngineThreaded : public RenderEngine { public: - static std::unique_ptr<RenderEngineThreaded> create(CreateInstanceFactory factory, - RenderEngineType type); + static std::unique_ptr<RenderEngineThreaded> create(CreateInstanceFactory factory); - RenderEngineThreaded(CreateInstanceFactory factory, RenderEngineType type); + RenderEngineThreaded(CreateInstanceFactory factory); ~RenderEngineThreaded() override; std::future<void> primeCache(bool shouldPrimeUltraHDR) override; diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index 0c640aa4bf..5455e10b7c 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -798,22 +798,26 @@ void SurfaceFlinger::bootFinished() { })); } -static std::optional<renderengine::RenderEngine::RenderEngineType> -chooseRenderEngineTypeViaSysProp() { +void chooseRenderEngineType(renderengine::RenderEngineCreationArgs::Builder& builder) { char prop[PROPERTY_VALUE_MAX]; property_get(PROPERTY_DEBUG_RENDERENGINE_BACKEND, prop, "skiaglthreaded"); if (strcmp(prop, "skiagl") == 0) { - return renderengine::RenderEngine::RenderEngineType::SKIA_GL; + builder.setThreaded(renderengine::RenderEngine::Threaded::NO) + .setGraphicsApi(renderengine::RenderEngine::GraphicsApi::GL); } else if (strcmp(prop, "skiaglthreaded") == 0) { - return renderengine::RenderEngine::RenderEngineType::SKIA_GL_THREADED; + builder.setThreaded(renderengine::RenderEngine::Threaded::YES) + .setGraphicsApi(renderengine::RenderEngine::GraphicsApi::GL); } else if (strcmp(prop, "skiavk") == 0) { - return renderengine::RenderEngine::RenderEngineType::SKIA_VK; + builder.setThreaded(renderengine::RenderEngine::Threaded::NO) + .setGraphicsApi(renderengine::RenderEngine::GraphicsApi::VK); } else if (strcmp(prop, "skiavkthreaded") == 0) { - return renderengine::RenderEngine::RenderEngineType::SKIA_VK_THREADED; + builder.setThreaded(renderengine::RenderEngine::Threaded::YES) + .setGraphicsApi(renderengine::RenderEngine::GraphicsApi::VK); } else { - ALOGE("Unrecognized RenderEngineType %s; ignoring!", prop); - return {}; + builder.setGraphicsApi(FlagManager::getInstance().vulkan_renderengine() + ? renderengine::RenderEngine::GraphicsApi::VK + : renderengine::RenderEngine::GraphicsApi::GL); } } @@ -839,9 +843,7 @@ void SurfaceFlinger::init() FTL_FAKE_GUARD(kMainThreadContext) { useContextPriority ? renderengine::RenderEngine::ContextPriority::REALTIME : renderengine::RenderEngine::ContextPriority::MEDIUM); - if (auto type = chooseRenderEngineTypeViaSysProp()) { - builder.setRenderEngineType(type.value()); - } + chooseRenderEngineType(builder); mRenderEngine = renderengine::RenderEngine::create(builder.build()); mCompositionEngine->setRenderEngine(mRenderEngine.get()); mMaxRenderTargetSize = @@ -8149,13 +8151,8 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::renderScreenImpl( // // TODO(b/196334700) Once we use RenderEngineThreaded everywhere we can always defer the call // to CompositionEngine::present. - const bool renderEngineIsThreaded = [&]() { - using Type = renderengine::RenderEngine::RenderEngineType; - const auto type = mRenderEngine->getRenderEngineType(); - return type == Type::SKIA_GL_THREADED; - }(); - auto presentFuture = renderEngineIsThreaded ? ftl::defer(std::move(present)).share() - : ftl::yield(present()).share(); + auto presentFuture = mRenderEngine->isThreaded() ? ftl::defer(std::move(present)).share() + : ftl::yield(present()).share(); for (auto& [layer, layerFE] : layers) { layer->onLayerDisplayed(ftl::Future(presentFuture) diff --git a/services/surfaceflinger/common/FlagManager.cpp b/services/surfaceflinger/common/FlagManager.cpp index a27e10033d..255b517e3e 100644 --- a/services/surfaceflinger/common/FlagManager.cpp +++ b/services/surfaceflinger/common/FlagManager.cpp @@ -128,6 +128,7 @@ void FlagManager::dump(std::string& result) const { DUMP_READ_ONLY_FLAG(fp16_client_target); DUMP_READ_ONLY_FLAG(game_default_frame_rate); DUMP_READ_ONLY_FLAG(enable_layer_command_batching); + DUMP_READ_ONLY_FLAG(vulkan_renderengine); #undef DUMP_READ_ONLY_FLAG #undef DUMP_SERVER_FLAG #undef DUMP_FLAG_INTERVAL @@ -202,6 +203,7 @@ FLAG_MANAGER_READ_ONLY_FLAG(display_protected, "") FLAG_MANAGER_READ_ONLY_FLAG(fp16_client_target, "debug.sf.fp16_client_target") FLAG_MANAGER_READ_ONLY_FLAG(game_default_frame_rate, "") FLAG_MANAGER_READ_ONLY_FLAG(enable_layer_command_batching, "") +FLAG_MANAGER_READ_ONLY_FLAG(vulkan_renderengine, "debug.renderengine.vulkan") /// Trunk stable server flags /// FLAG_MANAGER_SERVER_FLAG(late_boot_misc2, "") diff --git a/services/surfaceflinger/common/include/common/FlagManager.h b/services/surfaceflinger/common/include/common/FlagManager.h index c01465b04e..15938c012c 100644 --- a/services/surfaceflinger/common/include/common/FlagManager.h +++ b/services/surfaceflinger/common/include/common/FlagManager.h @@ -68,6 +68,7 @@ public: bool fp16_client_target() const; bool game_default_frame_rate() const; bool enable_layer_command_batching() const; + bool vulkan_renderengine() const; protected: // overridden for unit tests |