From d2a67b62a0d411280d7b5b6a76d85cdc629bc667 Mon Sep 17 00:00:00 2001 From: skia-flutter-autoroll Date: Tue, 19 Nov 2024 15:06:40 -0500 Subject: [PATCH 1/3] Roll Skia from 78ef6b7a574f to a694b9e85a49 (5 revisions) (#56713) https://skia.googlesource.com/skia.git/+log/78ef6b7a574f..a694b9e85a49 2024-11-19 robertphillips@google.com [graphite] Fix up Context's recorder tracking thread safety 2024-11-19 vigneshv@google.com SkCrabbyAvifCodec: Set mediacodec color format 2024-11-19 vigneshv@google.com SkCrabbyAvifCodec: Make a copy of the image before scaling 2024-11-19 jlavrova@google.com Refactoring proxy for FontConfig out of FontMgr 2024-11-19 jvanverth@google.com [ganesh] Fix artifacts from looping colorizer. If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC aaclarke@google.com,brianosman@google.com,michaelludwig@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- DEPS | 2 +- ci/licenses_golden/licenses_skia | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPS b/DEPS index 73322cc0cae7d..fb0a864af1fe3 100644 --- a/DEPS +++ b/DEPS @@ -14,7 +14,7 @@ vars = { 'flutter_git': 'https://flutter.googlesource.com', 'skia_git': 'https://skia.googlesource.com', 'llvm_git': 'https://llvm.googlesource.com', - 'skia_revision': '78ef6b7a574f21bf0d520b801125f2d7b360b6cd', + 'skia_revision': 'a694b9e85a4993224948cfd40863028f6eadfe9b', # WARNING: DO NOT EDIT canvaskit_cipd_instance MANUALLY # See `lib/web_ui/README.md` for how to roll CanvasKit to a new version. diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index ae9910bed6aa1..3a04bb11e4d8c 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 9a68133c40dd14821226da1a166e9a26 +Signature: fac077e75d2d2ef0e00abed504d94db2 ==================================================================================================== LIBRARY: etc1 From 13450c28875641fa1c2f6b12b3dfb0a9a1c0e4fe Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Tue, 19 Nov 2024 12:20:05 -0800 Subject: [PATCH 2/3] display_list: Extract backend-specific surface providers (#56711) Extracts backend-specific code in DlSurfaceProvider to separate translation units. In particular, this allows for less conditional header includes, and more specifically, allows code relating to the Metal backend to include headers that include ARC-managed Objective-C types. Today we cast these all to void* (and manage refcounting manually) since these headers are included in dl_surface_provider.cc, which is a pure C++ translation unit. No test changes since this patch includes no semantic changes. Issue: https://github.com/flutter/flutter/issues/137801 [C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style --- display_list/testing/BUILD.gn | 3 + .../testing/dl_test_surface_provider.cc | 58 +++++++++---------- .../testing/dl_test_surface_provider.h | 5 ++ .../testing/dl_test_surface_provider_gl.cc | 15 +++++ .../testing/dl_test_surface_provider_metal.mm | 15 +++++ .../dl_test_surface_provider_software.cc | 15 +++++ 6 files changed, 79 insertions(+), 32 deletions(-) create mode 100644 display_list/testing/dl_test_surface_provider_gl.cc create mode 100644 display_list/testing/dl_test_surface_provider_metal.mm create mode 100644 display_list/testing/dl_test_surface_provider_software.cc diff --git a/display_list/testing/BUILD.gn b/display_list/testing/BUILD.gn index 915daeab95594..fc48324c76e0c 100644 --- a/display_list/testing/BUILD.gn +++ b/display_list/testing/BUILD.gn @@ -86,6 +86,7 @@ source_set("display_list_surface_provider") { if (surface_provider_include_software) { sources += [ + "dl_test_surface_provider_software.cc", "dl_test_surface_software.cc", "dl_test_surface_software.h", ] @@ -95,6 +96,7 @@ source_set("display_list_surface_provider") { sources += [ "dl_test_surface_gl.cc", "dl_test_surface_gl.h", + "dl_test_surface_provider_gl.cc", ] deps += [ "//flutter/testing:opengl" ] } @@ -103,6 +105,7 @@ source_set("display_list_surface_provider") { sources += [ "dl_test_surface_metal.h", "dl_test_surface_metal.mm", + "dl_test_surface_provider_metal.mm", ] deps += [ "//flutter/impeller/display_list", diff --git a/display_list/testing/dl_test_surface_provider.cc b/display_list/testing/dl_test_surface_provider.cc index ab7d75c0901e7..545b3cfa0de1f 100644 --- a/display_list/testing/dl_test_surface_provider.cc +++ b/display_list/testing/dl_test_surface_provider.cc @@ -10,50 +10,29 @@ #include "third_party/skia/include/core/SkSurface.h" #include "third_party/skia/include/encode/SkPngEncoder.h" -#ifdef ENABLE_SOFTWARE_BENCHMARKS -#include "flutter/display_list/testing/dl_test_surface_software.h" -#endif -#ifdef ENABLE_OPENGL_BENCHMARKS -#include "flutter/display_list/testing/dl_test_surface_gl.h" -#endif -#ifdef ENABLE_METAL_BENCHMARKS -#include "flutter/display_list/testing/dl_test_surface_metal.h" -#endif - -namespace flutter { -namespace testing { +namespace flutter::testing { std::string DlSurfaceProvider::BackendName(BackendType type) { switch (type) { - case kMetalBackend: - return "Metal"; - case kOpenGlBackend: - return "OpenGL"; case kSoftwareBackend: return "Software"; + case kOpenGlBackend: + return "OpenGL"; + case kMetalBackend: + return "Metal"; } } std::unique_ptr DlSurfaceProvider::Create( BackendType backend_type) { switch (backend_type) { -#ifdef ENABLE_SOFTWARE_BENCHMARKS case kSoftwareBackend: - return std::make_unique(); -#endif -#ifdef ENABLE_OPENGL_BENCHMARKS - case kOpenGLBackend: - return std::make_unique(); -#endif -#ifdef ENABLE_METAL_BENCHMARKS + return CreateSoftware(); + case kOpenGlBackend: + return CreateOpenGL(); case kMetalBackend: - return std::make_unique(); -#endif - default: - return nullptr; + return CreateMetal(); } - - return nullptr; } bool DlSurfaceProvider::Snapshot(std::string& filename) const { @@ -78,5 +57,20 @@ bool DlSurfaceProvider::Snapshot(std::string& filename) const { #endif } -} // namespace testing -} // namespace flutter +#ifndef ENABLE_SOFTWARE_BENCHMARKS +std::unique_ptr DlSurfaceProvider::CreateSoftware() { + return nullptr; +} +#endif +#ifndef ENABLE_OPENGL_BENCHMARKS +std::unique_ptr DlSurfaceProvider::CreateOpenGL() { + return nullptr; +} +#endif +#ifndef ENABLE_METAL_BENCHMARKS +std::unique_ptr DlSurfaceProvider::CreateMetal() { + return nullptr; +} +#endif + +} // namespace flutter::testing diff --git a/display_list/testing/dl_test_surface_provider.h b/display_list/testing/dl_test_surface_provider.h index 1ad4af789cb43..5bfc710502391 100644 --- a/display_list/testing/dl_test_surface_provider.h +++ b/display_list/testing/dl_test_surface_provider.h @@ -97,6 +97,11 @@ class DlSurfaceProvider { protected: DlSurfaceProvider() = default; + + private: + static std::unique_ptr CreateSoftware(); + static std::unique_ptr CreateMetal(); + static std::unique_ptr CreateOpenGL(); }; } // namespace testing diff --git a/display_list/testing/dl_test_surface_provider_gl.cc b/display_list/testing/dl_test_surface_provider_gl.cc new file mode 100644 index 0000000000000..0d258d0c6b29b --- /dev/null +++ b/display_list/testing/dl_test_surface_provider_gl.cc @@ -0,0 +1,15 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "flutter/display_list/testing/dl_test_surface_provider.h" + +#include "flutter/display_list/testing/dl_test_surface_gl.h" + +namespace flutter::testing { + +std::unique_ptr DlSurfaceProvider::CreateOpenGL() { + return std::make_unique(); +} + +} // namespace flutter::testing diff --git a/display_list/testing/dl_test_surface_provider_metal.mm b/display_list/testing/dl_test_surface_provider_metal.mm new file mode 100644 index 0000000000000..95de93dee08a5 --- /dev/null +++ b/display_list/testing/dl_test_surface_provider_metal.mm @@ -0,0 +1,15 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "flutter/display_list/testing/dl_test_surface_provider.h" + +#include "flutter/display_list/testing/dl_test_surface_metal.h" + +namespace flutter::testing { + +std::unique_ptr DlSurfaceProvider::CreateMetal() { + return std::make_unique(); +} + +} // namespace flutter::testing diff --git a/display_list/testing/dl_test_surface_provider_software.cc b/display_list/testing/dl_test_surface_provider_software.cc new file mode 100644 index 0000000000000..6da75c41ab845 --- /dev/null +++ b/display_list/testing/dl_test_surface_provider_software.cc @@ -0,0 +1,15 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "flutter/display_list/testing/dl_test_surface_provider.h" + +#include "flutter/display_list/testing/dl_test_surface_software.h" + +namespace flutter::testing { + +std::unique_ptr DlSurfaceProvider::CreateSoftware() { + return std::make_unique(); +} + +} // namespace flutter::testing From 7eb87547cbc6139dab7e5ae9bfda9514114b1546 Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Tue, 19 Nov 2024 12:20:08 -0800 Subject: [PATCH 3/3] EmbedderTest: templatise GetEmbedderContext (#56709) In many embedder tests, we want to get at the appropriate backend-specific `EmbedderTestContext` subclass (`EmbedderTestContextGL`, etc.) in order to make backend-specific setup calls such as `SetGLFBOCallback()` or others. Formerly, this required casting the returned `EmbedderTestContext&` to the appropriate subclass in each test. This templatises the `GetEmbedderContext()` method to return the appropriate backend-specific subclass directly. Issue: https://github.com/flutter/flutter/issues/158998 [C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style --- .../embedder/tests/embedder_a11y_unittests.cc | 24 +-- .../embedder/tests/embedder_gl_unittests.cc | 165 ++++++++---------- .../tests/embedder_metal_unittests.mm | 26 ++- .../platform/embedder/tests/embedder_test.cc | 63 +++---- shell/platform/embedder/tests/embedder_test.h | 58 +++++- .../embedder/tests/embedder_test_gl.cc | 8 +- .../embedder/tests/embedder_test_metal.mm | 7 +- .../embedder/tests/embedder_test_vulkan.cc | 8 +- .../embedder/tests/embedder_unittests.cc | 151 ++++++++-------- .../embedder/tests/embedder_vk_unittests.cc | 8 +- 10 files changed, 266 insertions(+), 252 deletions(-) diff --git a/shell/platform/embedder/tests/embedder_a11y_unittests.cc b/shell/platform/embedder/tests/embedder_a11y_unittests.cc index c3510ec52ffad..ae23f1c428e1e 100644 --- a/shell/platform/embedder/tests/embedder_a11y_unittests.cc +++ b/shell/platform/embedder/tests/embedder_a11y_unittests.cc @@ -33,8 +33,8 @@ constexpr static char kTooltip[] = "tooltip"; TEST_F(EmbedderTest, CannotProvideMultipleSemanticsCallbacks) { { - EmbedderConfigBuilder builder( - GetEmbedderContext(EmbedderTestContextType::kSoftwareContext)); + auto& context = GetEmbedderContext(); + EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); builder.GetProjectArgs().update_semantics_callback = [](const FlutterSemanticsUpdate* update, void* user_data) {}; @@ -46,8 +46,8 @@ TEST_F(EmbedderTest, CannotProvideMultipleSemanticsCallbacks) { } { - EmbedderConfigBuilder builder( - GetEmbedderContext(EmbedderTestContextType::kSoftwareContext)); + auto& context = GetEmbedderContext(); + EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); builder.GetProjectArgs().update_semantics_callback2 = [](const FlutterSemanticsUpdate2* update, void* user_data) {}; @@ -61,8 +61,8 @@ TEST_F(EmbedderTest, CannotProvideMultipleSemanticsCallbacks) { } { - EmbedderConfigBuilder builder( - GetEmbedderContext(EmbedderTestContextType::kSoftwareContext)); + auto& context = GetEmbedderContext(); + EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); builder.GetProjectArgs().update_semantics_callback = [](const FlutterSemanticsUpdate* update, void* user_data) {}; @@ -76,8 +76,8 @@ TEST_F(EmbedderTest, CannotProvideMultipleSemanticsCallbacks) { } { - EmbedderConfigBuilder builder( - GetEmbedderContext(EmbedderTestContextType::kSoftwareContext)); + auto& context = GetEmbedderContext(); + EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); builder.GetProjectArgs().update_semantics_callback2 = [](const FlutterSemanticsUpdate2* update, void* user_data) {}; @@ -98,7 +98,7 @@ TEST_F(EmbedderA11yTest, A11yTreeIsConsistentUsingV3Callbacks) { GTEST_SKIP() << "This test crashes on Fuchsia. https://fxbug.dev/87493 "; #else - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); fml::AutoResetWaitableEvent signal_native_latch; @@ -277,7 +277,7 @@ TEST_F(EmbedderA11yTest, A11yStringAttributes) { GTEST_SKIP() << "This test crashes on Fuchsia. https://fxbug.dev/87493 "; #else - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); fml::AutoResetWaitableEvent signal_native_latch; @@ -397,7 +397,7 @@ TEST_F(EmbedderA11yTest, A11yTreeIsConsistentUsingV2Callbacks) { GTEST_SKIP() << "This test crashes on Fuchsia. https://fxbug.dev/87493 "; #else - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); fml::AutoResetWaitableEvent signal_native_latch; @@ -570,7 +570,7 @@ TEST_F(EmbedderA11yTest, A11yTreeIsConsistentUsingV2Callbacks) { } TEST_F(EmbedderA11yTest, A11yTreeIsConsistentUsingV1Callbacks) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); fml::AutoResetWaitableEvent signal_native_latch; diff --git a/shell/platform/embedder/tests/embedder_gl_unittests.cc b/shell/platform/embedder/tests/embedder_gl_unittests.cc index f981c7465b9bf..3592c3711ecb9 100644 --- a/shell/platform/embedder/tests/embedder_gl_unittests.cc +++ b/shell/platform/embedder/tests/embedder_gl_unittests.cc @@ -45,14 +45,9 @@ namespace flutter::testing { using EmbedderTest = testing::EmbedderTest; -TEST_F(EmbedderTest, CanGetVulkanEmbedderContext) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kVulkanContext); - EmbedderConfigBuilder builder(context); -} - TEST_F(EmbedderTest, CanCreateOpenGLRenderingEngine) { - EmbedderConfigBuilder builder( - GetEmbedderContext(EmbedderTestContextType::kOpenGLContext)); + auto& context = GetEmbedderContext(); + EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); auto engine = builder.LaunchEngine(); ASSERT_TRUE(engine.is_valid()); @@ -65,7 +60,7 @@ TEST_F(EmbedderTest, CanCreateOpenGLRenderingEngine) { /// TEST_F(EmbedderTest, MustPreventEngineLaunchWhenRequiredCompositorArgsAreAbsent) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); builder.SetCompositor(); @@ -83,7 +78,7 @@ TEST_F(EmbedderTest, /// render a frame at a later point in time. /// TEST_F(EmbedderTest, LaunchFailsWhenMultiplePresentCallbacks) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); builder.SetCompositor(); @@ -102,7 +97,7 @@ TEST_F(EmbedderTest, LaunchFailsWhenMultiplePresentCallbacks) { /// complete OpenGL textures. /// TEST_F(EmbedderTest, CompositorMustBeAbleToRenderToOpenGLFramebuffer) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(800, 600)); @@ -222,7 +217,7 @@ TEST_F(EmbedderTest, CompositorMustBeAbleToRenderToOpenGLFramebuffer) { /// Layers in a hierarchy containing a platform view should not be cached. The /// other layers in the hierarchy should be, however. TEST_F(EmbedderTest, RasterCacheDisabledWithPlatformViews) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(800, 600)); @@ -355,7 +350,7 @@ TEST_F(EmbedderTest, RasterCacheDisabledWithPlatformViews) { /// The RasterCache should normally be enabled. /// TEST_F(EmbedderTest, RasterCacheEnabled) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(800, 600)); @@ -441,7 +436,7 @@ TEST_F(EmbedderTest, RasterCacheEnabled) { /// the individual layers are OpenGL textures. /// TEST_F(EmbedderTest, CompositorMustBeAbleToRenderToOpenGLTexture) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(800, 600)); @@ -562,7 +557,7 @@ TEST_F(EmbedderTest, CompositorMustBeAbleToRenderToOpenGLTexture) { /// individual layers are software buffers. /// TEST_F(EmbedderTest, CompositorMustBeAbleToRenderToSoftwareBuffer) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(800, 600)); @@ -683,7 +678,7 @@ TEST_F(EmbedderTest, CompositorMustBeAbleToRenderToSoftwareBuffer) { /// Test the layer structure and pixels rendered when using a custom compositor. /// TEST_F(EmbedderTest, CompositorMustBeAbleToRenderKnownScene) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(800, 600)); @@ -897,7 +892,7 @@ TEST_F(EmbedderTest, CompositorMustBeAbleToRenderKnownScene) { /// thread merging mechanism must not interfere with the custom compositor. /// TEST_F(EmbedderTest, CustomCompositorMustWorkWithCustomTaskRunner) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); @@ -1065,7 +1060,7 @@ TEST_F(EmbedderTest, CustomCompositorMustWorkWithCustomTaskRunner) { /// and a single layer. /// TEST_F(EmbedderTest, CompositorMustBeAbleToRenderWithRootLayerOnly) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(800, 600)); @@ -1147,7 +1142,7 @@ TEST_F(EmbedderTest, CompositorMustBeAbleToRenderWithRootLayerOnly) { /// and ensure that a redundant layer is not added. /// TEST_F(EmbedderTest, CompositorMustBeAbleToRenderWithPlatformLayerOnBottom) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(800, 600)); @@ -1275,7 +1270,7 @@ TEST_F(EmbedderTest, CompositorMustBeAbleToRenderWithPlatformLayerOnBottom) { /// TEST_F(EmbedderTest, CompositorMustBeAbleToRenderKnownSceneWithRootSurfaceTransformation) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(600, 800)); @@ -1492,7 +1487,7 @@ TEST_F(EmbedderTest, } TEST_F(EmbedderTest, CanRenderSceneWithoutCustomCompositor) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); @@ -1518,7 +1513,7 @@ TEST_F(EmbedderTest, CanRenderSceneWithoutCustomCompositor) { } TEST_F(EmbedderTest, CanRenderSceneWithoutCustomCompositorWithTransformation) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); const auto root_surface_transformation = SkMatrix().preTranslate(0, 800).preRotate(-90, 0, 0); @@ -1553,7 +1548,6 @@ TEST_F(EmbedderTest, CanRenderSceneWithoutCustomCompositorWithTransformation) { TEST_P(EmbedderTestMultiBackend, CanRenderGradientWithoutCompositor) { EmbedderTestContextType backend = GetParam(); auto& context = GetEmbedderContext(backend); - EmbedderConfigBuilder builder(context); builder.SetDartEntrypoint("render_gradient"); builder.SetSurface(SkISize::Make(800, 600)); @@ -1577,7 +1571,7 @@ TEST_P(EmbedderTestMultiBackend, CanRenderGradientWithoutCompositor) { } TEST_F(EmbedderTest, CanRenderGradientWithoutCompositorWithXform) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); const auto root_surface_transformation = SkMatrix().preTranslate(0, 800).preRotate(-90, 0, 0); @@ -1638,7 +1632,7 @@ TEST_P(EmbedderTestMultiBackend, CanRenderGradientWithCompositor) { } TEST_F(EmbedderTest, CanRenderGradientWithCompositorWithXform) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); // This must match the transformation provided in the // |CanRenderGradientWithoutCompositorWithXform| test to ensure that @@ -1808,7 +1802,7 @@ TEST_P(EmbedderTestMultiBackend, } TEST_F(EmbedderTest, CanRenderGradientWithCompositorOnNonRootLayerWithXform) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); // This must match the transformation provided in the // |CanRenderGradientWithoutCompositorWithXform| test to ensure that @@ -1951,7 +1945,7 @@ TEST_F(EmbedderTest, CanRenderGradientWithCompositorOnNonRootLayerWithXform) { } TEST_F(EmbedderTest, VerifyB141980393) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); @@ -2072,8 +2066,8 @@ TEST_F(EmbedderTest, CanCreateEmbedderWithCustomRenderTaskRunner) { task_latch.Signal(); } }); - EmbedderConfigBuilder builder( - GetEmbedderContext(EmbedderTestContextType::kOpenGLContext)); + auto& context = GetEmbedderContext(); + EmbedderConfigBuilder builder(context); builder.SetDartEntrypoint("can_render_scene_without_custom_compositor"); builder.SetSurface(SkISize::Make(800, 600)); builder.SetRenderTaskRunner( @@ -2132,7 +2126,8 @@ TEST_P(EmbedderTestMultiBackend, platform_task_runner->PostTask([&]() { EmbedderTestContextType backend = GetParam(); - EmbedderConfigBuilder builder(GetEmbedderContext(backend)); + auto& context = GetEmbedderContext(backend); + EmbedderConfigBuilder builder(context); builder.SetDartEntrypoint("can_render_scene_without_custom_compositor"); builder.SetSurface(SkISize::Make(800, 600)); builder.SetRenderTaskRunner( @@ -2305,7 +2300,7 @@ TEST_P(EmbedderTestMultiBackend, TEST_F( EmbedderTest, CompositorMustBeAbleToRenderKnownScenePixelRatioOnSurfaceWithRootSurfaceXformation) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(600, 800)); @@ -2428,7 +2423,7 @@ TEST_F( TEST_F(EmbedderTest, PushingMutlipleFramesSetsUpNewRecordingCanvasWithCustomCompositor) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(600, 1024)); @@ -2472,7 +2467,7 @@ TEST_F(EmbedderTest, TEST_F(EmbedderTest, PushingMutlipleFramesSetsUpNewRecordingCanvasWithoutCustomCompositor) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(600, 1024)); @@ -2621,7 +2616,7 @@ TEST_P(EmbedderTestMultiBackend, PlatformViewMutatorsAreValid) { } TEST_F(EmbedderTest, PlatformViewMutatorsAreValidWithPixelRatio) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(800, 600)); @@ -2733,7 +2728,7 @@ TEST_F(EmbedderTest, PlatformViewMutatorsAreValidWithPixelRatio) { TEST_F(EmbedderTest, PlatformViewMutatorsAreValidWithPixelRatioAndRootSurfaceTransformation) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(800, 600)); @@ -2850,7 +2845,7 @@ TEST_F(EmbedderTest, } TEST_F(EmbedderTest, EmptySceneIsAcceptable) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(800, 600)); @@ -2876,7 +2871,7 @@ TEST_F(EmbedderTest, EmptySceneIsAcceptable) { } TEST_F(EmbedderTest, SceneWithNoRootContainerIsAcceptable) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(800, 600)); @@ -2906,7 +2901,7 @@ TEST_F(EmbedderTest, SceneWithNoRootContainerIsAcceptable) { // Verifies that https://skia-review.googlesource.com/c/skia/+/259174 is pulled // into the engine. TEST_F(EmbedderTest, ArcEndCapsAreDrawnCorrectly) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(800, 1024)); @@ -2940,7 +2935,7 @@ TEST_F(EmbedderTest, ArcEndCapsAreDrawnCorrectly) { } TEST_F(EmbedderTest, ClipsAreCorrectlyCalculated) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(400, 300)); @@ -3020,7 +3015,7 @@ TEST_F(EmbedderTest, ClipsAreCorrectlyCalculated) { } TEST_F(EmbedderTest, ComplexClipsAreCorrectlyCalculated) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1024, 600)); @@ -3105,7 +3100,7 @@ TEST_F(EmbedderTest, ComplexClipsAreCorrectlyCalculated) { } TEST_F(EmbedderTest, ObjectsCanBePostedViaPorts) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(800, 1024)); builder.SetDartEntrypoint("objects_can_be_posted"); @@ -3304,7 +3299,7 @@ TEST_F(EmbedderTest, ObjectsCanBePostedViaPorts) { } TEST_F(EmbedderTest, CompositorCanPostZeroLayersForPresentation) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(300, 200)); @@ -3338,7 +3333,7 @@ TEST_F(EmbedderTest, CompositorCanPostZeroLayersForPresentation) { } TEST_F(EmbedderTest, CompositorCanPostOnlyPlatformViews) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(300, 200)); @@ -3402,7 +3397,7 @@ TEST_F(EmbedderTest, CompositorCanPostOnlyPlatformViews) { } TEST_F(EmbedderTest, CompositorRenderTargetsAreRecycled) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(300, 200)); @@ -3448,7 +3443,7 @@ TEST_F(EmbedderTest, CompositorRenderTargetsAreRecycled) { } TEST_F(EmbedderTest, CompositorRenderTargetsAreInStableOrder) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(300, 200)); @@ -3518,8 +3513,7 @@ TEST_F(EmbedderTest, CompositorRenderTargetsAreInStableOrder) { } TEST_F(EmbedderTest, FrameInfoContainsValidWidthAndHeight) { - auto& context = static_cast( - GetEmbedderContext(EmbedderTestContextType::kOpenGLContext)); + auto& context = GetEmbedderContext(); const auto root_surface_transformation = SkMatrix().preTranslate(0, 1024).preRotate(-90, 0, 0); context.SetRootSurfaceTransformation(root_surface_transformation); @@ -3558,8 +3552,7 @@ TEST_F(EmbedderTest, FrameInfoContainsValidWidthAndHeight) { } TEST_F(EmbedderTest, MustNotRunWithBothFBOCallbacksSet) { - auto& context = static_cast( - GetEmbedderContext(EmbedderTestContextType::kOpenGLContext)); + auto& context = GetEmbedderContext(); context.SetOpenGLFBOCallBack(); EmbedderConfigBuilder builder(context); @@ -3570,8 +3563,7 @@ TEST_F(EmbedderTest, MustNotRunWithBothFBOCallbacksSet) { } TEST_F(EmbedderTest, MustNotRunWithBothPresentCallbacksSet) { - auto& context = static_cast( - GetEmbedderContext(EmbedderTestContextType::kOpenGLContext)); + auto& context = GetEmbedderContext(); context.SetOpenGLPresentCallBack(); EmbedderConfigBuilder builder(context); @@ -3582,8 +3574,7 @@ TEST_F(EmbedderTest, MustNotRunWithBothPresentCallbacksSet) { } TEST_F(EmbedderTest, MustStillRunWhenPopulateExistingDamageIsNotProvided) { - auto& context = static_cast( - GetEmbedderContext(EmbedderTestContextType::kOpenGLContext)); + auto& context = GetEmbedderContext(); context.GetRendererConfig().open_gl.populate_existing_damage = nullptr; EmbedderConfigBuilder builder(context); @@ -3594,8 +3585,7 @@ TEST_F(EmbedderTest, MustStillRunWhenPopulateExistingDamageIsNotProvided) { } TEST_F(EmbedderTest, MustRunWhenPopulateExistingDamageIsProvided) { - auto& context = static_cast( - GetEmbedderContext(EmbedderTestContextType::kOpenGLContext)); + auto& context = GetEmbedderContext(); context.GetRendererConfig().open_gl.populate_existing_damage = [](void* context, const intptr_t id, FlutterDamage* existing_damage) -> void { @@ -3610,8 +3600,7 @@ TEST_F(EmbedderTest, MustRunWhenPopulateExistingDamageIsProvided) { } TEST_F(EmbedderTest, MustRunWithPopulateExistingDamageAndFBOCallback) { - auto& context = static_cast( - GetEmbedderContext(EmbedderTestContextType::kOpenGLContext)); + auto& context = GetEmbedderContext(); context.GetRendererConfig().open_gl.fbo_callback = [](void* context) -> uint32_t { return 0; }; context.GetRendererConfig().open_gl.fbo_with_frame_info_callback = nullptr; @@ -3630,8 +3619,7 @@ TEST_F(EmbedderTest, MustRunWithPopulateExistingDamageAndFBOCallback) { TEST_F(EmbedderTest, MustNotRunWhenPopulateExistingDamageButNoOtherFBOCallback) { - auto& context = static_cast( - GetEmbedderContext(EmbedderTestContextType::kOpenGLContext)); + auto& context = GetEmbedderContext(); context.GetRendererConfig().open_gl.fbo_callback = nullptr; context.GetRendererConfig().open_gl.fbo_with_frame_info_callback = nullptr; context.GetRendererConfig().open_gl.populate_existing_damage = @@ -3648,18 +3636,15 @@ TEST_F(EmbedderTest, } TEST_F(EmbedderTest, PresentInfoContainsValidFBOId) { - auto& context = static_cast( - GetEmbedderContext(EmbedderTestContextType::kOpenGLContext)); + auto& context = GetEmbedderContext(); + const auto root_surface_transformation = + SkMatrix().preTranslate(0, 1024).preRotate(-90, 0, 0); + context.SetRootSurfaceTransformation(root_surface_transformation); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(600, 1024)); builder.SetDartEntrypoint("push_frames_over_and_over"); - const auto root_surface_transformation = - SkMatrix().preTranslate(0, 1024).preRotate(-90, 0, 0); - - context.SetRootSurfaceTransformation(root_surface_transformation); - auto engine = builder.LaunchEngine(); // Send a window metrics events so frames may be scheduled. @@ -3692,8 +3677,7 @@ TEST_F(EmbedderTest, PresentInfoContainsValidFBOId) { TEST_F(EmbedderTest, PresentInfoReceivesFullDamageWhenExistingDamageIsWholeScreen) { - auto& context = static_cast( - GetEmbedderContext(EmbedderTestContextType::kOpenGLContext)); + auto& context = GetEmbedderContext(); context.GetRendererConfig().open_gl.populate_existing_damage = [](void* context, const intptr_t id, FlutterDamage* existing_damage) -> void { @@ -3773,8 +3757,7 @@ TEST_F(EmbedderTest, } TEST_F(EmbedderTest, PresentInfoReceivesEmptyDamage) { - auto& context = static_cast( - GetEmbedderContext(EmbedderTestContextType::kOpenGLContext)); + auto& context = GetEmbedderContext(); context.GetRendererConfig().open_gl.populate_existing_damage = [](void* context, const intptr_t id, FlutterDamage* existing_damage) -> void { @@ -3853,8 +3836,7 @@ TEST_F(EmbedderTest, PresentInfoReceivesEmptyDamage) { } TEST_F(EmbedderTest, PresentInfoReceivesPartialDamage) { - auto& context = static_cast( - GetEmbedderContext(EmbedderTestContextType::kOpenGLContext)); + auto& context = GetEmbedderContext(); context.GetRendererConfig().open_gl.populate_existing_damage = [](void* context, const intptr_t id, FlutterDamage* existing_damage) -> void { @@ -3934,8 +3916,7 @@ TEST_F(EmbedderTest, PresentInfoReceivesPartialDamage) { } TEST_F(EmbedderTest, PopulateExistingDamageReceivesValidID) { - auto& context = static_cast( - GetEmbedderContext(EmbedderTestContextType::kOpenGLContext)); + auto& context = GetEmbedderContext(); context.GetRendererConfig().open_gl.populate_existing_damage = [](void* context, const intptr_t id, FlutterDamage* existing_damage) -> void { @@ -3969,8 +3950,7 @@ TEST_F(EmbedderTest, PopulateExistingDamageReceivesValidID) { } TEST_F(EmbedderTest, PopulateExistingDamageReceivesInvalidID) { - auto& context = static_cast( - GetEmbedderContext(EmbedderTestContextType::kOpenGLContext)); + auto& context = GetEmbedderContext(); context.GetRendererConfig().open_gl.populate_existing_damage = [](void* context, const intptr_t id, FlutterDamage* existing_damage) -> void { @@ -4014,7 +3994,7 @@ TEST_F(EmbedderTest, PopulateExistingDamageReceivesInvalidID) { } TEST_F(EmbedderTest, SetSingleDisplayConfigurationWithDisplayId) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(800, 600)); @@ -4056,7 +4036,7 @@ TEST_F(EmbedderTest, SetSingleDisplayConfigurationWithDisplayId) { } TEST_F(EmbedderTest, SetSingleDisplayConfigurationWithoutDisplayId) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(800, 600)); @@ -4098,7 +4078,7 @@ TEST_F(EmbedderTest, SetSingleDisplayConfigurationWithoutDisplayId) { } TEST_F(EmbedderTest, SetValidMultiDisplayConfiguration) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(800, 600)); @@ -4147,7 +4127,7 @@ TEST_F(EmbedderTest, SetValidMultiDisplayConfiguration) { } TEST_F(EmbedderTest, MultipleDisplaysWithSingleDisplayTrueIsInvalid) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(800, 600)); @@ -4193,7 +4173,7 @@ TEST_F(EmbedderTest, MultipleDisplaysWithSingleDisplayTrueIsInvalid) { } TEST_F(EmbedderTest, MultipleDisplaysWithSameDisplayIdIsInvalid) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(800, 600)); @@ -4239,7 +4219,7 @@ TEST_F(EmbedderTest, MultipleDisplaysWithSameDisplayIdIsInvalid) { } TEST_F(EmbedderTest, CompositorRenderTargetsNotRecycledWhenAvoidsCacheSet) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(300, 200)); @@ -4287,7 +4267,7 @@ TEST_F(EmbedderTest, CompositorRenderTargetsNotRecycledWhenAvoidsCacheSet) { } TEST_F(EmbedderTest, SnapshotRenderTargetScalesDownToDriverMax) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(800, 600)); @@ -4330,7 +4310,7 @@ TEST_F(EmbedderTest, SnapshotRenderTargetScalesDownToDriverMax) { } TEST_F(EmbedderTest, ObjectsPostedViaPortsServicedOnSecondaryTaskHeap) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(800, 1024)); builder.SetDartEntrypoint("objects_can_be_posted"); @@ -4380,7 +4360,7 @@ TEST_F(EmbedderTest, ObjectsPostedViaPortsServicedOnSecondaryTaskHeap) { } TEST_F(EmbedderTest, CreateInvalidBackingstoreOpenGLTexture) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); @@ -4443,7 +4423,7 @@ TEST_F(EmbedderTest, CreateInvalidBackingstoreOpenGLTexture) { } TEST_F(EmbedderTest, CreateInvalidBackingstoreOpenGLFramebuffer) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); @@ -4506,7 +4486,7 @@ TEST_F(EmbedderTest, CreateInvalidBackingstoreOpenGLFramebuffer) { } TEST_F(EmbedderTest, CreateInvalidBackingstoreOpenGLSurface) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); @@ -4628,8 +4608,7 @@ TEST_F(EmbedderTest, ExternalTextureGLRefreshedTooOften) { TEST_F( EmbedderTest, PresentInfoReceivesFullScreenDamageWhenPopulateExistingDamageIsNotProvided) { - auto& context = static_cast( - GetEmbedderContext(EmbedderTestContextType::kOpenGLContext)); + auto& context = GetEmbedderContext(); context.GetRendererConfig().open_gl.populate_existing_damage = nullptr; EmbedderConfigBuilder builder(context); @@ -4695,8 +4674,7 @@ TEST_F( TEST_F(EmbedderTest, PresentInfoReceivesJoinedDamageWhenExistingDamageContainsMultipleRects) { - auto& context = static_cast( - GetEmbedderContext(EmbedderTestContextType::kOpenGLContext)); + auto& context = GetEmbedderContext(); context.GetRendererConfig().open_gl.populate_existing_damage = [](void* context, const intptr_t id, FlutterDamage* existing_damage) -> void { @@ -4778,8 +4756,7 @@ TEST_F(EmbedderTest, } TEST_F(EmbedderTest, CanRenderWithImpellerOpenGL) { - EmbedderTestContextGL& context = static_cast( - GetEmbedderContext(EmbedderTestContextType::kOpenGLContext)); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); bool present_called = false; @@ -4838,7 +4815,7 @@ TEST_F(EmbedderTest, CanRenderWithImpellerOpenGL) { } TEST_F(EmbedderTest, CompositorMustBeAbleToRenderToOpenGLSurface) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(800, 600)); @@ -4954,7 +4931,7 @@ TEST_F(EmbedderTest, CompositorMustBeAbleToRenderToOpenGLSurface) { } TEST_F(EmbedderTest, CompositorMustBeAbleToRenderKnownSceneToOpenGLSurfaces) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(800, 600)); diff --git a/shell/platform/embedder/tests/embedder_metal_unittests.mm b/shell/platform/embedder/tests/embedder_metal_unittests.mm index a1a2088a634cc..67e49d14092f8 100644 --- a/shell/platform/embedder/tests/embedder_metal_unittests.mm +++ b/shell/platform/embedder/tests/embedder_metal_unittests.mm @@ -36,7 +36,7 @@ using EmbedderTest = testing::EmbedderTest; TEST_F(EmbedderTest, CanRenderGradientWithMetal) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kMetalContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetDartEntrypoint("render_gradient"); @@ -74,8 +74,7 @@ } TEST_F(EmbedderTest, ExternalTextureMetal) { - EmbedderTestContextMetal& context = reinterpret_cast( - GetEmbedderContext(EmbedderTestContextType::kMetalContext)); + auto& context = GetEmbedderContext(); const auto texture_size = SkISize::Make(800, 600); const int64_t texture_id = 1; @@ -128,7 +127,7 @@ } TEST_F(EmbedderTest, MetalCompositorMustBeAbleToRenderPlatformViews) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kMetalContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(800, 600)); @@ -239,7 +238,7 @@ } TEST_F(EmbedderTest, CanRenderSceneWithoutCustomCompositorMetal) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kMetalContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); @@ -263,8 +262,8 @@ } TEST_F(EmbedderTest, TextureDestructionCallbackCalledWithoutCustomCompositorMetal) { - EmbedderTestContextMetal& context = reinterpret_cast( - GetEmbedderContext(EmbedderTestContextType::kMetalContext)); + auto& context = GetEmbedderContext(); + EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(800, 600)); builder.SetDartEntrypoint("texture_destruction_callback_called_without_custom_compositor"); @@ -313,7 +312,7 @@ } TEST_F(EmbedderTest, CompositorMustBeAbleToRenderKnownSceneMetal) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kMetalContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(800, 600)); @@ -510,7 +509,7 @@ } TEST_F(EmbedderTest, CreateInvalidBackingstoreMetalTexture) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kMetalContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); @@ -565,8 +564,7 @@ void Collect() { } TEST_F(EmbedderTest, ExternalTextureMetalRefreshedTooOften) { - EmbedderTestContextMetal& context = reinterpret_cast( - GetEmbedderContext(EmbedderTestContextType::kMetalContext)); + auto& context = GetEmbedderContext(); TestMetalContext* metal_context = context.GetTestMetalContext(); auto metal_texture = metal_context->CreateMetalTexture(SkISize::Make(100, 100)); @@ -614,7 +612,7 @@ void Collect() { } TEST_F(EmbedderTest, CanRenderWithImpellerMetal) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kMetalContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); @@ -639,7 +637,7 @@ void Collect() { } TEST_F(EmbedderTest, CanRenderTextWithImpellerMetal) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kMetalContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); @@ -664,7 +662,7 @@ void Collect() { } TEST_F(EmbedderTest, CanRenderTextWithImpellerAndCompositorMetal) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kMetalContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); diff --git a/shell/platform/embedder/tests/embedder_test.cc b/shell/platform/embedder/tests/embedder_test.cc index 10eb5595602a7..fbed2d29a8566 100644 --- a/shell/platform/embedder/tests/embedder_test.cc +++ b/shell/platform/embedder/tests/embedder_test.cc @@ -3,6 +3,10 @@ // found in the LICENSE file. #include "flutter/shell/platform/embedder/tests/embedder_test.h" + +#include +#include + #include "flutter/shell/platform/embedder/tests/embedder_test_context_software.h" namespace flutter::testing { @@ -13,62 +17,53 @@ std::string EmbedderTest::GetFixturesDirectory() const { return GetFixturesPath(); } -EmbedderTestContext& EmbedderTest::GetEmbedderContext( - EmbedderTestContextType type) { - // Setup the embedder context lazily instead of in the constructor because we - // don't to do all the work if the test won't end up using context. - if (!embedder_contexts_[type]) { - switch (type) { - case EmbedderTestContextType::kSoftwareContext: - embedder_contexts_[type] = CreateSoftwareContext(); - break; - case EmbedderTestContextType::kOpenGLContext: - embedder_contexts_[type] = CreateGLContext(); - break; - case EmbedderTestContextType::kVulkanContext: - embedder_contexts_[type] = CreateVulkanContext(); - break; - case EmbedderTestContextType::kMetalContext: - embedder_contexts_[type] = CreateMetalContext(); - break; - default: - FML_DCHECK(false) << "Invalid context type specified."; - break; - } +EmbedderTestContext& EmbedderTest::GetSoftwareContext() { + if (!software_context_) { + software_context_ = + std::make_unique(GetFixturesDirectory()); } - - return *embedder_contexts_[type]; -} - -std::unique_ptr EmbedderTest::CreateSoftwareContext() { - return std::make_unique(GetFixturesDirectory()); + return *software_context_.get(); } #ifndef SHELL_ENABLE_GL // Fallback implementation. // See: flutter/shell/platform/embedder/tests/embedder_test_gl.cc. -std::unique_ptr EmbedderTest::CreateGLContext() { +EmbedderTestContext& EmbedderTest::GetGLContext() { FML_LOG(FATAL) << "OpenGL is not supported in this build"; - return nullptr; + std::terminate(); } #endif #ifndef SHELL_ENABLE_METAL // Fallback implementation. // See: flutter/shell/platform/embedder/tests/embedder_test_metal.mm. -std::unique_ptr EmbedderTest::CreateMetalContext() { +EmbedderTestContext& EmbedderTest::GetMetalContext() { FML_LOG(FATAL) << "Metal is not supported in this build"; - return nullptr; + std::terminate(); } #endif #ifndef SHELL_ENABLE_VULKAN // Fallback implementation. // See: flutter/shell/platform/embedder/tests/embedder_test_vulkan.cc. -std::unique_ptr EmbedderTest::CreateVulkanContext() { +EmbedderTestContext& EmbedderTest::GetVulkanContext() { FML_LOG(FATAL) << "Vulkan is not supported in this build"; - return nullptr; + std::terminate(); } #endif +EmbedderTestContext& EmbedderTestMultiBackend::GetEmbedderContext( + EmbedderTestContextType type) { + switch (type) { + case EmbedderTestContextType::kOpenGLContext: + return GetGLContext(); + case EmbedderTestContextType::kMetalContext: + return GetMetalContext(); + case EmbedderTestContextType::kSoftwareContext: + return GetSoftwareContext(); + case EmbedderTestContextType::kVulkanContext: + return GetVulkanContext(); + } +} + } // namespace flutter::testing diff --git a/shell/platform/embedder/tests/embedder_test.h b/shell/platform/embedder/tests/embedder_test.h index 4ba11ffdb4784..066fd535dac3d 100644 --- a/shell/platform/embedder/tests/embedder_test.h +++ b/shell/platform/embedder/tests/embedder_test.h @@ -16,29 +16,69 @@ namespace flutter::testing { +class EmbedderTestContextGL; +class EmbedderTestContextMetal; +class EmbedderTestContextSoftware; +class EmbedderTestContextVulkan; + class EmbedderTest : public ThreadTest { public: EmbedderTest(); std::string GetFixturesDirectory() const; - EmbedderTestContext& GetEmbedderContext(EmbedderTestContextType type); + template + T& GetEmbedderContext() { + static_assert(false, "Unsupported test context type"); + } + + template <> + EmbedderTestContextGL& GetEmbedderContext() { + return reinterpret_cast(GetGLContext()); + } + + template <> + EmbedderTestContextMetal& GetEmbedderContext() { + return reinterpret_cast(GetMetalContext()); + } + + template <> + EmbedderTestContextSoftware& + GetEmbedderContext() { + return reinterpret_cast(GetSoftwareContext()); + } - private: - std::map> - embedder_contexts_; + template <> + EmbedderTestContextVulkan& GetEmbedderContext() { + return reinterpret_cast(GetVulkanContext()); + } - std::unique_ptr CreateSoftwareContext(); - std::unique_ptr CreateGLContext(); - std::unique_ptr CreateMetalContext(); - std::unique_ptr CreateVulkanContext(); + protected: + // We return the base class here and reinterpret_cast in the template + // specializations because we're using forward declarations rather than + // including the headers directly, and thus the relationship between the base + // class and subclasses is unknown to the compiler here. We avoid including + // the headers directly because the Metal headers include Objective-C types, + // and thus cannot be included in pure C++ translation units. + EmbedderTestContext& GetGLContext(); + EmbedderTestContext& GetMetalContext(); + EmbedderTestContext& GetSoftwareContext(); + EmbedderTestContext& GetVulkanContext(); + + std::unique_ptr gl_context_; + std::unique_ptr metal_context_; + std::unique_ptr software_context_; + std::unique_ptr vulkan_context_; FML_DISALLOW_COPY_AND_ASSIGN(EmbedderTest); }; class EmbedderTestMultiBackend : public EmbedderTest, - public ::testing::WithParamInterface {}; + public ::testing::WithParamInterface { + public: + EmbedderTestContext& GetEmbedderContext(EmbedderTestContextType type); +}; } // namespace flutter::testing diff --git a/shell/platform/embedder/tests/embedder_test_gl.cc b/shell/platform/embedder/tests/embedder_test_gl.cc index 6361437b57f92..0136947962bb5 100644 --- a/shell/platform/embedder/tests/embedder_test_gl.cc +++ b/shell/platform/embedder/tests/embedder_test_gl.cc @@ -8,8 +8,12 @@ namespace flutter::testing { -std::unique_ptr EmbedderTest::CreateGLContext() { - return std::make_unique(GetFixturesDirectory()); +EmbedderTestContext& EmbedderTest::GetGLContext() { + if (!gl_context_) { + gl_context_ = + std::make_unique(GetFixturesDirectory()); + } + return *gl_context_.get(); } } // namespace flutter::testing diff --git a/shell/platform/embedder/tests/embedder_test_metal.mm b/shell/platform/embedder/tests/embedder_test_metal.mm index 63c210fced333..86edf931e1cb3 100644 --- a/shell/platform/embedder/tests/embedder_test_metal.mm +++ b/shell/platform/embedder/tests/embedder_test_metal.mm @@ -8,8 +8,11 @@ namespace flutter::testing { -std::unique_ptr EmbedderTest::CreateMetalContext() { - return std::make_unique(GetFixturesDirectory()); +EmbedderTestContext& EmbedderTest::GetMetalContext() { + if (!metal_context_) { + metal_context_ = std::make_unique(GetFixturesDirectory()); + } + return *metal_context_.get(); } } // namespace flutter::testing diff --git a/shell/platform/embedder/tests/embedder_test_vulkan.cc b/shell/platform/embedder/tests/embedder_test_vulkan.cc index 2dea4f6265679..63b69d2eb2cc7 100644 --- a/shell/platform/embedder/tests/embedder_test_vulkan.cc +++ b/shell/platform/embedder/tests/embedder_test_vulkan.cc @@ -8,8 +8,12 @@ namespace flutter::testing { -std::unique_ptr EmbedderTest::CreateVulkanContext() { - return std::make_unique(GetFixturesDirectory()); +EmbedderTestContext& EmbedderTest::GetVulkanContext() { + if (!vulkan_context_) { + vulkan_context_ = + std::make_unique(GetFixturesDirectory()); + } + return *vulkan_context_.get(); } } // namespace flutter::testing diff --git a/shell/platform/embedder/tests/embedder_unittests.cc b/shell/platform/embedder/tests/embedder_unittests.cc index 1f6323427a785..529918c283dcd 100644 --- a/shell/platform/embedder/tests/embedder_unittests.cc +++ b/shell/platform/embedder/tests/embedder_unittests.cc @@ -65,7 +65,7 @@ TEST(EmbedderTestNoFixture, MustNotRunWithInvalidArgs) { } TEST_F(EmbedderTest, CanLaunchAndShutdownWithValidProjectArgs) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); fml::AutoResetWaitableEvent latch; context.AddIsolateCreateCallback([&latch]() { latch.Signal(); }); EmbedderConfigBuilder builder(context); @@ -79,8 +79,8 @@ TEST_F(EmbedderTest, CanLaunchAndShutdownWithValidProjectArgs) { // TODO(41999): Disabled because flaky. TEST_F(EmbedderTest, DISABLED_CanLaunchAndShutdownMultipleTimes) { - EmbedderConfigBuilder builder( - GetEmbedderContext(EmbedderTestContextType::kSoftwareContext)); + auto& context = GetEmbedderContext(); + EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); for (size_t i = 0; i < 3; ++i) { auto engine = builder.LaunchEngine(); @@ -90,7 +90,7 @@ TEST_F(EmbedderTest, DISABLED_CanLaunchAndShutdownMultipleTimes) { } TEST_F(EmbedderTest, CanInvokeCustomEntrypoint) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); static fml::AutoResetWaitableEvent latch; Dart_NativeFunction entrypoint = [](Dart_NativeArguments args) { latch.Signal(); @@ -105,7 +105,7 @@ TEST_F(EmbedderTest, CanInvokeCustomEntrypoint) { } TEST_F(EmbedderTest, CanInvokeCustomEntrypointMacro) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); fml::AutoResetWaitableEvent latch1; fml::AutoResetWaitableEvent latch2; @@ -146,7 +146,7 @@ TEST_F(EmbedderTest, CanInvokeCustomEntrypointMacro) { } TEST_F(EmbedderTest, CanTerminateCleanly) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("terminateExitCodeHandler"); @@ -155,7 +155,7 @@ TEST_F(EmbedderTest, CanTerminateCleanly) { } TEST_F(EmbedderTest, ExecutableNameNotNull) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); // Supply a callback to Dart for the test fixture to pass Platform.executable // back to us. @@ -180,7 +180,7 @@ TEST_F(EmbedderTest, ImplicitViewNotNull) { // TODO(loicsharma): Update this test when embedders can opt-out // of the implicit view. // See: https://github.com/flutter/flutter/issues/120306 - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); bool implicitViewNotNull = false; fml::AutoResetWaitableEvent latch; @@ -203,7 +203,7 @@ TEST_F(EmbedderTest, ImplicitViewNotNull) { std::atomic_size_t EmbedderTestTaskRunner::sEmbedderTaskRunnerIdentifiers = {}; TEST_F(EmbedderTest, CanSpecifyCustomPlatformTaskRunner) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); fml::AutoResetWaitableEvent latch; // Run the test on its own thread with a message loop so that it can safely @@ -281,7 +281,7 @@ TEST(EmbedderTestNoFixture, CanGetCurrentTimeInNanoseconds) { } TEST_F(EmbedderTest, CanReloadSystemFonts) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); auto engine = builder.LaunchEngine(); @@ -292,7 +292,7 @@ TEST_F(EmbedderTest, CanReloadSystemFonts) { } TEST_F(EmbedderTest, IsolateServiceIdSent) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); fml::AutoResetWaitableEvent latch; fml::Thread thread; @@ -335,7 +335,7 @@ TEST_F(EmbedderTest, IsolateServiceIdSent) { /// immediately collects the same. /// TEST_F(EmbedderTest, CanCreateAndCollectCallbacks) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("platform_messages_response"); @@ -373,8 +373,7 @@ TEST_F(EmbedderTest, PlatformMessagesCanReceiveResponse) { CreateNewThread()->PostTask([&]() { captures.thread_id = std::this_thread::get_id(); - auto& context = - GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("platform_messages_response"); @@ -430,7 +429,7 @@ TEST_F(EmbedderTest, PlatformMessagesCanReceiveResponse) { /// callback with the response is invoked to assert integrity. /// TEST_F(EmbedderTest, PlatformMessagesCanBeSentWithoutResponseHandles) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("platform_messages_no_response"); @@ -475,7 +474,7 @@ TEST_F(EmbedderTest, PlatformMessagesCanBeSentWithoutResponseHandles) { /// Tests that a null platform message can be sent. /// TEST_F(EmbedderTest, NullPlatformMessagesCanBeSent) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("null_platform_messages"); @@ -517,7 +516,7 @@ TEST_F(EmbedderTest, NullPlatformMessagesCanBeSent) { /// isn't equals to 0. /// TEST_F(EmbedderTest, InvalidPlatformMessages) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); auto engine = builder.LaunchEngine(); @@ -541,7 +540,7 @@ TEST_F(EmbedderTest, InvalidPlatformMessages) { /// using tag "flutter". TEST_F(EmbedderTest, CanSetCustomLogMessageCallback) { fml::AutoResetWaitableEvent callback_latch; - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetDartEntrypoint("custom_logger"); builder.SetSurface(SkISize::Make(1, 1)); @@ -560,7 +559,7 @@ TEST_F(EmbedderTest, CanSetCustomLogMessageCallback) { /// Tests that setting a custom log tag works. TEST_F(EmbedderTest, CanSetCustomLogTag) { fml::AutoResetWaitableEvent callback_latch; - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetDartEntrypoint("custom_logger"); builder.SetSurface(SkISize::Make(1, 1)); @@ -581,7 +580,7 @@ TEST_F(EmbedderTest, CanSetCustomLogTag) { /// set to true by default in these unit-tests). /// TEST_F(EmbedderTest, VMShutsDownWhenNoEnginesInProcess) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); const auto launch_count = DartVM::GetVMLaunchCount(); @@ -600,7 +599,7 @@ TEST_F(EmbedderTest, VMShutsDownWhenNoEnginesInProcess) { //------------------------------------------------------------------------------ /// TEST_F(EmbedderTest, DartEntrypointArgs) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); builder.AddDartEntrypointArgument("foo"); @@ -634,7 +633,7 @@ TEST_F(EmbedderTest, VMAndIsolateSnapshotSizesAreRedundantInAOTMode) { GTEST_SKIP(); return; } - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); @@ -649,7 +648,7 @@ TEST_F(EmbedderTest, VMAndIsolateSnapshotSizesAreRedundantInAOTMode) { } TEST_F(EmbedderTest, CanRenderImplicitView) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(800, 600)); @@ -681,7 +680,7 @@ TEST_F(EmbedderTest, CanRenderImplicitView) { } TEST_F(EmbedderTest, CanRenderImplicitViewUsingPresentLayersCallback) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(800, 600)); @@ -726,7 +725,7 @@ TEST_F(EmbedderTest, CompositorMustBeAbleToRenderKnownSceneWithSoftwareCompositor) { #endif // FML_OS_MACOSX && FML_ARCH_CPU_ARM64 - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(800, 600)); @@ -945,7 +944,7 @@ TEST_F(EmbedderTest, /// compositor, with a transparent overlay /// TEST_F(EmbedderTest, NoLayerCreatedForTransparentOverlayOnTopOfPlatformLayer) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(800, 600)); @@ -1082,7 +1081,7 @@ TEST_F(EmbedderTest, NoLayerCreatedForTransparentOverlayOnTopOfPlatformLayer) { /// compositor, with a no overlay /// TEST_F(EmbedderTest, NoLayerCreatedForNoOverlayOnTopOfPlatformLayer) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(800, 600)); @@ -1218,8 +1217,8 @@ TEST_F(EmbedderTest, NoLayerCreatedForNoOverlayOnTopOfPlatformLayer) { /// Test that an engine can be initialized but not run. /// TEST_F(EmbedderTest, CanCreateInitializedEngine) { - EmbedderConfigBuilder builder( - GetEmbedderContext(EmbedderTestContextType::kSoftwareContext)); + auto& context = GetEmbedderContext(); + EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); auto engine = builder.InitializeEngine(); ASSERT_TRUE(engine.is_valid()); @@ -1230,8 +1229,8 @@ TEST_F(EmbedderTest, CanCreateInitializedEngine) { /// Test that an initialized engine can be run exactly once. /// TEST_F(EmbedderTest, CanRunInitializedEngine) { - EmbedderConfigBuilder builder( - GetEmbedderContext(EmbedderTestContextType::kSoftwareContext)); + auto& context = GetEmbedderContext(); + EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); auto engine = builder.InitializeEngine(); ASSERT_TRUE(engine.is_valid()); @@ -1245,8 +1244,8 @@ TEST_F(EmbedderTest, CanRunInitializedEngine) { /// Test that an engine can be deinitialized. /// TEST_F(EmbedderTest, CanDeinitializeAnEngine) { - EmbedderConfigBuilder builder( - GetEmbedderContext(EmbedderTestContextType::kSoftwareContext)); + auto& context = GetEmbedderContext(); + EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); auto engine = builder.InitializeEngine(); ASSERT_TRUE(engine.is_valid()); @@ -1276,7 +1275,7 @@ TEST_F(EmbedderTest, CanDeinitializeAnEngine) { /// Test that a view can be added to a running engine. /// TEST_F(EmbedderTest, CanAddView) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("window_metrics_event_all_view_ids"); @@ -1324,7 +1323,7 @@ TEST_F(EmbedderTest, CanAddView) { /// Test that adding a view schedules a frame. /// TEST_F(EmbedderTest, AddViewSchedulesFrame) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("add_view_schedules_frame"); @@ -1369,7 +1368,7 @@ TEST_F(EmbedderTest, AddViewSchedulesFrame) { /// Test that a view that was added can be removed. /// TEST_F(EmbedderTest, CanRemoveView) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("window_metrics_event_all_view_ids"); @@ -1430,7 +1429,7 @@ TEST_F(EmbedderTest, CanRemoveView) { /// can *always* be rendered to. Test that this view cannot be removed. /// TEST_F(EmbedderTest, CannotRemoveImplicitView) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); @@ -1450,7 +1449,7 @@ TEST_F(EmbedderTest, CannotRemoveImplicitView) { /// Test that a view cannot be added if its ID already exists. /// TEST_F(EmbedderTest, CannotAddDuplicateViews) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("window_metrics_event_all_view_ids"); @@ -1522,7 +1521,7 @@ TEST_F(EmbedderTest, CannotAddDuplicateViews) { /// Test that a removed view's ID can be reused to add a new view. /// TEST_F(EmbedderTest, CanReuseViewIds) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("window_metrics_event_all_view_ids"); @@ -1587,7 +1586,7 @@ TEST_F(EmbedderTest, CanReuseViewIds) { /// Test that attempting to remove a view that does not exist fails as expected. /// TEST_F(EmbedderTest, CannotRemoveUnknownView) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); @@ -1613,7 +1612,7 @@ TEST_F(EmbedderTest, CannotRemoveUnknownView) { /// embedder's and engine's states remain synchronized. /// TEST_F(EmbedderTest, ViewOperationsOrdered) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("window_metrics_event_all_view_ids"); @@ -1760,7 +1759,7 @@ TEST_F(EmbedderTest, ViewOperationsOrdered) { /// Test the engine can present to multiple views. /// TEST_F(EmbedderTest, CanRenderMultipleViews) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); builder.SetCompositor(); @@ -1839,7 +1838,7 @@ TEST_F(EmbedderTest, CanRenderMultipleViews) { TEST_F(EmbedderTest, BackingStoresCorrespondToTheirViews) { constexpr FlutterViewId kSecondViewId = 123; constexpr FlutterViewId kThirdViewId = 456; - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetDartEntrypoint("render_all_views"); @@ -1993,7 +1992,7 @@ TEST_F(EmbedderTest, BackingStoresCorrespondToTheirViews) { } TEST_F(EmbedderTest, CanUpdateLocales) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("can_receive_locale_updates"); @@ -2052,7 +2051,7 @@ TEST_F(EmbedderTest, CanUpdateLocales) { } TEST_F(EmbedderTest, LocalizationCallbacksCalled) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); fml::AutoResetWaitableEvent latch; context.AddIsolateCreateCallback([&latch]() { latch.Signal(); }); EmbedderConfigBuilder builder(context); @@ -2084,7 +2083,7 @@ TEST_F(EmbedderTest, CanQueryDartAOTMode) { } TEST_F(EmbedderTest, VerifyB143464703WithSoftwareBackend) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1024, 600)); @@ -2208,7 +2207,7 @@ TEST_F(EmbedderTest, VerifyB143464703WithSoftwareBackend) { } TEST_F(EmbedderTest, CanSendLowMemoryNotification) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); @@ -2237,9 +2236,7 @@ TEST_F(EmbedderTest, CanPostTaskToAllNativeThreads) { auto platform_task_runner = CreateNewThread("platform_thread"); platform_task_runner->PostTask([&]() { - auto& context = - GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); - + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); @@ -2379,7 +2376,7 @@ TEST_F(EmbedderTest, MustNotRunWithMultipleAOTSources) { GTEST_SKIP(); return; } - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder( context, @@ -2421,7 +2418,7 @@ TEST_F(EmbedderTest, CanLaunchAndShutdownWithAValidElfSource) { GTEST_SKIP(); return; } - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); fml::AutoResetWaitableEvent latch; context.AddIsolateCreateCallback([&latch]() { latch.Signal(); }); @@ -2464,7 +2461,7 @@ TEST_F(EmbedderTest, CanSuccessfullyPopulateSpecificJITSnapshotCallbacks) { return; } - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); @@ -2520,7 +2517,7 @@ TEST_F(EmbedderTest, JITSnapshotCallbacksFailWithInvalidLocation) { return; } - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); @@ -2557,7 +2554,7 @@ TEST_F(EmbedderTest, CanLaunchEngineWithSpecifiedJITSnapshots) { return; } - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); @@ -2597,7 +2594,7 @@ TEST_F(EmbedderTest, CanLaunchEngineWithSomeSpecifiedJITSnapshots) { return; } - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); @@ -2630,7 +2627,7 @@ TEST_F(EmbedderTest, CanLaunchEngineWithInvalidJITSnapshots) { return; } - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); @@ -2656,7 +2653,7 @@ TEST_F(EmbedderTest, CanLaunchEngineWithUnspecifiedJITSnapshots) { return; } - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); @@ -2670,7 +2667,7 @@ TEST_F(EmbedderTest, CanLaunchEngineWithUnspecifiedJITSnapshots) { } TEST_F(EmbedderTest, InvalidFlutterWindowMetricsEvent) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); auto engine = builder.LaunchEngine(); @@ -2717,8 +2714,7 @@ static void expectSoftwareRenderingOutputMatches( std::string entrypoint, FlutterSoftwarePixelFormat pixfmt, const std::vector& bytes) { - auto& context = - test.GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = test.GetEmbedderContext(); EmbedderConfigBuilder builder(context); fml::AutoResetWaitableEvent latch; @@ -2940,8 +2936,7 @@ TEST_F(EmbedderTest, KeyDataIsCorrectlySerialized) { UniqueEngine engine; fml::AutoResetWaitableEvent ready; platform_task_runner->PostTask([&]() { - auto& context = - GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("key_data_echo"); @@ -3062,8 +3057,7 @@ TEST_F(EmbedderTest, KeyDataAreBuffered) { UniqueEngine engine; fml::AutoResetWaitableEvent ready; platform_task_runner->PostTask([&]() { - auto& context = - GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("key_data_late_echo"); @@ -3163,8 +3157,7 @@ TEST_F(EmbedderTest, KeyDataResponseIsCorrectlyInvoked) { auto platform_task_runner = CreateNewThread("platform_thread"); platform_task_runner->PostTask([&]() { - auto& context = - GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("key_data_echo"); @@ -3237,9 +3230,7 @@ TEST_F(EmbedderTest, BackToBackKeyEventResponsesCorrectlyInvoked) { auto platform_task_runner = CreateNewThread("platform_thread"); platform_task_runner->PostTask([&]() { - auto& context = - GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); - + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("key_data_echo"); @@ -3324,9 +3315,7 @@ TEST_F(EmbedderTest, VsyncCallbackPostedIntoFuture) { auto platform_task_runner = CreateNewThread("platform_thread"); platform_task_runner->PostTask([&]() { - auto& context = - GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); - + auto& context = GetEmbedderContext(); context.SetVsyncCallback([&](intptr_t baton) { platform_task_runner->PostTask([baton = baton, &engine, &vsync_latch]() { FlutterEngineOnVsync(engine.get(), baton, NanosFromEpoch(16), @@ -3369,7 +3358,7 @@ TEST_F(EmbedderTest, VsyncCallbackPostedIntoFuture) { } TEST_F(EmbedderTest, CanScheduleFrame) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("can_schedule_frame"); @@ -3397,7 +3386,7 @@ TEST_F(EmbedderTest, CanScheduleFrame) { } TEST_F(EmbedderTest, CanSetNextFrameCallback) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("draw_solid_red"); @@ -3484,7 +3473,7 @@ TEST_F(EmbedderTest, EmbedderThreadHostUseCustomThreadConfig) { /// Send a pointer event to Dart and wait until the Dart code signals /// it received the event. TEST_F(EmbedderTest, CanSendPointer) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("pointer_data_packet"); @@ -3535,7 +3524,7 @@ TEST_F(EmbedderTest, CanSendPointer) { /// Send a pointer event to Dart and wait until the Dart code echos with the /// view ID. TEST_F(EmbedderTest, CanSendPointerEventWithViewId) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("pointer_data_packet_view_id"); @@ -3597,7 +3586,7 @@ TEST_F(EmbedderTest, CanSendPointerEventWithViewId) { } TEST_F(EmbedderTest, WindowMetricsEventDefaultsToImplicitView) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("window_metrics_event_view_id"); @@ -3638,7 +3627,7 @@ TEST_F(EmbedderTest, WindowMetricsEventDefaultsToImplicitView) { } TEST_F(EmbedderTest, IgnoresWindowMetricsEventForUnknownView) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); EmbedderConfigBuilder builder(context); builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("window_metrics_event_view_id"); @@ -3694,7 +3683,7 @@ TEST_F(EmbedderTest, IgnoresWindowMetricsEventForUnknownView) { } TEST_F(EmbedderTest, RegisterChannelListener) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); fml::AutoResetWaitableEvent latch; fml::AutoResetWaitableEvent latch2; @@ -3725,7 +3714,7 @@ TEST_F(EmbedderTest, RegisterChannelListener) { } TEST_F(EmbedderTest, PlatformThreadIsolatesWithCustomPlatformTaskRunner) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); + auto& context = GetEmbedderContext(); static fml::AutoResetWaitableEvent latch; static std::thread::id ffi_call_thread_id; diff --git a/shell/platform/embedder/tests/embedder_vk_unittests.cc b/shell/platform/embedder/tests/embedder_vk_unittests.cc index 53ab019948e4b..6589830bbf1ac 100644 --- a/shell/platform/embedder/tests/embedder_vk_unittests.cc +++ b/shell/platform/embedder/tests/embedder_vk_unittests.cc @@ -95,11 +95,15 @@ static_assert( CheckSameSignature::value); } // namespace +TEST_F(EmbedderTest, CanGetVulkanEmbedderContext) { + auto& context = GetEmbedderContext(); + EmbedderConfigBuilder builder(context); +} + TEST_F(EmbedderTest, CanSwapOutVulkanCalls) { fml::AutoResetWaitableEvent latch; - auto& context = static_cast( - GetEmbedderContext(EmbedderTestContextType::kVulkanContext)); + auto& context = GetEmbedderContext(); context.AddIsolateCreateCallback([&latch]() { latch.Signal(); }); context.SetVulkanInstanceProcAddressCallback( [](void* user_data, FlutterVulkanInstanceHandle instance,