diff --git a/shell/platform/embedder/BUILD.gn b/shell/platform/embedder/BUILD.gn index 78079e8da7b4c..5a430ce408fd3 100644 --- a/shell/platform/embedder/BUILD.gn +++ b/shell/platform/embedder/BUILD.gn @@ -315,7 +315,6 @@ if (enable_unittests) { if (test_enable_gl) { sources += [ - "tests/embedder_config_builder_gl.cc", "tests/embedder_test_backingstore_producer_gl.cc", "tests/embedder_test_backingstore_producer_gl.h", "tests/embedder_test_compositor_gl.cc", @@ -333,7 +332,6 @@ if (enable_unittests) { if (test_enable_metal) { sources += [ - "tests/embedder_config_builder_metal.mm", "tests/embedder_test_backingstore_producer_metal.h", "tests/embedder_test_backingstore_producer_metal.mm", "tests/embedder_test_compositor_metal.h", @@ -348,7 +346,6 @@ if (enable_unittests) { if (test_enable_vulkan) { sources += [ - "tests/embedder_config_builder_vulkan.cc", "tests/embedder_test_backingstore_producer_vulkan.cc", "tests/embedder_test_backingstore_producer_vulkan.h", "tests/embedder_test_compositor_vulkan.cc", diff --git a/shell/platform/embedder/tests/embedder_a11y_unittests.cc b/shell/platform/embedder/tests/embedder_a11y_unittests.cc index 01cfff7cac374..c3510ec52ffad 100644 --- a/shell/platform/embedder/tests/embedder_a11y_unittests.cc +++ b/shell/platform/embedder/tests/embedder_a11y_unittests.cc @@ -35,7 +35,7 @@ TEST_F(EmbedderTest, CannotProvideMultipleSemanticsCallbacks) { { EmbedderConfigBuilder builder( GetEmbedderContext(EmbedderTestContextType::kSoftwareContext)); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.GetProjectArgs().update_semantics_callback = [](const FlutterSemanticsUpdate* update, void* user_data) {}; builder.GetProjectArgs().update_semantics_callback2 = @@ -48,7 +48,7 @@ TEST_F(EmbedderTest, CannotProvideMultipleSemanticsCallbacks) { { EmbedderConfigBuilder builder( GetEmbedderContext(EmbedderTestContextType::kSoftwareContext)); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.GetProjectArgs().update_semantics_callback2 = [](const FlutterSemanticsUpdate2* update, void* user_data) {}; builder.GetProjectArgs().update_semantics_node_callback = @@ -63,7 +63,7 @@ TEST_F(EmbedderTest, CannotProvideMultipleSemanticsCallbacks) { { EmbedderConfigBuilder builder( GetEmbedderContext(EmbedderTestContextType::kSoftwareContext)); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.GetProjectArgs().update_semantics_callback = [](const FlutterSemanticsUpdate* update, void* user_data) {}; builder.GetProjectArgs().update_semantics_node_callback = @@ -78,7 +78,7 @@ TEST_F(EmbedderTest, CannotProvideMultipleSemanticsCallbacks) { { EmbedderConfigBuilder builder( GetEmbedderContext(EmbedderTestContextType::kSoftwareContext)); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.GetProjectArgs().update_semantics_callback2 = [](const FlutterSemanticsUpdate2* update, void* user_data) {}; builder.GetProjectArgs().update_semantics_callback = @@ -171,7 +171,7 @@ TEST_F(EmbedderA11yTest, A11yTreeIsConsistentUsingV3Callbacks) { }); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("a11y_main"); auto engine = builder.LaunchEngine(); @@ -375,7 +375,7 @@ TEST_F(EmbedderA11yTest, A11yStringAttributes) { }); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("a11y_string_attributes"); auto engine = builder.LaunchEngine(); @@ -468,7 +468,7 @@ TEST_F(EmbedderA11yTest, A11yTreeIsConsistentUsingV2Callbacks) { }); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("a11y_main"); auto engine = builder.LaunchEngine(); @@ -662,7 +662,7 @@ TEST_F(EmbedderA11yTest, A11yTreeIsConsistentUsingV1Callbacks) { }); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("a11y_main"); auto engine = builder.LaunchEngine(); diff --git a/shell/platform/embedder/tests/embedder_config_builder.cc b/shell/platform/embedder/tests/embedder_config_builder.cc index abba1302ffd6b..fa99c15e5a7e7 100644 --- a/shell/platform/embedder/tests/embedder_config_builder.cc +++ b/shell/platform/embedder/tests/embedder_config_builder.cc @@ -8,7 +8,6 @@ #include "flutter/runtime/dart_vm.h" #include "flutter/shell/platform/embedder/embedder.h" #include "tests/embedder_test_context.h" -#include "third_party/skia/include/core/SkBitmap.h" #include "third_party/skia/include/core/SkImage.h" namespace flutter::testing { @@ -27,28 +26,6 @@ EmbedderConfigBuilder::EmbedderConfigBuilder( custom_task_runners_.struct_size = sizeof(FlutterCustomTaskRunners); - InitializeGLRendererConfig(); - InitializeMetalRendererConfig(); - InitializeVulkanRendererConfig(); - - software_renderer_config_.struct_size = sizeof(FlutterSoftwareRendererConfig); - software_renderer_config_.surface_present_callback = - [](void* context, const void* allocation, size_t row_bytes, - size_t height) { - auto image_info = - SkImageInfo::MakeN32Premul(SkISize::Make(row_bytes / 4, height)); - SkBitmap bitmap; - if (!bitmap.installPixels(image_info, const_cast(allocation), - row_bytes)) { - FML_LOG(ERROR) << "Could not copy pixels for the software " - "composition from the engine."; - return false; - } - bitmap.setImmutable(); - return reinterpret_cast(context)->Present( - SkImages::RasterFromBitmap(bitmap)); - }; - // The first argument is always the executable name. Don't make tests have to // do this manually. AddCommandLineArgument("embedder_unittest"); @@ -79,30 +56,6 @@ FlutterProjectArgs& EmbedderConfigBuilder::GetProjectArgs() { return project_args_; } -void EmbedderConfigBuilder::SetSoftwareRendererConfig(SkISize surface_size) { - renderer_config_.type = FlutterRendererType::kSoftware; - renderer_config_.software = software_renderer_config_; - context_.SetupSurface(surface_size); -} - -void EmbedderConfigBuilder::SetRendererConfig(EmbedderTestContextType type, - SkISize surface_size) { - switch (type) { - case EmbedderTestContextType::kOpenGLContext: - SetOpenGLRendererConfig(surface_size); - break; - case EmbedderTestContextType::kMetalContext: - SetMetalRendererConfig(surface_size); - break; - case EmbedderTestContextType::kVulkanContext: - SetVulkanRendererConfig(surface_size); - break; - case EmbedderTestContextType::kSoftwareContext: - SetSoftwareRendererConfig(surface_size); - break; - } -} - void EmbedderConfigBuilder::SetAssetsPath() { project_args_.assets_path = context_.GetAssetsPath().c_str(); } @@ -217,10 +170,6 @@ void EmbedderConfigBuilder::SetupVsyncCallback() { }; } -FlutterRendererConfig& EmbedderConfigBuilder::GetRendererConfig() { - return renderer_config_; -} - void EmbedderConfigBuilder::SetRenderTaskRunner( const FlutterTaskRunnerDescription* runner) { if (runner == nullptr) { @@ -336,11 +285,12 @@ UniqueEngine EmbedderConfigBuilder::SetupEngine(bool run) const { project_args.dart_entrypoint_argc = 0; } - auto result = - run ? FlutterEngineRun(FLUTTER_ENGINE_VERSION, &renderer_config_, - &project_args, &context_, &engine) - : FlutterEngineInitialize(FLUTTER_ENGINE_VERSION, &renderer_config_, - &project_args, &context_, &engine); + auto result = run ? FlutterEngineRun(FLUTTER_ENGINE_VERSION, + &context_.GetRendererConfig(), + &project_args, &context_, &engine) + : FlutterEngineInitialize( + FLUTTER_ENGINE_VERSION, &context_.GetRendererConfig(), + &project_args, &context_, &engine); if (result != kSuccess) { return {}; @@ -349,52 +299,4 @@ UniqueEngine EmbedderConfigBuilder::SetupEngine(bool run) const { return UniqueEngine{engine}; } -#ifndef SHELL_ENABLE_GL -// OpenGL fallback implementations. -// See: flutter/shell/platform/embedder/tests/embedder_config_builder_gl.cc. - -void EmbedderConfigBuilder::InitializeGLRendererConfig() { - // no-op. -} - -void EmbedderConfigBuilder::SetOpenGLFBOCallBack() { - FML_LOG(FATAL) << "OpenGL is not enabled in this build."; -} - -void EmbedderConfigBuilder::SetOpenGLPresentCallBack() { - FML_LOG(FATAL) << "OpenGL is not enabled in this build."; -} - -void EmbedderConfigBuilder::SetOpenGLRendererConfig(SkISize surface_size) { - FML_LOG(FATAL) << "OpenGL is not enabled in this build."; -} -#endif -#ifndef SHELL_ENABLE_METAL -// Metal fallback implementations. -// See: flutter/shell/platform/embedder/tests/embedder_config_builder_metal.mm. - -void EmbedderConfigBuilder::InitializeMetalRendererConfig() { - // no-op. -} - -void EmbedderConfigBuilder::SetMetalRendererConfig(SkISize surface_size) { - FML_LOG(FATAL) << "Metal is not enabled in this build."; -} -#endif -#ifndef SHELL_ENABLE_VULKAN -// Vulkan fallback implementations. -// See: flutter/shell/platform/embedder/tests/embedder_config_builder_vulkan.cc. - -void EmbedderConfigBuilder::InitializeVulkanRendererConfig() { - // no-op. -} - -void EmbedderConfigBuilder::SetVulkanRendererConfig( - SkISize surface_size, - std::optional - instance_proc_address_callback) { - FML_LOG(FATAL) << "Vulkan is not enabled in this build."; -} -#endif - } // namespace flutter::testing diff --git a/shell/platform/embedder/tests/embedder_config_builder.h b/shell/platform/embedder/tests/embedder_config_builder.h index 3ed9a8940e767..8db7072b6762f 100644 --- a/shell/platform/embedder/tests/embedder_config_builder.h +++ b/shell/platform/embedder/tests/embedder_config_builder.h @@ -44,31 +44,6 @@ class EmbedderConfigBuilder { FlutterProjectArgs& GetProjectArgs(); - void SetRendererConfig(EmbedderTestContextType type, SkISize surface_size); - - void SetSoftwareRendererConfig(SkISize surface_size = SkISize::Make(1, 1)); - - void SetOpenGLRendererConfig(SkISize surface_size); - - void SetMetalRendererConfig(SkISize surface_size); - - void SetVulkanRendererConfig( - SkISize surface_size, - std::optional - instance_proc_address_callback = {}); - - // Used to explicitly set an `open_gl.fbo_callback`. Using this method will - // cause your test to fail since the ctor for this class sets - // `open_gl.fbo_callback_with_frame_info`. This method exists as a utility to - // explicitly test this behavior. - void SetOpenGLFBOCallBack(); - - // Used to explicitly set an `open_gl.present`. Using this method will cause - // your test to fail since the ctor for this class sets - // `open_gl.present_with_info`. This method exists as a utility to explicitly - // test this behavior. - void SetOpenGLPresentCallBack(); - void SetAssetsPath(); void SetSnapshots(); @@ -109,7 +84,7 @@ class EmbedderConfigBuilder { FlutterCompositor& GetCompositor(); - FlutterRendererConfig& GetRendererConfig(); + void SetSurface(SkISize surface_size) { context_.SetSurface(surface_size); } void SetRenderTargetType( EmbedderTestBackingStoreProducer::RenderTargetType type, @@ -125,23 +100,8 @@ class EmbedderConfigBuilder { void SetupVsyncCallback(); private: - void InitializeGLRendererConfig(); - void InitializeVulkanRendererConfig(); - void InitializeMetalRendererConfig(); - EmbedderTestContext& context_; FlutterProjectArgs project_args_ = {}; - FlutterRendererConfig renderer_config_ = {}; - FlutterSoftwareRendererConfig software_renderer_config_ = {}; -#ifdef SHELL_ENABLE_GL - FlutterOpenGLRendererConfig opengl_renderer_config_ = {}; -#endif -#ifdef SHELL_ENABLE_METAL - FlutterMetalRendererConfig metal_renderer_config_ = {}; -#endif -#ifdef SHELL_ENABLE_VULKAN - FlutterVulkanRendererConfig vulkan_renderer_config_ = {}; -#endif std::string dart_entrypoint_; FlutterCustomTaskRunners custom_task_runners_ = {}; FlutterCompositor compositor_ = {}; diff --git a/shell/platform/embedder/tests/embedder_config_builder_gl.cc b/shell/platform/embedder/tests/embedder_config_builder_gl.cc deleted file mode 100644 index 2defa53fea62c..0000000000000 --- a/shell/platform/embedder/tests/embedder_config_builder_gl.cc +++ /dev/null @@ -1,81 +0,0 @@ -// 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/shell/platform/embedder/tests/embedder_config_builder.h" - -#include "flutter/shell/platform/embedder/tests/embedder_test_compositor_gl.h" -#include "flutter/shell/platform/embedder/tests/embedder_test_context_gl.h" - -namespace flutter::testing { - -void EmbedderConfigBuilder::InitializeGLRendererConfig() { - opengl_renderer_config_.struct_size = sizeof(FlutterOpenGLRendererConfig); - opengl_renderer_config_.make_current = [](void* context) -> bool { - return reinterpret_cast(context)->GLMakeCurrent(); - }; - opengl_renderer_config_.clear_current = [](void* context) -> bool { - return reinterpret_cast(context)->GLClearCurrent(); - }; - opengl_renderer_config_.present_with_info = - [](void* context, const FlutterPresentInfo* present_info) -> bool { - return reinterpret_cast(context)->GLPresent( - *present_info); - }; - opengl_renderer_config_.fbo_with_frame_info_callback = - [](void* context, const FlutterFrameInfo* frame_info) -> uint32_t { - return reinterpret_cast(context)->GLGetFramebuffer( - *frame_info); - }; - opengl_renderer_config_.populate_existing_damage = nullptr; - opengl_renderer_config_.make_resource_current = [](void* context) -> bool { - return reinterpret_cast(context) - ->GLMakeResourceCurrent(); - }; - opengl_renderer_config_.gl_proc_resolver = [](void* context, - const char* name) -> void* { - return reinterpret_cast(context)->GLGetProcAddress( - name); - }; - opengl_renderer_config_.fbo_reset_after_present = true; - opengl_renderer_config_.surface_transformation = - [](void* context) -> FlutterTransformation { - return reinterpret_cast(context) - ->GetRootSurfaceTransformation(); - }; -} - -void EmbedderConfigBuilder::SetOpenGLFBOCallBack() { - // SetOpenGLRendererConfig must be called before this. - FML_CHECK(renderer_config_.type == FlutterRendererType::kOpenGL); - renderer_config_.open_gl.fbo_callback = [](void* context) -> uint32_t { - FlutterFrameInfo frame_info = {}; - // fbo_callback doesn't use the frame size information, only - // fbo_callback_with_frame_info does. - frame_info.struct_size = sizeof(FlutterFrameInfo); - frame_info.size.width = 0; - frame_info.size.height = 0; - return reinterpret_cast(context)->GLGetFramebuffer( - frame_info); - }; -} - -void EmbedderConfigBuilder::SetOpenGLPresentCallBack() { - // SetOpenGLRendererConfig must be called before this. - FML_CHECK(renderer_config_.type == FlutterRendererType::kOpenGL); - renderer_config_.open_gl.present = [](void* context) -> bool { - // passing a placeholder fbo_id. - return reinterpret_cast(context)->GLPresent( - FlutterPresentInfo{ - .fbo_id = 0, - }); - }; -} - -void EmbedderConfigBuilder::SetOpenGLRendererConfig(SkISize surface_size) { - renderer_config_.type = FlutterRendererType::kOpenGL; - renderer_config_.open_gl = opengl_renderer_config_; - context_.SetupSurface(surface_size); -} - -} // namespace flutter::testing diff --git a/shell/platform/embedder/tests/embedder_config_builder_metal.mm b/shell/platform/embedder/tests/embedder_config_builder_metal.mm deleted file mode 100644 index c76b311865781..0000000000000 --- a/shell/platform/embedder/tests/embedder_config_builder_metal.mm +++ /dev/null @@ -1,47 +0,0 @@ -// 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/shell/platform/embedder/tests/embedder_config_builder.h" - -#include "flutter/shell/platform/embedder/tests/embedder_test_context_metal.h" - -namespace flutter::testing { - -void EmbedderConfigBuilder::InitializeMetalRendererConfig() { - if (context_.GetContextType() != EmbedderTestContextType::kMetalContext) { - return; - } - - metal_renderer_config_.struct_size = sizeof(metal_renderer_config_); - EmbedderTestContextMetal& metal_context = reinterpret_cast(context_); - - metal_renderer_config_.device = metal_context.GetTestMetalContext()->GetMetalDevice(); - metal_renderer_config_.present_command_queue = - metal_context.GetTestMetalContext()->GetMetalCommandQueue(); - metal_renderer_config_.get_next_drawable_callback = [](void* user_data, - const FlutterFrameInfo* frame_info) { - return reinterpret_cast(user_data)->GetNextDrawable(frame_info); - }; - metal_renderer_config_.present_drawable_callback = - [](void* user_data, const FlutterMetalTexture* texture) -> bool { - EmbedderTestContextMetal* metal_context = - reinterpret_cast(user_data); - return metal_context->Present(texture->texture_id); - }; - metal_renderer_config_.external_texture_frame_callback = - [](void* user_data, int64_t texture_id, size_t width, size_t height, - FlutterMetalExternalTexture* texture_out) -> bool { - EmbedderTestContextMetal* metal_context = - reinterpret_cast(user_data); - return metal_context->PopulateExternalTexture(texture_id, width, height, texture_out); - }; -} - -void EmbedderConfigBuilder::SetMetalRendererConfig(SkISize surface_size) { - renderer_config_.type = FlutterRendererType::kMetal; - renderer_config_.metal = metal_renderer_config_; - context_.SetupSurface(surface_size); -} - -} // namespace flutter::testing diff --git a/shell/platform/embedder/tests/embedder_config_builder_vulkan.cc b/shell/platform/embedder/tests/embedder_config_builder_vulkan.cc deleted file mode 100644 index 3f6558104cb77..0000000000000 --- a/shell/platform/embedder/tests/embedder_config_builder_vulkan.cc +++ /dev/null @@ -1,73 +0,0 @@ -// 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/shell/platform/embedder/tests/embedder_config_builder.h" - -#include "flutter/shell/platform/embedder/tests/embedder_test_context_vulkan.h" -#include "flutter/vulkan/vulkan_device.h" // nogncheck -#include "vulkan/vulkan_core.h" // nogncheck - -namespace flutter::testing { - -void EmbedderConfigBuilder::InitializeVulkanRendererConfig() { - if (context_.GetContextType() != EmbedderTestContextType::kVulkanContext) { - return; - } - - vulkan_renderer_config_.struct_size = sizeof(FlutterVulkanRendererConfig); - vulkan_renderer_config_.version = - static_cast(context_) - .vulkan_context_->application_->GetAPIVersion(); - vulkan_renderer_config_.instance = - static_cast(context_) - .vulkan_context_->application_->GetInstance(); - vulkan_renderer_config_.physical_device = - static_cast(context_) - .vulkan_context_->device_->GetPhysicalDeviceHandle(); - vulkan_renderer_config_.device = - static_cast(context_) - .vulkan_context_->device_->GetHandle(); - vulkan_renderer_config_.queue_family_index = - static_cast(context_) - .vulkan_context_->device_->GetGraphicsQueueIndex(); - vulkan_renderer_config_.queue = - static_cast(context_) - .vulkan_context_->device_->GetQueueHandle(); - vulkan_renderer_config_.get_instance_proc_address_callback = - EmbedderTestContextVulkan::InstanceProcAddr; - vulkan_renderer_config_.get_next_image_callback = - [](void* context, - const FlutterFrameInfo* frame_info) -> FlutterVulkanImage { - VkImage image = - reinterpret_cast(context)->GetNextImage( - {static_cast(frame_info->size.width), - static_cast(frame_info->size.height)}); - return { - .struct_size = sizeof(FlutterVulkanImage), - .image = reinterpret_cast(image), - .format = VK_FORMAT_R8G8B8A8_UNORM, - }; - }; - vulkan_renderer_config_.present_image_callback = - [](void* context, const FlutterVulkanImage* image) -> bool { - return reinterpret_cast(context)->PresentImage( - reinterpret_cast(image->image)); - }; -} - -void EmbedderConfigBuilder::SetVulkanRendererConfig( - SkISize surface_size, - std::optional - instance_proc_address_callback) { - renderer_config_.type = FlutterRendererType::kVulkan; - FlutterVulkanRendererConfig vulkan_renderer_config = vulkan_renderer_config_; - if (instance_proc_address_callback.has_value()) { - vulkan_renderer_config.get_instance_proc_address_callback = - instance_proc_address_callback.value(); - } - renderer_config_.vulkan = vulkan_renderer_config; - context_.SetupSurface(surface_size); -} - -} // namespace flutter::testing diff --git a/shell/platform/embedder/tests/embedder_gl_unittests.cc b/shell/platform/embedder/tests/embedder_gl_unittests.cc index 086f36be9b215..f981c7465b9bf 100644 --- a/shell/platform/embedder/tests/embedder_gl_unittests.cc +++ b/shell/platform/embedder/tests/embedder_gl_unittests.cc @@ -41,8 +41,7 @@ // CREATE_NATIVE_ENTRY is leaky by design // NOLINTBEGIN(clang-analyzer-core.StackAddressEscape) -namespace flutter { -namespace testing { +namespace flutter::testing { using EmbedderTest = testing::EmbedderTest; @@ -54,7 +53,7 @@ TEST_F(EmbedderTest, CanGetVulkanEmbedderContext) { TEST_F(EmbedderTest, CanCreateOpenGLRenderingEngine) { EmbedderConfigBuilder builder( GetEmbedderContext(EmbedderTestContextType::kOpenGLContext)); - builder.SetOpenGLRendererConfig(SkISize::Make(1, 1)); + builder.SetSurface(SkISize::Make(1, 1)); auto engine = builder.LaunchEngine(); ASSERT_TRUE(engine.is_valid()); } @@ -68,7 +67,7 @@ TEST_F(EmbedderTest, MustPreventEngineLaunchWhenRequiredCompositorArgsAreAbsent) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(1, 1)); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetCompositor(); builder.GetCompositor().create_backing_store_callback = nullptr; builder.GetCompositor().collect_backing_store_callback = nullptr; @@ -86,7 +85,7 @@ TEST_F(EmbedderTest, TEST_F(EmbedderTest, LaunchFailsWhenMultiplePresentCallbacks) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(1, 1)); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetCompositor(); builder.GetCompositor().present_layers_callback = [](const FlutterLayer** layers, size_t layers_count, void* user_data) { @@ -106,7 +105,7 @@ TEST_F(EmbedderTest, CompositorMustBeAbleToRenderToOpenGLFramebuffer) { auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); builder.SetDartEntrypoint("can_composite_platform_views"); @@ -226,7 +225,7 @@ TEST_F(EmbedderTest, RasterCacheDisabledWithPlatformViews) { auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); builder.SetDartEntrypoint("can_composite_platform_views_with_opacity"); @@ -359,7 +358,7 @@ TEST_F(EmbedderTest, RasterCacheEnabled) { auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); builder.SetDartEntrypoint("can_composite_with_opacity"); @@ -445,7 +444,7 @@ TEST_F(EmbedderTest, CompositorMustBeAbleToRenderToOpenGLTexture) { auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); builder.SetDartEntrypoint("can_composite_platform_views"); @@ -566,7 +565,7 @@ TEST_F(EmbedderTest, CompositorMustBeAbleToRenderToSoftwareBuffer) { auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); builder.SetDartEntrypoint("can_composite_platform_views"); @@ -687,7 +686,7 @@ TEST_F(EmbedderTest, CompositorMustBeAbleToRenderKnownScene) { auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); builder.SetDartEntrypoint("can_composite_platform_views_with_known_scene"); @@ -902,7 +901,7 @@ TEST_F(EmbedderTest, CustomCompositorMustWorkWithCustomTaskRunner) { EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); builder.SetDartEntrypoint("can_composite_platform_views"); @@ -1069,7 +1068,7 @@ TEST_F(EmbedderTest, CompositorMustBeAbleToRenderWithRootLayerOnly) { auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); builder.SetDartEntrypoint( "can_composite_platform_views_with_root_layer_only"); @@ -1151,7 +1150,7 @@ TEST_F(EmbedderTest, CompositorMustBeAbleToRenderWithPlatformLayerOnBottom) { auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); builder.SetDartEntrypoint( "can_composite_platform_views_with_platform_layer_on_bottom"); @@ -1279,7 +1278,7 @@ TEST_F(EmbedderTest, auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(600, 800)); + builder.SetSurface(SkISize::Make(600, 800)); builder.SetCompositor(); builder.SetDartEntrypoint("can_composite_platform_views_with_known_scene"); @@ -1498,7 +1497,7 @@ TEST_F(EmbedderTest, CanRenderSceneWithoutCustomCompositor) { EmbedderConfigBuilder builder(context); builder.SetDartEntrypoint("can_render_scene_without_custom_compositor"); - builder.SetOpenGLRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); auto rendered_scene = context.GetNextSceneImage(); @@ -1529,7 +1528,7 @@ TEST_F(EmbedderTest, CanRenderSceneWithoutCustomCompositorWithTransformation) { EmbedderConfigBuilder builder(context); builder.SetDartEntrypoint("can_render_scene_without_custom_compositor"); - builder.SetOpenGLRendererConfig(SkISize::Make(600, 800)); + builder.SetSurface(SkISize::Make(600, 800)); auto rendered_scene = context.GetNextSceneImage(); @@ -1556,9 +1555,8 @@ TEST_P(EmbedderTestMultiBackend, CanRenderGradientWithoutCompositor) { auto& context = GetEmbedderContext(backend); EmbedderConfigBuilder builder(context); - builder.SetDartEntrypoint("render_gradient"); - builder.SetRendererConfig(backend, SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); auto rendered_scene = context.GetNextSceneImage(); @@ -1591,7 +1589,7 @@ TEST_F(EmbedderTest, CanRenderGradientWithoutCompositorWithXform) { const auto surface_size = SkISize::Make(600, 800); builder.SetDartEntrypoint("render_gradient"); - builder.SetOpenGLRendererConfig(surface_size); + builder.SetSurface(surface_size); auto rendered_scene = context.GetNextSceneImage(); @@ -1616,9 +1614,8 @@ TEST_P(EmbedderTestMultiBackend, CanRenderGradientWithCompositor) { auto& context = GetEmbedderContext(backend); EmbedderConfigBuilder builder(context); - builder.SetDartEntrypoint("render_gradient"); - builder.SetRendererConfig(backend, SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); builder.SetRenderTargetType(GetRenderTargetFromBackend(backend, true)); @@ -1654,7 +1651,7 @@ TEST_F(EmbedderTest, CanRenderGradientWithCompositorWithXform) { EmbedderConfigBuilder builder(context); builder.SetDartEntrypoint("render_gradient"); - builder.SetOpenGLRendererConfig(SkISize::Make(600, 800)); + builder.SetSurface(SkISize::Make(600, 800)); builder.SetCompositor(); builder.SetRenderTargetType( EmbedderTestBackingStoreProducer::RenderTargetType::kOpenGLFramebuffer); @@ -1683,9 +1680,8 @@ TEST_P(EmbedderTestMultiBackend, auto& context = GetEmbedderContext(backend); EmbedderConfigBuilder builder(context); - builder.SetDartEntrypoint("render_gradient_on_non_root_backing_store"); - builder.SetRendererConfig(backend, SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); builder.SetRenderTargetType(GetRenderTargetFromBackend(backend, true)); @@ -1825,7 +1821,7 @@ TEST_F(EmbedderTest, CanRenderGradientWithCompositorOnNonRootLayerWithXform) { EmbedderConfigBuilder builder(context); builder.SetDartEntrypoint("render_gradient_on_non_root_backing_store"); - builder.SetOpenGLRendererConfig(SkISize::Make(600, 800)); + builder.SetSurface(SkISize::Make(600, 800)); builder.SetCompositor(); builder.SetRenderTargetType( EmbedderTestBackingStoreProducer::RenderTargetType::kOpenGLFramebuffer); @@ -1974,7 +1970,7 @@ TEST_F(EmbedderTest, VerifyB141980393) { context.SetRootSurfaceTransformation(root_surface_transformation); // Configure the Flutter project args for the root surface transformation. - builder.SetOpenGLRendererConfig( + builder.SetSurface( SkISize::Make(root_surface_rect.width(), root_surface_rect.height())); // Use a compositor instead of rendering directly to the surface. @@ -2079,7 +2075,7 @@ TEST_F(EmbedderTest, CanCreateEmbedderWithCustomRenderTaskRunner) { EmbedderConfigBuilder builder( GetEmbedderContext(EmbedderTestContextType::kOpenGLContext)); builder.SetDartEntrypoint("can_render_scene_without_custom_compositor"); - builder.SetOpenGLRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetRenderTaskRunner( &render_task_runner.GetFlutterTaskRunnerDescription()); @@ -2138,7 +2134,7 @@ TEST_P(EmbedderTestMultiBackend, EmbedderTestContextType backend = GetParam(); EmbedderConfigBuilder builder(GetEmbedderContext(backend)); builder.SetDartEntrypoint("can_render_scene_without_custom_compositor"); - builder.SetRendererConfig(backend, SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetRenderTaskRunner( &common_task_runner.GetFlutterTaskRunnerDescription()); builder.SetPlatformTaskRunner( @@ -2194,7 +2190,7 @@ TEST_P(EmbedderTestMultiBackend, auto& context = GetEmbedderContext(backend); EmbedderConfigBuilder builder(context); - builder.SetRendererConfig(backend, SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); builder.SetDartEntrypoint("can_display_platform_view_with_pixel_ratio"); @@ -2312,7 +2308,7 @@ TEST_F( auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(600, 800)); + builder.SetSurface(SkISize::Make(600, 800)); builder.SetCompositor(); builder.SetDartEntrypoint("can_display_platform_view_with_pixel_ratio"); @@ -2435,7 +2431,7 @@ TEST_F(EmbedderTest, auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(600, 1024)); + builder.SetSurface(SkISize::Make(600, 1024)); builder.SetCompositor(); builder.SetDartEntrypoint("push_frames_over_and_over"); @@ -2479,7 +2475,7 @@ TEST_F(EmbedderTest, auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(600, 1024)); + builder.SetSurface(SkISize::Make(600, 1024)); builder.SetDartEntrypoint("push_frames_over_and_over"); const auto root_surface_transformation = @@ -2519,7 +2515,7 @@ TEST_P(EmbedderTestMultiBackend, PlatformViewMutatorsAreValid) { auto& context = GetEmbedderContext(backend); EmbedderConfigBuilder builder(context); - builder.SetRendererConfig(backend, SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); builder.SetDartEntrypoint("platform_view_mutators"); @@ -2628,7 +2624,7 @@ TEST_F(EmbedderTest, PlatformViewMutatorsAreValidWithPixelRatio) { auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); builder.SetDartEntrypoint("platform_view_mutators_with_pixel_ratio"); @@ -2740,7 +2736,7 @@ TEST_F(EmbedderTest, auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); builder.SetDartEntrypoint("platform_view_mutators_with_pixel_ratio"); @@ -2857,7 +2853,7 @@ TEST_F(EmbedderTest, EmptySceneIsAcceptable) { auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); builder.SetDartEntrypoint("empty_scene"); fml::AutoResetWaitableEvent latch; @@ -2883,7 +2879,7 @@ TEST_F(EmbedderTest, SceneWithNoRootContainerIsAcceptable) { auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); builder.SetRenderTargetType( EmbedderTestBackingStoreProducer::RenderTargetType::kOpenGLFramebuffer); @@ -2913,7 +2909,7 @@ TEST_F(EmbedderTest, ArcEndCapsAreDrawnCorrectly) { auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(800, 1024)); + builder.SetSurface(SkISize::Make(800, 1024)); builder.SetCompositor(); builder.SetDartEntrypoint("arc_end_caps_correct"); builder.SetRenderTargetType( @@ -2947,7 +2943,7 @@ TEST_F(EmbedderTest, ClipsAreCorrectlyCalculated) { auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(400, 300)); + builder.SetSurface(SkISize::Make(400, 300)); builder.SetCompositor(); builder.SetDartEntrypoint("scene_builder_with_clips"); builder.SetRenderTargetType( @@ -3027,7 +3023,7 @@ TEST_F(EmbedderTest, ComplexClipsAreCorrectlyCalculated) { auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(1024, 600)); + builder.SetSurface(SkISize::Make(1024, 600)); builder.SetCompositor(); builder.SetDartEntrypoint("scene_builder_with_complex_clips"); builder.SetRenderTargetType( @@ -3111,7 +3107,7 @@ TEST_F(EmbedderTest, ComplexClipsAreCorrectlyCalculated) { TEST_F(EmbedderTest, ObjectsCanBePostedViaPorts) { auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(800, 1024)); + builder.SetSurface(SkISize::Make(800, 1024)); builder.SetDartEntrypoint("objects_can_be_posted"); // Synchronously acquire the send port from the Dart end. We will be using @@ -3311,7 +3307,7 @@ TEST_F(EmbedderTest, CompositorCanPostZeroLayersForPresentation) { auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(300, 200)); + builder.SetSurface(SkISize::Make(300, 200)); builder.SetCompositor(); builder.SetDartEntrypoint("empty_scene_posts_zero_layers_to_compositor"); builder.SetRenderTargetType( @@ -3345,7 +3341,7 @@ TEST_F(EmbedderTest, CompositorCanPostOnlyPlatformViews) { auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(300, 200)); + builder.SetSurface(SkISize::Make(300, 200)); builder.SetCompositor(); builder.SetDartEntrypoint("compositor_can_post_only_platform_views"); builder.SetRenderTargetType( @@ -3409,7 +3405,7 @@ TEST_F(EmbedderTest, CompositorRenderTargetsAreRecycled) { auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(300, 200)); + builder.SetSurface(SkISize::Make(300, 200)); builder.SetCompositor(); builder.SetDartEntrypoint("render_targets_are_recycled"); builder.SetRenderTargetType( @@ -3455,7 +3451,7 @@ TEST_F(EmbedderTest, CompositorRenderTargetsAreInStableOrder) { auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(300, 200)); + builder.SetSurface(SkISize::Make(300, 200)); builder.SetCompositor(); builder.SetDartEntrypoint("render_targets_are_in_stable_order"); builder.SetRenderTargetType( @@ -3522,17 +3518,15 @@ TEST_F(EmbedderTest, CompositorRenderTargetsAreInStableOrder) { } TEST_F(EmbedderTest, FrameInfoContainsValidWidthAndHeight) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); - - EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(600, 1024)); - builder.SetDartEntrypoint("push_frames_over_and_over"); - + auto& context = static_cast( + GetEmbedderContext(EmbedderTestContextType::kOpenGLContext)); 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"); auto engine = builder.LaunchEngine(); // Send a window metrics events so frames may be scheduled. @@ -3552,111 +3546,113 @@ TEST_F(EmbedderTest, FrameInfoContainsValidWidthAndHeight) { /* Nothing to do. */ })); - static_cast(context).SetGLGetFBOCallback( - [](FlutterFrameInfo frame_info) { - // width and height are rotated by 90 deg - ASSERT_EQ(frame_info.size.width, event.height); - ASSERT_EQ(frame_info.size.height, event.width); + context.SetGLGetFBOCallback([](FlutterFrameInfo frame_info) { + // width and height are rotated by 90 deg + ASSERT_EQ(frame_info.size.width, event.height); + ASSERT_EQ(frame_info.size.height, event.width); - frame_latch.CountDown(); - }); + frame_latch.CountDown(); + }); frame_latch.Wait(); } TEST_F(EmbedderTest, MustNotRunWithBothFBOCallbacksSet) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = static_cast( + GetEmbedderContext(EmbedderTestContextType::kOpenGLContext)); + context.SetOpenGLFBOCallBack(); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(600, 1024)); - builder.SetOpenGLFBOCallBack(); + builder.SetSurface(SkISize::Make(600, 1024)); auto engine = builder.LaunchEngine(); ASSERT_FALSE(engine.is_valid()); } TEST_F(EmbedderTest, MustNotRunWithBothPresentCallbacksSet) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = static_cast( + GetEmbedderContext(EmbedderTestContextType::kOpenGLContext)); + context.SetOpenGLPresentCallBack(); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(600, 1024)); - builder.SetOpenGLPresentCallBack(); + builder.SetSurface(SkISize::Make(600, 1024)); auto engine = builder.LaunchEngine(); ASSERT_FALSE(engine.is_valid()); } TEST_F(EmbedderTest, MustStillRunWhenPopulateExistingDamageIsNotProvided) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = static_cast( + GetEmbedderContext(EmbedderTestContextType::kOpenGLContext)); + context.GetRendererConfig().open_gl.populate_existing_damage = nullptr; EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(1, 1)); - builder.GetRendererConfig().open_gl.populate_existing_damage = nullptr; + builder.SetSurface(SkISize::Make(1, 1)); auto engine = builder.LaunchEngine(); ASSERT_TRUE(engine.is_valid()); } TEST_F(EmbedderTest, MustRunWhenPopulateExistingDamageIsProvided) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); - - EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(1, 1)); - - builder.GetRendererConfig().open_gl.populate_existing_damage = + auto& context = static_cast( + GetEmbedderContext(EmbedderTestContextType::kOpenGLContext)); + context.GetRendererConfig().open_gl.populate_existing_damage = [](void* context, const intptr_t id, FlutterDamage* existing_damage) -> void { return reinterpret_cast(context) ->GLPopulateExistingDamage(id, existing_damage); }; + EmbedderConfigBuilder builder(context); + builder.SetSurface(SkISize::Make(1, 1)); auto engine = builder.LaunchEngine(); ASSERT_TRUE(engine.is_valid()); } TEST_F(EmbedderTest, MustRunWithPopulateExistingDamageAndFBOCallback) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); - - EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(1, 1)); - builder.GetRendererConfig().open_gl.fbo_callback = + auto& context = static_cast( + GetEmbedderContext(EmbedderTestContextType::kOpenGLContext)); + context.GetRendererConfig().open_gl.fbo_callback = [](void* context) -> uint32_t { return 0; }; - builder.GetRendererConfig().open_gl.fbo_with_frame_info_callback = nullptr; - builder.GetRendererConfig().open_gl.populate_existing_damage = + context.GetRendererConfig().open_gl.fbo_with_frame_info_callback = nullptr; + context.GetRendererConfig().open_gl.populate_existing_damage = [](void* context, const intptr_t id, FlutterDamage* existing_damage) -> void { return reinterpret_cast(context) ->GLPopulateExistingDamage(id, existing_damage); }; + EmbedderConfigBuilder builder(context); + builder.SetSurface(SkISize::Make(1, 1)); auto engine = builder.LaunchEngine(); ASSERT_TRUE(engine.is_valid()); } TEST_F(EmbedderTest, MustNotRunWhenPopulateExistingDamageButNoOtherFBOCallback) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); - - EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(1, 1)); - builder.GetRendererConfig().open_gl.fbo_callback = nullptr; - builder.GetRendererConfig().open_gl.fbo_with_frame_info_callback = nullptr; - builder.GetRendererConfig().open_gl.populate_existing_damage = + auto& context = static_cast( + GetEmbedderContext(EmbedderTestContextType::kOpenGLContext)); + context.GetRendererConfig().open_gl.fbo_callback = nullptr; + context.GetRendererConfig().open_gl.fbo_with_frame_info_callback = nullptr; + context.GetRendererConfig().open_gl.populate_existing_damage = [](void* context, const intptr_t id, FlutterDamage* existing_damage) -> void { return reinterpret_cast(context) ->GLPopulateExistingDamage(id, existing_damage); }; + EmbedderConfigBuilder builder(context); + builder.SetSurface(SkISize::Make(1, 1)); auto engine = builder.LaunchEngine(); ASSERT_FALSE(engine.is_valid()); } TEST_F(EmbedderTest, PresentInfoContainsValidFBOId) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = static_cast( + GetEmbedderContext(EmbedderTestContextType::kOpenGLContext)); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(600, 1024)); + builder.SetSurface(SkISize::Make(600, 1024)); builder.SetDartEntrypoint("push_frames_over_and_over"); const auto root_surface_transformation = @@ -3683,9 +3679,8 @@ TEST_F(EmbedderTest, PresentInfoContainsValidFBOId) { /* Nothing to do. */ })); - const uint32_t window_fbo_id = - static_cast(context).GetWindowFBOId(); - static_cast(context).SetGLPresentCallback( + const uint32_t window_fbo_id = context.GetWindowFBOId(); + context.SetGLPresentCallback( [window_fbo_id = window_fbo_id](FlutterPresentInfo present_info) { ASSERT_EQ(present_info.fbo_id, window_fbo_id); @@ -3697,53 +3692,50 @@ TEST_F(EmbedderTest, PresentInfoContainsValidFBOId) { TEST_F(EmbedderTest, PresentInfoReceivesFullDamageWhenExistingDamageIsWholeScreen) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); - - EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(800, 600)); - builder.SetDartEntrypoint("render_gradient_retained"); - builder.GetRendererConfig().open_gl.populate_existing_damage = + auto& context = static_cast( + GetEmbedderContext(EmbedderTestContextType::kOpenGLContext)); + context.GetRendererConfig().open_gl.populate_existing_damage = [](void* context, const intptr_t id, FlutterDamage* existing_damage) -> void { return reinterpret_cast(context) ->GLPopulateExistingDamage(id, existing_damage); }; - // Return existing damage as the entire screen on purpose. - static_cast(context) - .SetGLPopulateExistingDamageCallback( - [](const intptr_t id, FlutterDamage* existing_damage_ptr) { - const size_t num_rects = 1; - // The array must be valid after the callback returns. - static FlutterRect existing_damage_rects[num_rects] = { - FlutterRect{0, 0, 800, 600}}; - existing_damage_ptr->num_rects = num_rects; - existing_damage_ptr->damage = existing_damage_rects; - }); + context.SetGLPopulateExistingDamageCallback( + [](const intptr_t id, FlutterDamage* existing_damage_ptr) { + const size_t num_rects = 1; + // The array must be valid after the callback returns. + static FlutterRect existing_damage_rects[num_rects] = { + FlutterRect{0, 0, 800, 600}}; + existing_damage_ptr->num_rects = num_rects; + existing_damage_ptr->damage = existing_damage_rects; + }); + EmbedderConfigBuilder builder(context); + builder.SetSurface(SkISize::Make(800, 600)); + builder.SetDartEntrypoint("render_gradient_retained"); auto engine = builder.LaunchEngine(); ASSERT_TRUE(engine.is_valid()); fml::AutoResetWaitableEvent latch; // First frame should be entirely rerendered. - static_cast(context).SetGLPresentCallback( - [&](FlutterPresentInfo present_info) { - const size_t num_rects = 1; - ASSERT_EQ(present_info.frame_damage.num_rects, num_rects); - ASSERT_EQ(present_info.frame_damage.damage->left, 0); - ASSERT_EQ(present_info.frame_damage.damage->top, 0); - ASSERT_EQ(present_info.frame_damage.damage->right, 800); - ASSERT_EQ(present_info.frame_damage.damage->bottom, 600); - - ASSERT_EQ(present_info.buffer_damage.num_rects, num_rects); - ASSERT_EQ(present_info.buffer_damage.damage->left, 0); - ASSERT_EQ(present_info.buffer_damage.damage->top, 0); - ASSERT_EQ(present_info.buffer_damage.damage->right, 800); - ASSERT_EQ(present_info.buffer_damage.damage->bottom, 600); - - latch.Signal(); - }); + context.SetGLPresentCallback([&](FlutterPresentInfo present_info) { + const size_t num_rects = 1; + ASSERT_EQ(present_info.frame_damage.num_rects, num_rects); + ASSERT_EQ(present_info.frame_damage.damage->left, 0); + ASSERT_EQ(present_info.frame_damage.damage->top, 0); + ASSERT_EQ(present_info.frame_damage.damage->right, 800); + ASSERT_EQ(present_info.frame_damage.damage->bottom, 600); + + ASSERT_EQ(present_info.buffer_damage.num_rects, num_rects); + ASSERT_EQ(present_info.buffer_damage.damage->left, 0); + ASSERT_EQ(present_info.buffer_damage.damage->top, 0); + ASSERT_EQ(present_info.buffer_damage.damage->right, 800); + ASSERT_EQ(present_info.buffer_damage.damage->bottom, 600); + + latch.Signal(); + }); // Send a window metrics events so frames may be scheduled. FlutterWindowMetricsEvent event = {}; @@ -3758,23 +3750,22 @@ TEST_F(EmbedderTest, // Because it's the same as the first frame, the second frame damage should // be empty but, because there was a full existing buffer damage, the buffer // damage should be the entire screen. - static_cast(context).SetGLPresentCallback( - [&](FlutterPresentInfo present_info) { - const size_t num_rects = 1; - ASSERT_EQ(present_info.frame_damage.num_rects, num_rects); - ASSERT_EQ(present_info.frame_damage.damage->left, 0); - ASSERT_EQ(present_info.frame_damage.damage->top, 0); - ASSERT_EQ(present_info.frame_damage.damage->right, 0); - ASSERT_EQ(present_info.frame_damage.damage->bottom, 0); - - ASSERT_EQ(present_info.buffer_damage.num_rects, num_rects); - ASSERT_EQ(present_info.buffer_damage.damage->left, 0); - ASSERT_EQ(present_info.buffer_damage.damage->top, 0); - ASSERT_EQ(present_info.buffer_damage.damage->right, 800); - ASSERT_EQ(present_info.buffer_damage.damage->bottom, 600); - - latch.Signal(); - }); + context.SetGLPresentCallback([&](FlutterPresentInfo present_info) { + const size_t num_rects = 1; + ASSERT_EQ(present_info.frame_damage.num_rects, num_rects); + ASSERT_EQ(present_info.frame_damage.damage->left, 0); + ASSERT_EQ(present_info.frame_damage.damage->top, 0); + ASSERT_EQ(present_info.frame_damage.damage->right, 0); + ASSERT_EQ(present_info.frame_damage.damage->bottom, 0); + + ASSERT_EQ(present_info.buffer_damage.num_rects, num_rects); + ASSERT_EQ(present_info.buffer_damage.damage->left, 0); + ASSERT_EQ(present_info.buffer_damage.damage->top, 0); + ASSERT_EQ(present_info.buffer_damage.damage->right, 800); + ASSERT_EQ(present_info.buffer_damage.damage->bottom, 600); + + latch.Signal(); + }); ASSERT_EQ(FlutterEngineSendWindowMetricsEvent(engine.get(), &event), kSuccess); @@ -3782,53 +3773,50 @@ TEST_F(EmbedderTest, } TEST_F(EmbedderTest, PresentInfoReceivesEmptyDamage) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); - - EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(800, 600)); - builder.SetDartEntrypoint("render_gradient_retained"); - builder.GetRendererConfig().open_gl.populate_existing_damage = + auto& context = static_cast( + GetEmbedderContext(EmbedderTestContextType::kOpenGLContext)); + context.GetRendererConfig().open_gl.populate_existing_damage = [](void* context, const intptr_t id, FlutterDamage* existing_damage) -> void { return reinterpret_cast(context) ->GLPopulateExistingDamage(id, existing_damage); }; - // Return no existing damage on purpose. - static_cast(context) - .SetGLPopulateExistingDamageCallback( - [](const intptr_t id, FlutterDamage* existing_damage_ptr) { - const size_t num_rects = 1; - // The array must be valid after the callback returns. - static FlutterRect existing_damage_rects[num_rects] = { - FlutterRect{0, 0, 0, 0}}; - existing_damage_ptr->num_rects = num_rects; - existing_damage_ptr->damage = existing_damage_rects; - }); + context.SetGLPopulateExistingDamageCallback( + [](const intptr_t id, FlutterDamage* existing_damage_ptr) { + const size_t num_rects = 1; + // The array must be valid after the callback returns. + static FlutterRect existing_damage_rects[num_rects] = { + FlutterRect{0, 0, 0, 0}}; + existing_damage_ptr->num_rects = num_rects; + existing_damage_ptr->damage = existing_damage_rects; + }); + EmbedderConfigBuilder builder(context); + builder.SetSurface(SkISize::Make(800, 600)); + builder.SetDartEntrypoint("render_gradient_retained"); auto engine = builder.LaunchEngine(); ASSERT_TRUE(engine.is_valid()); fml::AutoResetWaitableEvent latch; // First frame should be entirely rerendered. - static_cast(context).SetGLPresentCallback( - [&](FlutterPresentInfo present_info) { - const size_t num_rects = 1; - ASSERT_EQ(present_info.frame_damage.num_rects, num_rects); - ASSERT_EQ(present_info.frame_damage.damage->left, 0); - ASSERT_EQ(present_info.frame_damage.damage->top, 0); - ASSERT_EQ(present_info.frame_damage.damage->right, 800); - ASSERT_EQ(present_info.frame_damage.damage->bottom, 600); - - ASSERT_EQ(present_info.buffer_damage.num_rects, num_rects); - ASSERT_EQ(present_info.buffer_damage.damage->left, 0); - ASSERT_EQ(present_info.buffer_damage.damage->top, 0); - ASSERT_EQ(present_info.buffer_damage.damage->right, 800); - ASSERT_EQ(present_info.buffer_damage.damage->bottom, 600); - - latch.Signal(); - }); + context.SetGLPresentCallback([&](FlutterPresentInfo present_info) { + const size_t num_rects = 1; + ASSERT_EQ(present_info.frame_damage.num_rects, num_rects); + ASSERT_EQ(present_info.frame_damage.damage->left, 0); + ASSERT_EQ(present_info.frame_damage.damage->top, 0); + ASSERT_EQ(present_info.frame_damage.damage->right, 800); + ASSERT_EQ(present_info.frame_damage.damage->bottom, 600); + + ASSERT_EQ(present_info.buffer_damage.num_rects, num_rects); + ASSERT_EQ(present_info.buffer_damage.damage->left, 0); + ASSERT_EQ(present_info.buffer_damage.damage->top, 0); + ASSERT_EQ(present_info.buffer_damage.damage->right, 800); + ASSERT_EQ(present_info.buffer_damage.damage->bottom, 600); + + latch.Signal(); + }); // Send a window metrics events so frames may be scheduled. FlutterWindowMetricsEvent event = {}; @@ -3842,23 +3830,22 @@ TEST_F(EmbedderTest, PresentInfoReceivesEmptyDamage) { // Because it's the same as the first frame, the second frame should not be // rerendered assuming there is no existing damage. - static_cast(context).SetGLPresentCallback( - [&](FlutterPresentInfo present_info) { - const size_t num_rects = 1; - ASSERT_EQ(present_info.frame_damage.num_rects, num_rects); - ASSERT_EQ(present_info.frame_damage.damage->left, 0); - ASSERT_EQ(present_info.frame_damage.damage->top, 0); - ASSERT_EQ(present_info.frame_damage.damage->right, 0); - ASSERT_EQ(present_info.frame_damage.damage->bottom, 0); - - ASSERT_EQ(present_info.buffer_damage.num_rects, num_rects); - ASSERT_EQ(present_info.buffer_damage.damage->left, 0); - ASSERT_EQ(present_info.buffer_damage.damage->top, 0); - ASSERT_EQ(present_info.buffer_damage.damage->right, 0); - ASSERT_EQ(present_info.buffer_damage.damage->bottom, 0); - - latch.Signal(); - }); + context.SetGLPresentCallback([&](FlutterPresentInfo present_info) { + const size_t num_rects = 1; + ASSERT_EQ(present_info.frame_damage.num_rects, num_rects); + ASSERT_EQ(present_info.frame_damage.damage->left, 0); + ASSERT_EQ(present_info.frame_damage.damage->top, 0); + ASSERT_EQ(present_info.frame_damage.damage->right, 0); + ASSERT_EQ(present_info.frame_damage.damage->bottom, 0); + + ASSERT_EQ(present_info.buffer_damage.num_rects, num_rects); + ASSERT_EQ(present_info.buffer_damage.damage->left, 0); + ASSERT_EQ(present_info.buffer_damage.damage->top, 0); + ASSERT_EQ(present_info.buffer_damage.damage->right, 0); + ASSERT_EQ(present_info.buffer_damage.damage->bottom, 0); + + latch.Signal(); + }); ASSERT_EQ(FlutterEngineSendWindowMetricsEvent(engine.get(), &event), kSuccess); @@ -3866,53 +3853,50 @@ TEST_F(EmbedderTest, PresentInfoReceivesEmptyDamage) { } TEST_F(EmbedderTest, PresentInfoReceivesPartialDamage) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); - - EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(800, 600)); - builder.SetDartEntrypoint("render_gradient_retained"); - builder.GetRendererConfig().open_gl.populate_existing_damage = + auto& context = static_cast( + GetEmbedderContext(EmbedderTestContextType::kOpenGLContext)); + context.GetRendererConfig().open_gl.populate_existing_damage = [](void* context, const intptr_t id, FlutterDamage* existing_damage) -> void { return reinterpret_cast(context) ->GLPopulateExistingDamage(id, existing_damage); }; - // Return existing damage as only part of the screen on purpose. - static_cast(context) - .SetGLPopulateExistingDamageCallback( - [&](const intptr_t id, FlutterDamage* existing_damage_ptr) { - const size_t num_rects = 1; - // The array must be valid after the callback returns. - static FlutterRect existing_damage_rects[num_rects] = { - FlutterRect{200, 150, 400, 300}}; - existing_damage_ptr->num_rects = num_rects; - existing_damage_ptr->damage = existing_damage_rects; - }); + context.SetGLPopulateExistingDamageCallback( + [&](const intptr_t id, FlutterDamage* existing_damage_ptr) { + const size_t num_rects = 1; + // The array must be valid after the callback returns. + static FlutterRect existing_damage_rects[num_rects] = { + FlutterRect{200, 150, 400, 300}}; + existing_damage_ptr->num_rects = num_rects; + existing_damage_ptr->damage = existing_damage_rects; + }); + EmbedderConfigBuilder builder(context); + builder.SetSurface(SkISize::Make(800, 600)); + builder.SetDartEntrypoint("render_gradient_retained"); auto engine = builder.LaunchEngine(); ASSERT_TRUE(engine.is_valid()); fml::AutoResetWaitableEvent latch; // First frame should be entirely rerendered. - static_cast(context).SetGLPresentCallback( - [&](FlutterPresentInfo present_info) { - const size_t num_rects = 1; - ASSERT_EQ(present_info.frame_damage.num_rects, num_rects); - ASSERT_EQ(present_info.frame_damage.damage->left, 0); - ASSERT_EQ(present_info.frame_damage.damage->top, 0); - ASSERT_EQ(present_info.frame_damage.damage->right, 800); - ASSERT_EQ(present_info.frame_damage.damage->bottom, 600); - - ASSERT_EQ(present_info.buffer_damage.num_rects, num_rects); - ASSERT_EQ(present_info.buffer_damage.damage->left, 0); - ASSERT_EQ(present_info.buffer_damage.damage->top, 0); - ASSERT_EQ(present_info.buffer_damage.damage->right, 800); - ASSERT_EQ(present_info.buffer_damage.damage->bottom, 600); - - latch.Signal(); - }); + context.SetGLPresentCallback([&](FlutterPresentInfo present_info) { + const size_t num_rects = 1; + ASSERT_EQ(present_info.frame_damage.num_rects, num_rects); + ASSERT_EQ(present_info.frame_damage.damage->left, 0); + ASSERT_EQ(present_info.frame_damage.damage->top, 0); + ASSERT_EQ(present_info.frame_damage.damage->right, 800); + ASSERT_EQ(present_info.frame_damage.damage->bottom, 600); + + ASSERT_EQ(present_info.buffer_damage.num_rects, num_rects); + ASSERT_EQ(present_info.buffer_damage.damage->left, 0); + ASSERT_EQ(present_info.buffer_damage.damage->top, 0); + ASSERT_EQ(present_info.buffer_damage.damage->right, 800); + ASSERT_EQ(present_info.buffer_damage.damage->bottom, 600); + + latch.Signal(); + }); // Send a window metrics events so frames may be scheduled. FlutterWindowMetricsEvent event = {}; @@ -3927,23 +3911,22 @@ TEST_F(EmbedderTest, PresentInfoReceivesPartialDamage) { // Because it's the same as the first frame, the second frame damage should be // empty but, because there was a partial existing damage, the buffer damage // should represent that partial damage area. - static_cast(context).SetGLPresentCallback( - [&](FlutterPresentInfo present_info) { - const size_t num_rects = 1; - ASSERT_EQ(present_info.frame_damage.num_rects, num_rects); - ASSERT_EQ(present_info.frame_damage.damage->left, 0); - ASSERT_EQ(present_info.frame_damage.damage->top, 0); - ASSERT_EQ(present_info.frame_damage.damage->right, 0); - ASSERT_EQ(present_info.frame_damage.damage->bottom, 0); - - ASSERT_EQ(present_info.buffer_damage.num_rects, num_rects); - ASSERT_EQ(present_info.buffer_damage.damage->left, 200); - ASSERT_EQ(present_info.buffer_damage.damage->top, 150); - ASSERT_EQ(present_info.buffer_damage.damage->right, 400); - ASSERT_EQ(present_info.buffer_damage.damage->bottom, 300); - - latch.Signal(); - }); + context.SetGLPresentCallback([&](FlutterPresentInfo present_info) { + const size_t num_rects = 1; + ASSERT_EQ(present_info.frame_damage.num_rects, num_rects); + ASSERT_EQ(present_info.frame_damage.damage->left, 0); + ASSERT_EQ(present_info.frame_damage.damage->top, 0); + ASSERT_EQ(present_info.frame_damage.damage->right, 0); + ASSERT_EQ(present_info.frame_damage.damage->bottom, 0); + + ASSERT_EQ(present_info.buffer_damage.num_rects, num_rects); + ASSERT_EQ(present_info.buffer_damage.damage->left, 200); + ASSERT_EQ(present_info.buffer_damage.damage->top, 150); + ASSERT_EQ(present_info.buffer_damage.damage->right, 400); + ASSERT_EQ(present_info.buffer_damage.damage->bottom, 300); + + latch.Signal(); + }); ASSERT_EQ(FlutterEngineSendWindowMetricsEvent(engine.get(), &event), kSuccess); @@ -3951,31 +3934,29 @@ TEST_F(EmbedderTest, PresentInfoReceivesPartialDamage) { } TEST_F(EmbedderTest, PopulateExistingDamageReceivesValidID) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); - - EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(800, 600)); - builder.SetDartEntrypoint("render_gradient_retained"); - builder.GetRendererConfig().open_gl.populate_existing_damage = + auto& context = static_cast( + GetEmbedderContext(EmbedderTestContextType::kOpenGLContext)); + context.GetRendererConfig().open_gl.populate_existing_damage = [](void* context, const intptr_t id, FlutterDamage* existing_damage) -> void { return reinterpret_cast(context) ->GLPopulateExistingDamage(id, existing_damage); }; + EmbedderConfigBuilder builder(context); + builder.SetSurface(SkISize::Make(800, 600)); + builder.SetDartEntrypoint("render_gradient_retained"); auto engine = builder.LaunchEngine(); ASSERT_TRUE(engine.is_valid()); - const uint32_t window_fbo_id = - static_cast(context).GetWindowFBOId(); - static_cast(context) - .SetGLPopulateExistingDamageCallback( - [window_fbo_id = window_fbo_id](intptr_t id, - FlutterDamage* existing_damage) { - ASSERT_EQ(id, window_fbo_id); - existing_damage->num_rects = 0; - existing_damage->damage = nullptr; - }); + const uint32_t window_fbo_id = context.GetWindowFBOId(); + context.SetGLPopulateExistingDamageCallback( + [window_fbo_id = window_fbo_id](intptr_t id, + FlutterDamage* existing_damage) { + ASSERT_EQ(id, window_fbo_id); + existing_damage->num_rects = 0; + existing_damage->damage = nullptr; + }); // Send a window metrics events so frames may be scheduled. FlutterWindowMetricsEvent event = {}; @@ -3988,24 +3969,23 @@ TEST_F(EmbedderTest, PopulateExistingDamageReceivesValidID) { } TEST_F(EmbedderTest, PopulateExistingDamageReceivesInvalidID) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); - - EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(800, 600)); - builder.SetDartEntrypoint("render_gradient_retained"); - builder.GetRendererConfig().open_gl.populate_existing_damage = + auto& context = static_cast( + GetEmbedderContext(EmbedderTestContextType::kOpenGLContext)); + context.GetRendererConfig().open_gl.populate_existing_damage = [](void* context, const intptr_t id, FlutterDamage* existing_damage) -> void { return reinterpret_cast(context) ->GLPopulateExistingDamage(id, existing_damage); }; - // Return a bad FBO ID on purpose. - builder.GetRendererConfig().open_gl.fbo_with_frame_info_callback = + context.GetRendererConfig().open_gl.fbo_with_frame_info_callback = [](void* context, const FlutterFrameInfo* frame_info) -> uint32_t { return 123; }; + EmbedderConfigBuilder builder(context); + builder.SetSurface(SkISize::Make(800, 600)); + builder.SetDartEntrypoint("render_gradient_retained"); auto engine = builder.LaunchEngine(); ASSERT_TRUE(engine.is_valid()); @@ -4014,16 +3994,14 @@ TEST_F(EmbedderTest, PopulateExistingDamageReceivesInvalidID) { /* Nothing to do. */ })); - const uint32_t window_fbo_id = - static_cast(context).GetWindowFBOId(); - static_cast(context) - .SetGLPopulateExistingDamageCallback( - [window_fbo_id = window_fbo_id](intptr_t id, - FlutterDamage* existing_damage) { - ASSERT_NE(id, window_fbo_id); - existing_damage->num_rects = 0; - existing_damage->damage = nullptr; - }); + const uint32_t window_fbo_id = context.GetWindowFBOId(); + context.SetGLPopulateExistingDamageCallback( + [window_fbo_id = window_fbo_id](intptr_t id, + FlutterDamage* existing_damage) { + ASSERT_NE(id, window_fbo_id); + existing_damage->num_rects = 0; + existing_damage->damage = nullptr; + }); // Send a window metrics events so frames may be scheduled. FlutterWindowMetricsEvent event = {}; @@ -4039,7 +4017,7 @@ TEST_F(EmbedderTest, SetSingleDisplayConfigurationWithDisplayId) { auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); builder.SetDartEntrypoint("empty_scene"); fml::AutoResetWaitableEvent latch; @@ -4081,7 +4059,7 @@ TEST_F(EmbedderTest, SetSingleDisplayConfigurationWithoutDisplayId) { auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); builder.SetDartEntrypoint("empty_scene"); fml::AutoResetWaitableEvent latch; @@ -4123,7 +4101,7 @@ TEST_F(EmbedderTest, SetValidMultiDisplayConfiguration) { auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); builder.SetDartEntrypoint("empty_scene"); fml::AutoResetWaitableEvent latch; @@ -4172,7 +4150,7 @@ TEST_F(EmbedderTest, MultipleDisplaysWithSingleDisplayTrueIsInvalid) { auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); builder.SetDartEntrypoint("empty_scene"); fml::AutoResetWaitableEvent latch; @@ -4218,7 +4196,7 @@ TEST_F(EmbedderTest, MultipleDisplaysWithSameDisplayIdIsInvalid) { auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); builder.SetDartEntrypoint("empty_scene"); fml::AutoResetWaitableEvent latch; @@ -4264,7 +4242,7 @@ TEST_F(EmbedderTest, CompositorRenderTargetsNotRecycledWhenAvoidsCacheSet) { auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(300, 200)); + builder.SetSurface(SkISize::Make(300, 200)); builder.SetCompositor(/*avoid_backing_store_cache=*/true); builder.SetDartEntrypoint("render_targets_are_recycled"); builder.SetRenderTargetType( @@ -4312,7 +4290,7 @@ TEST_F(EmbedderTest, SnapshotRenderTargetScalesDownToDriverMax) { auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); auto max_size = context.GetCompositor().GetGrContext()->maxRenderTargetSize(); @@ -4354,7 +4332,7 @@ TEST_F(EmbedderTest, SnapshotRenderTargetScalesDownToDriverMax) { TEST_F(EmbedderTest, ObjectsPostedViaPortsServicedOnSecondaryTaskHeap) { auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(800, 1024)); + builder.SetSurface(SkISize::Make(800, 1024)); builder.SetDartEntrypoint("objects_can_be_posted"); // Synchronously acquire the send port from the Dart end. We will be using @@ -4404,7 +4382,7 @@ TEST_F(EmbedderTest, ObjectsPostedViaPortsServicedOnSecondaryTaskHeap) { TEST_F(EmbedderTest, CreateInvalidBackingstoreOpenGLTexture) { auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); builder.SetRenderTargetType( EmbedderTestBackingStoreProducer::RenderTargetType::kOpenGLTexture); @@ -4467,7 +4445,7 @@ TEST_F(EmbedderTest, CreateInvalidBackingstoreOpenGLTexture) { TEST_F(EmbedderTest, CreateInvalidBackingstoreOpenGLFramebuffer) { auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); builder.SetRenderTargetType( EmbedderTestBackingStoreProducer::RenderTargetType::kOpenGLFramebuffer); @@ -4530,7 +4508,7 @@ TEST_F(EmbedderTest, CreateInvalidBackingstoreOpenGLFramebuffer) { TEST_F(EmbedderTest, CreateInvalidBackingstoreOpenGLSurface) { auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); builder.SetRenderTargetType( EmbedderTestBackingStoreProducer::RenderTargetType::kOpenGLSurface); @@ -4650,36 +4628,35 @@ TEST_F(EmbedderTest, ExternalTextureGLRefreshedTooOften) { TEST_F( EmbedderTest, PresentInfoReceivesFullScreenDamageWhenPopulateExistingDamageIsNotProvided) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); + auto& context = static_cast( + GetEmbedderContext(EmbedderTestContextType::kOpenGLContext)); + context.GetRendererConfig().open_gl.populate_existing_damage = nullptr; EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetDartEntrypoint("render_gradient_retained"); - builder.GetRendererConfig().open_gl.populate_existing_damage = nullptr; - auto engine = builder.LaunchEngine(); ASSERT_TRUE(engine.is_valid()); fml::AutoResetWaitableEvent latch; // First frame should be entirely rerendered. - static_cast(context).SetGLPresentCallback( - [&](FlutterPresentInfo present_info) { - const size_t num_rects = 1; - ASSERT_EQ(present_info.frame_damage.num_rects, num_rects); - ASSERT_EQ(present_info.frame_damage.damage->left, 0); - ASSERT_EQ(present_info.frame_damage.damage->top, 0); - ASSERT_EQ(present_info.frame_damage.damage->right, 800); - ASSERT_EQ(present_info.frame_damage.damage->bottom, 600); - - ASSERT_EQ(present_info.buffer_damage.num_rects, num_rects); - ASSERT_EQ(present_info.buffer_damage.damage->left, 0); - ASSERT_EQ(present_info.buffer_damage.damage->top, 0); - ASSERT_EQ(present_info.buffer_damage.damage->right, 800); - ASSERT_EQ(present_info.buffer_damage.damage->bottom, 600); - - latch.Signal(); - }); + context.SetGLPresentCallback([&](FlutterPresentInfo present_info) { + const size_t num_rects = 1; + ASSERT_EQ(present_info.frame_damage.num_rects, num_rects); + ASSERT_EQ(present_info.frame_damage.damage->left, 0); + ASSERT_EQ(present_info.frame_damage.damage->top, 0); + ASSERT_EQ(present_info.frame_damage.damage->right, 800); + ASSERT_EQ(present_info.frame_damage.damage->bottom, 600); + + ASSERT_EQ(present_info.buffer_damage.num_rects, num_rects); + ASSERT_EQ(present_info.buffer_damage.damage->left, 0); + ASSERT_EQ(present_info.buffer_damage.damage->top, 0); + ASSERT_EQ(present_info.buffer_damage.damage->right, 800); + ASSERT_EQ(present_info.buffer_damage.damage->bottom, 600); + + latch.Signal(); + }); // Send a window metrics events so frames may be scheduled. FlutterWindowMetricsEvent event = {}; @@ -4694,23 +4671,22 @@ TEST_F( // Since populate_existing_damage is not provided, the partial repaint // functionality is actually disabled. So, the next frame should be entirely // new frame. - static_cast(context).SetGLPresentCallback( - [&](FlutterPresentInfo present_info) { - const size_t num_rects = 1; - ASSERT_EQ(present_info.frame_damage.num_rects, num_rects); - ASSERT_EQ(present_info.frame_damage.damage->left, 0); - ASSERT_EQ(present_info.frame_damage.damage->top, 0); - ASSERT_EQ(present_info.frame_damage.damage->right, 800); - ASSERT_EQ(present_info.frame_damage.damage->bottom, 600); - - ASSERT_EQ(present_info.buffer_damage.num_rects, num_rects); - ASSERT_EQ(present_info.buffer_damage.damage->left, 0); - ASSERT_EQ(present_info.buffer_damage.damage->top, 0); - ASSERT_EQ(present_info.buffer_damage.damage->right, 800); - ASSERT_EQ(present_info.buffer_damage.damage->bottom, 600); - - latch.Signal(); - }); + context.SetGLPresentCallback([&](FlutterPresentInfo present_info) { + const size_t num_rects = 1; + ASSERT_EQ(present_info.frame_damage.num_rects, num_rects); + ASSERT_EQ(present_info.frame_damage.damage->left, 0); + ASSERT_EQ(present_info.frame_damage.damage->top, 0); + ASSERT_EQ(present_info.frame_damage.damage->right, 800); + ASSERT_EQ(present_info.frame_damage.damage->bottom, 600); + + ASSERT_EQ(present_info.buffer_damage.num_rects, num_rects); + ASSERT_EQ(present_info.buffer_damage.damage->left, 0); + ASSERT_EQ(present_info.buffer_damage.damage->top, 0); + ASSERT_EQ(present_info.buffer_damage.damage->right, 800); + ASSERT_EQ(present_info.buffer_damage.damage->bottom, 600); + + latch.Signal(); + }); ASSERT_EQ(FlutterEngineSendWindowMetricsEvent(engine.get(), &event), kSuccess); @@ -4719,55 +4695,52 @@ TEST_F( TEST_F(EmbedderTest, PresentInfoReceivesJoinedDamageWhenExistingDamageContainsMultipleRects) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); - - EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(800, 600)); - builder.SetDartEntrypoint("render_gradient_retained"); - builder.GetRendererConfig().open_gl.populate_existing_damage = + auto& context = static_cast( + GetEmbedderContext(EmbedderTestContextType::kOpenGLContext)); + context.GetRendererConfig().open_gl.populate_existing_damage = [](void* context, const intptr_t id, FlutterDamage* existing_damage) -> void { return reinterpret_cast(context) ->GLPopulateExistingDamage(id, existing_damage); }; - // Return existing damage as the entire screen on purpose. - static_cast(context) - .SetGLPopulateExistingDamageCallback( - [](const intptr_t id, FlutterDamage* existing_damage_ptr) { - const size_t num_rects = 2; - // The array must be valid after the callback returns. - static FlutterRect existing_damage_rects[num_rects] = { - FlutterRect{100, 150, 200, 250}, - FlutterRect{200, 250, 300, 350}, - }; - existing_damage_ptr->num_rects = num_rects; - existing_damage_ptr->damage = existing_damage_rects; - }); + context.SetGLPopulateExistingDamageCallback( + [](const intptr_t id, FlutterDamage* existing_damage_ptr) { + const size_t num_rects = 2; + // The array must be valid after the callback returns. + static FlutterRect existing_damage_rects[num_rects] = { + FlutterRect{100, 150, 200, 250}, + FlutterRect{200, 250, 300, 350}, + }; + existing_damage_ptr->num_rects = num_rects; + existing_damage_ptr->damage = existing_damage_rects; + }); + EmbedderConfigBuilder builder(context); + builder.SetSurface(SkISize::Make(800, 600)); + builder.SetDartEntrypoint("render_gradient_retained"); auto engine = builder.LaunchEngine(); ASSERT_TRUE(engine.is_valid()); fml::AutoResetWaitableEvent latch; // First frame should be entirely rerendered. - static_cast(context).SetGLPresentCallback( - [&](FlutterPresentInfo present_info) { - const size_t num_rects = 1; - ASSERT_EQ(present_info.frame_damage.num_rects, num_rects); - ASSERT_EQ(present_info.frame_damage.damage->left, 0); - ASSERT_EQ(present_info.frame_damage.damage->top, 0); - ASSERT_EQ(present_info.frame_damage.damage->right, 800); - ASSERT_EQ(present_info.frame_damage.damage->bottom, 600); - - ASSERT_EQ(present_info.buffer_damage.num_rects, num_rects); - ASSERT_EQ(present_info.buffer_damage.damage->left, 0); - ASSERT_EQ(present_info.buffer_damage.damage->top, 0); - ASSERT_EQ(present_info.buffer_damage.damage->right, 800); - ASSERT_EQ(present_info.buffer_damage.damage->bottom, 600); - - latch.Signal(); - }); + context.SetGLPresentCallback([&](FlutterPresentInfo present_info) { + const size_t num_rects = 1; + ASSERT_EQ(present_info.frame_damage.num_rects, num_rects); + ASSERT_EQ(present_info.frame_damage.damage->left, 0); + ASSERT_EQ(present_info.frame_damage.damage->top, 0); + ASSERT_EQ(present_info.frame_damage.damage->right, 800); + ASSERT_EQ(present_info.frame_damage.damage->bottom, 600); + + ASSERT_EQ(present_info.buffer_damage.num_rects, num_rects); + ASSERT_EQ(present_info.buffer_damage.damage->left, 0); + ASSERT_EQ(present_info.buffer_damage.damage->top, 0); + ASSERT_EQ(present_info.buffer_damage.damage->right, 800); + ASSERT_EQ(present_info.buffer_damage.damage->bottom, 600); + + latch.Signal(); + }); // Send a window metrics events so frames may be scheduled. FlutterWindowMetricsEvent event = {}; @@ -4782,23 +4755,22 @@ TEST_F(EmbedderTest, // Because it's the same as the first frame, the second frame damage should // be empty but, because there was a full existing buffer damage, the buffer // damage should be the entire screen. - static_cast(context).SetGLPresentCallback( - [&](FlutterPresentInfo present_info) { - const size_t num_rects = 1; - ASSERT_EQ(present_info.frame_damage.num_rects, num_rects); - ASSERT_EQ(present_info.frame_damage.damage->left, 0); - ASSERT_EQ(present_info.frame_damage.damage->top, 0); - ASSERT_EQ(present_info.frame_damage.damage->right, 0); - ASSERT_EQ(present_info.frame_damage.damage->bottom, 0); - - ASSERT_EQ(present_info.buffer_damage.num_rects, num_rects); - ASSERT_EQ(present_info.buffer_damage.damage->left, 100); - ASSERT_EQ(present_info.buffer_damage.damage->top, 150); - ASSERT_EQ(present_info.buffer_damage.damage->right, 300); - ASSERT_EQ(present_info.buffer_damage.damage->bottom, 350); - - latch.Signal(); - }); + context.SetGLPresentCallback([&](FlutterPresentInfo present_info) { + const size_t num_rects = 1; + ASSERT_EQ(present_info.frame_damage.num_rects, num_rects); + ASSERT_EQ(present_info.frame_damage.damage->left, 0); + ASSERT_EQ(present_info.frame_damage.damage->top, 0); + ASSERT_EQ(present_info.frame_damage.damage->right, 0); + ASSERT_EQ(present_info.frame_damage.damage->bottom, 0); + + ASSERT_EQ(present_info.buffer_damage.num_rects, num_rects); + ASSERT_EQ(present_info.buffer_damage.damage->left, 100); + ASSERT_EQ(present_info.buffer_damage.damage->top, 150); + ASSERT_EQ(present_info.buffer_damage.damage->right, 300); + ASSERT_EQ(present_info.buffer_damage.damage->bottom, 350); + + latch.Signal(); + }); ASSERT_EQ(FlutterEngineSendWindowMetricsEvent(engine.get(), &event), kSuccess); @@ -4811,14 +4783,14 @@ TEST_F(EmbedderTest, CanRenderWithImpellerOpenGL) { EmbedderConfigBuilder builder(context); bool present_called = false; - static_cast(context).SetGLPresentCallback( + context.SetGLPresentCallback( [&present_called](FlutterPresentInfo present_info) { present_called = true; }); builder.AddCommandLineArgument("--enable-impeller"); builder.SetDartEntrypoint("render_impeller_test"); - builder.SetOpenGLRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); builder.SetRenderTargetType( EmbedderTestBackingStoreProducer::RenderTargetType::kOpenGLFramebuffer); @@ -4869,7 +4841,7 @@ TEST_F(EmbedderTest, CompositorMustBeAbleToRenderToOpenGLSurface) { auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); builder.SetDartEntrypoint("can_composite_platform_views"); @@ -4985,7 +4957,7 @@ TEST_F(EmbedderTest, CompositorMustBeAbleToRenderKnownSceneToOpenGLSurfaces) { auto& context = GetEmbedderContext(EmbedderTestContextType::kOpenGLContext); EmbedderConfigBuilder builder(context); - builder.SetOpenGLRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); builder.SetDartEntrypoint("can_composite_platform_views_with_known_scene"); @@ -5197,7 +5169,6 @@ INSTANTIATE_TEST_SUITE_P( ::testing::Values(EmbedderTestContextType::kOpenGLContext, EmbedderTestContextType::kVulkanContext)); -} // namespace testing -} // namespace flutter +} // namespace flutter::testing // NOLINTEND(clang-analyzer-core.StackAddressEscape) diff --git a/shell/platform/embedder/tests/embedder_metal_unittests.mm b/shell/platform/embedder/tests/embedder_metal_unittests.mm index d59c92bf62c24..a1a2088a634cc 100644 --- a/shell/platform/embedder/tests/embedder_metal_unittests.mm +++ b/shell/platform/embedder/tests/embedder_metal_unittests.mm @@ -39,9 +39,8 @@ auto& context = GetEmbedderContext(EmbedderTestContextType::kMetalContext); EmbedderConfigBuilder builder(context); - builder.SetDartEntrypoint("render_gradient"); - builder.SetMetalRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); auto rendered_scene = context.GetNextSceneImage(); @@ -108,7 +107,7 @@ EmbedderConfigBuilder builder(context); builder.SetDartEntrypoint("render_texture"); - builder.SetMetalRendererConfig(texture_size); + builder.SetSurface(texture_size); auto engine = builder.LaunchEngine(); ASSERT_TRUE(engine.is_valid()); @@ -132,7 +131,7 @@ auto& context = GetEmbedderContext(EmbedderTestContextType::kMetalContext); EmbedderConfigBuilder builder(context); - builder.SetMetalRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); builder.SetDartEntrypoint("can_composite_platform_views"); @@ -245,7 +244,7 @@ EmbedderConfigBuilder builder(context); builder.SetDartEntrypoint("can_render_scene_without_custom_compositor"); - builder.SetMetalRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); auto rendered_scene = context.GetNextSceneImage(); @@ -267,7 +266,7 @@ EmbedderTestContextMetal& context = reinterpret_cast( GetEmbedderContext(EmbedderTestContextType::kMetalContext)); EmbedderConfigBuilder builder(context); - builder.SetMetalRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetDartEntrypoint("texture_destruction_callback_called_without_custom_compositor"); struct CollectContext { @@ -317,7 +316,7 @@ auto& context = GetEmbedderContext(EmbedderTestContextType::kMetalContext); EmbedderConfigBuilder builder(context); - builder.SetMetalRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); builder.SetDartEntrypoint("can_composite_platform_views_with_known_scene"); @@ -513,7 +512,7 @@ TEST_F(EmbedderTest, CreateInvalidBackingstoreMetalTexture) { auto& context = GetEmbedderContext(EmbedderTestContextType::kMetalContext); EmbedderConfigBuilder builder(context); - builder.SetMetalRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); builder.SetRenderTargetType(EmbedderTestBackingStoreProducer::RenderTargetType::kMetalTexture); builder.SetDartEntrypoint("invalid_backingstore"); @@ -621,7 +620,7 @@ void Collect() { builder.AddCommandLineArgument("--enable-impeller"); builder.SetDartEntrypoint("render_impeller_test"); - builder.SetMetalRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); auto rendered_scene = context.GetNextSceneImage(); @@ -646,7 +645,7 @@ void Collect() { builder.AddCommandLineArgument("--enable-impeller"); builder.SetDartEntrypoint("render_impeller_text_test"); - builder.SetMetalRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); auto rendered_scene = context.GetNextSceneImage(); @@ -671,7 +670,7 @@ void Collect() { builder.AddCommandLineArgument("--enable-impeller"); builder.SetDartEntrypoint("render_impeller_text_test"); - builder.SetMetalRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); builder.SetRenderTargetType(EmbedderTestBackingStoreProducer::RenderTargetType::kMetalTexture); diff --git a/shell/platform/embedder/tests/embedder_test_context.cc b/shell/platform/embedder/tests/embedder_test_context.cc index 0f5e3dcf9afe5..0b6959cb022e7 100644 --- a/shell/platform/embedder/tests/embedder_test_context.cc +++ b/shell/platform/embedder/tests/embedder_test_context.cc @@ -96,6 +96,10 @@ void EmbedderTestContext::SetRootSurfaceTransformation(SkMatrix matrix) { root_surface_transformation_ = matrix; } +FlutterRendererConfig& EmbedderTestContext::GetRendererConfig() { + return renderer_config_; +} + void EmbedderTestContext::AddIsolateCreateCallback( const fml::closure& closure) { if (closure) { diff --git a/shell/platform/embedder/tests/embedder_test_context.h b/shell/platform/embedder/tests/embedder_test_context.h index 11d2eb6a322ad..903c47d02a0e7 100644 --- a/shell/platform/embedder/tests/embedder_test_context.h +++ b/shell/platform/embedder/tests/embedder_test_context.h @@ -72,9 +72,7 @@ class EmbedderTestContext { void SetRootSurfaceTransformation(SkMatrix matrix); - void SetRenderTargetType( - EmbedderTestBackingStoreProducer::RenderTargetType type, - FlutterSoftwarePixelFormat software_pixfmt); + FlutterRendererConfig& GetRendererConfig(); void AddIsolateCreateCallback(const fml::closure& closure); @@ -129,6 +127,7 @@ class EmbedderTestContext { UniqueAOTData aot_data_; std::vector isolate_create_callbacks_; std::shared_ptr native_resolver_; + FlutterRendererConfig renderer_config_ = {}; SemanticsUpdateCallback2 update_semantics_callback2_; SemanticsUpdateCallback update_semantics_callback_; SemanticsNodeCallback update_semantics_node_callback_; @@ -163,6 +162,8 @@ class EmbedderTestContext { void SetupAOTDataIfNecessary(); + virtual void SetSurface(SkISize surface_size) = 0; + virtual void SetupCompositor() = 0; void FireIsolateCreateCallbacks(); @@ -178,8 +179,6 @@ class EmbedderTestContext { void SetNextSceneCallback(const NextSceneCallback& next_scene_callback); - virtual void SetupSurface(SkISize surface_size) = 0; - FML_DISALLOW_COPY_AND_ASSIGN(EmbedderTestContext); }; diff --git a/shell/platform/embedder/tests/embedder_test_context_gl.cc b/shell/platform/embedder/tests/embedder_test_context_gl.cc index 2ee44156b9260..055c2f2ace802 100644 --- a/shell/platform/embedder/tests/embedder_test_context_gl.cc +++ b/shell/platform/embedder/tests/embedder_test_context_gl.cc @@ -4,6 +4,7 @@ #include "flutter/shell/platform/embedder/tests/embedder_test_context_gl.h" +#include #include #include "flutter/fml/make_copyable.h" @@ -11,26 +12,85 @@ #include "flutter/runtime/dart_vm.h" #include "flutter/shell/platform/embedder/tests/embedder_assertions.h" #include "flutter/shell/platform/embedder/tests/embedder_test_compositor_gl.h" -#include "flutter/testing/test_gl_surface.h" #include "flutter/testing/testing.h" #include "tests/embedder_test.h" #include "third_party/dart/runtime/bin/elf_loader.h" #include "third_party/skia/include/core/SkSurface.h" -namespace flutter { -namespace testing { +namespace flutter::testing { EmbedderTestContextGL::EmbedderTestContextGL(std::string assets_path) : EmbedderTestContext(std::move(assets_path)), - egl_context_(std::make_shared()) {} + egl_context_(std::make_shared()) { + renderer_config_.type = FlutterRendererType::kOpenGL; + renderer_config_.open_gl = { + .struct_size = sizeof(FlutterOpenGLRendererConfig), + .make_current = [](void* context) -> bool { + return reinterpret_cast(context) + ->GLMakeCurrent(); + }, + .clear_current = [](void* context) -> bool { + return reinterpret_cast(context) + ->GLClearCurrent(); + }, + .make_resource_current = [](void* context) -> bool { + return reinterpret_cast(context) + ->GLMakeResourceCurrent(); + }, + .fbo_reset_after_present = true, + .surface_transformation = [](void* context) -> FlutterTransformation { + return reinterpret_cast(context) + ->GetRootSurfaceTransformation(); + }, + .gl_proc_resolver = [](void* context, const char* name) -> void* { + return reinterpret_cast(context) + ->GLGetProcAddress(name); + }, + .fbo_with_frame_info_callback = + [](void* context, const FlutterFrameInfo* frame_info) -> uint32_t { + return reinterpret_cast(context) + ->GLGetFramebuffer(*frame_info); + }, + .present_with_info = [](void* context, + const FlutterPresentInfo* present_info) -> bool { + return reinterpret_cast(context)->GLPresent( + *present_info); + }, + .populate_existing_damage = nullptr, + }; +} EmbedderTestContextGL::~EmbedderTestContextGL() { SetGLGetFBOCallback(nullptr); } -void EmbedderTestContextGL::SetupSurface(SkISize surface_size) { - FML_CHECK(!gl_surface_); - gl_surface_ = std::make_unique(egl_context_, surface_size); +void EmbedderTestContextGL::SetOpenGLFBOCallBack() { + // SetOpenGLRendererConfig must be called before this. + FML_CHECK(renderer_config_.type == FlutterRendererType::kOpenGL); + + renderer_config_.open_gl.fbo_callback = [](void* context) -> uint32_t { + FlutterFrameInfo frame_info = {}; + // fbo_callback doesn't use the frame size information, only + // fbo_callback_with_frame_info does. + frame_info.struct_size = sizeof(FlutterFrameInfo); + frame_info.size.width = 0; + frame_info.size.height = 0; + return reinterpret_cast(context)->GLGetFramebuffer( + frame_info); + }; +} + +void EmbedderTestContextGL::SetOpenGLPresentCallBack() { + // SetOpenGLRendererConfig must be called before this. + FML_CHECK(renderer_config_.type == FlutterRendererType::kOpenGL); + + renderer_config_.open_gl.present = [](void* context) -> bool { + // passing a placeholder fbo_id. + return reinterpret_cast(context)->GLPresent( + FlutterPresentInfo{ + .fbo_id = 0, + }); + }; } bool EmbedderTestContextGL::GLMakeCurrent() { @@ -136,6 +196,11 @@ uint32_t EmbedderTestContextGL::GetWindowFBOId() const { return gl_surface_->GetWindowFBOId(); } +void EmbedderTestContextGL::SetSurface(SkISize surface_size) { + FML_CHECK(!gl_surface_); + gl_surface_ = std::make_unique(egl_context_, surface_size); +} + void EmbedderTestContextGL::SetupCompositor() { FML_CHECK(!compositor_) << "Already set up a compositor in this context."; FML_CHECK(gl_surface_) @@ -145,5 +210,4 @@ void EmbedderTestContextGL::SetupCompositor() { GLClearCurrent(); } -} // namespace testing -} // namespace flutter +} // namespace flutter::testing diff --git a/shell/platform/embedder/tests/embedder_test_context_gl.h b/shell/platform/embedder/tests/embedder_test_context_gl.h index a16cbca55d1ea..9335d1c66a777 100644 --- a/shell/platform/embedder/tests/embedder_test_context_gl.h +++ b/shell/platform/embedder/tests/embedder_test_context_gl.h @@ -29,6 +29,18 @@ class EmbedderTestContextGL : public EmbedderTestContext { // |EmbedderTestContext| EmbedderTestContextType GetContextType() const override; + // Used to explicitly set an `open_gl.fbo_callback`. Using this method will + // cause your test to fail since the ctor for this class sets + // `open_gl.fbo_callback_with_frame_info`. This method exists as a utility to + // explicitly test this behavior. + void SetOpenGLFBOCallBack(); + + // Used to explicitly set an `open_gl.present`. Using this method will cause + // your test to fail since the ctor for this class sets + // `open_gl.present_with_info`. This method exists as a utility to explicitly + // test this behavior. + void SetOpenGLPresentCallBack(); + //---------------------------------------------------------------------------- /// @brief Sets a callback that will be invoked (on the raster task /// runner) when the engine asks the embedder for a new FBO ID at @@ -65,14 +77,12 @@ class EmbedderTestContextGL : public EmbedderTestContext { void* GLGetProcAddress(const char* name); - protected: - virtual void SetupCompositor() override; - - void SetupCompositorUsingGLSurfaces(); - private: - // This allows the builder to access the hooks. - friend class EmbedderConfigBuilder; + // |EmbedderTestContext| + void SetSurface(SkISize surface_size) override; + + // |EmbedderTestContext| + void SetupCompositor() override; std::shared_ptr egl_context_; std::unique_ptr gl_surface_; @@ -82,8 +92,6 @@ class EmbedderTestContextGL : public EmbedderTestContext { GLPresentCallback gl_present_callback_; GLPopulateExistingDamageCallback gl_populate_existing_damage_callback_; - void SetupSurface(SkISize surface_size) override; - bool GLMakeCurrent(); bool GLClearCurrent(); diff --git a/shell/platform/embedder/tests/embedder_test_context_metal.h b/shell/platform/embedder/tests/embedder_test_context_metal.h index eea599fe0c07c..b063db6973be2 100644 --- a/shell/platform/embedder/tests/embedder_test_context_metal.h +++ b/shell/platform/embedder/tests/embedder_test_context_metal.h @@ -35,9 +35,6 @@ class EmbedderTestContextMetal : public EmbedderTestContext { // |EmbedderTestContext| size_t GetSurfacePresentCount() const override; - // |EmbedderTestContext| - void SetupCompositor() override; - void SetExternalTextureCallback( TestExternalTextureCallback external_texture_frame_callback); @@ -61,8 +58,11 @@ class EmbedderTestContextMetal : public EmbedderTestContext { FlutterMetalTexture GetNextDrawable(const FlutterFrameInfo* frame_info); private: - // This allows the builder to access the hooks. - friend class EmbedderConfigBuilder; + // |EmbedderTestContext| + void SetSurface(SkISize surface_size) override; + + // |EmbedderTestContext| + void SetupCompositor() override; TestExternalTextureCallback external_texture_frame_callback_ = nullptr; SkISize surface_size_ = SkISize::MakeEmpty(); @@ -72,8 +72,6 @@ class EmbedderTestContextMetal : public EmbedderTestContext { PresentCallback present_callback_ = nullptr; NextDrawableCallback next_drawable_callback_ = nullptr; - void SetupSurface(SkISize surface_size) override; - FML_DISALLOW_COPY_AND_ASSIGN(EmbedderTestContextMetal); }; diff --git a/shell/platform/embedder/tests/embedder_test_context_metal.mm b/shell/platform/embedder/tests/embedder_test_context_metal.mm index 1ffaad31b54e6..848c93c4b90be 100644 --- a/shell/platform/embedder/tests/embedder_test_context_metal.mm +++ b/shell/platform/embedder/tests/embedder_test_context_metal.mm @@ -11,35 +11,41 @@ #include "flutter/fml/logging.h" #include "flutter/shell/platform/embedder/tests/embedder_test_compositor_metal.h" -namespace flutter { -namespace testing { +namespace flutter::testing { EmbedderTestContextMetal::EmbedderTestContextMetal(std::string assets_path) : EmbedderTestContext(std::move(assets_path)) { metal_context_ = std::make_unique(); + renderer_config_.type = FlutterRendererType::kMetal; + renderer_config_.metal = { + .struct_size = sizeof(FlutterMetalRendererConfig), + .device = metal_context_->GetMetalDevice(), + .present_command_queue = metal_context_->GetMetalCommandQueue(), + .get_next_drawable_callback = + [](void* user_data, const FlutterFrameInfo* frame_info) { + return reinterpret_cast(user_data)->GetNextDrawable( + frame_info); + }, + .present_drawable_callback = [](void* user_data, const FlutterMetalTexture* texture) -> bool { + return reinterpret_cast(user_data)->Present(texture->texture_id); + }, + .external_texture_frame_callback = [](void* user_data, int64_t texture_id, size_t width, + size_t height, + FlutterMetalExternalTexture* texture_out) -> bool { + return reinterpret_cast(user_data)->PopulateExternalTexture( + texture_id, width, height, texture_out); + }, + }; } EmbedderTestContextMetal::~EmbedderTestContextMetal() {} -void EmbedderTestContextMetal::SetupSurface(SkISize surface_size) { - FML_CHECK(surface_size_.isEmpty()); - surface_size_ = surface_size; - metal_surface_ = TestMetalSurface::Create(*metal_context_, surface_size_); -} - -size_t EmbedderTestContextMetal::GetSurfacePresentCount() const { - return present_count_; -} - EmbedderTestContextType EmbedderTestContextMetal::GetContextType() const { return EmbedderTestContextType::kMetalContext; } -void EmbedderTestContextMetal::SetupCompositor() { - FML_CHECK(!compositor_) << "Already set up a compositor in this context."; - FML_CHECK(metal_surface_) << "Set up the Metal surface before setting up a compositor."; - compositor_ = - std::make_unique(surface_size_, metal_surface_->GetGrContext()); +size_t EmbedderTestContextMetal::GetSurfacePresentCount() const { + return present_count_; } TestMetalContext* EmbedderTestContextMetal::GetTestMetalContext() { @@ -98,5 +104,17 @@ return texture; } -} // namespace testing -} // namespace flutter +void EmbedderTestContextMetal::SetSurface(SkISize surface_size) { + FML_CHECK(surface_size_.isEmpty()); + surface_size_ = surface_size; + metal_surface_ = TestMetalSurface::Create(*metal_context_, surface_size_); +} + +void EmbedderTestContextMetal::SetupCompositor() { + FML_CHECK(!compositor_) << "Already set up a compositor in this context."; + FML_CHECK(metal_surface_) << "Set up the Metal surface before setting up a compositor."; + compositor_ = + std::make_unique(surface_size_, metal_surface_->GetGrContext()); +} + +} // namespace flutter::testing diff --git a/shell/platform/embedder/tests/embedder_test_context_software.cc b/shell/platform/embedder/tests/embedder_test_context_software.cc index cddeed7656b25..1f06890abb725 100644 --- a/shell/platform/embedder/tests/embedder_test_context_software.cc +++ b/shell/platform/embedder/tests/embedder_test_context_software.cc @@ -13,34 +13,43 @@ #include "flutter/shell/platform/embedder/tests/embedder_test_compositor_software.h" #include "flutter/testing/testing.h" #include "third_party/dart/runtime/bin/elf_loader.h" +#include "third_party/skia/include/core/SkBitmap.h" #include "third_party/skia/include/core/SkSurface.h" -namespace flutter { -namespace testing { +namespace flutter::testing { EmbedderTestContextSoftware::EmbedderTestContextSoftware( std::string assets_path) - : EmbedderTestContext(std::move(assets_path)) {} - -EmbedderTestContextSoftware::~EmbedderTestContextSoftware() = default; - -bool EmbedderTestContextSoftware::Present(const sk_sp& image) { - software_surface_present_count_++; - - FireRootSurfacePresentCallbackIfPresent([image] { return image; }); - - return true; + : EmbedderTestContext(std::move(assets_path)) { + renderer_config_.type = FlutterRendererType::kSoftware; + renderer_config_.software = { + .struct_size = sizeof(FlutterSoftwareRendererConfig), + .surface_present_callback = + [](void* context, const void* allocation, size_t row_bytes, + size_t height) { + auto image_info = SkImageInfo::MakeN32Premul( + SkISize::Make(row_bytes / 4, height)); + SkBitmap bitmap; + if (!bitmap.installPixels(image_info, const_cast(allocation), + row_bytes)) { + FML_LOG(ERROR) << "Could not copy pixels for the software " + "composition from the engine."; + return false; + } + bitmap.setImmutable(); + return reinterpret_cast(context) + ->Present(SkImages::RasterFromBitmap(bitmap)); + }, + }; } -size_t EmbedderTestContextSoftware::GetSurfacePresentCount() const { - return software_surface_present_count_; -} +EmbedderTestContextSoftware::~EmbedderTestContextSoftware() = default; EmbedderTestContextType EmbedderTestContextSoftware::GetContextType() const { return EmbedderTestContextType::kSoftwareContext; } -void EmbedderTestContextSoftware::SetupSurface(SkISize surface_size) { +void EmbedderTestContextSoftware::SetSurface(SkISize surface_size) { surface_size_ = surface_size; } @@ -49,5 +58,14 @@ void EmbedderTestContextSoftware::SetupCompositor() { compositor_ = std::make_unique(surface_size_); } -} // namespace testing -} // namespace flutter +size_t EmbedderTestContextSoftware::GetSurfacePresentCount() const { + return software_surface_present_count_; +} + +bool EmbedderTestContextSoftware::Present(const sk_sp& image) { + software_surface_present_count_++; + FireRootSurfacePresentCallbackIfPresent([image] { return image; }); + return true; +} + +} // namespace flutter::testing diff --git a/shell/platform/embedder/tests/embedder_test_context_software.h b/shell/platform/embedder/tests/embedder_test_context_software.h index 25c0ce52c92e5..05396b160352b 100644 --- a/shell/platform/embedder/tests/embedder_test_context_software.h +++ b/shell/platform/embedder/tests/embedder_test_context_software.h @@ -18,21 +18,24 @@ class EmbedderTestContextSoftware : public EmbedderTestContext { ~EmbedderTestContextSoftware() override; - size_t GetSurfacePresentCount() const override; - // |EmbedderTestContext| EmbedderTestContextType GetContextType() const override; - bool Present(const sk_sp& image); + // |EmbedderTestContext| + size_t GetSurfacePresentCount() const override; - protected: - virtual void SetupCompositor() override; + bool Present(const sk_sp& image); private: + // |EmbedderTestContext| + void SetSurface(SkISize surface_size) override; + + // |EmbedderTestContext| + void SetupCompositor() override; + sk_sp surface_; SkISize surface_size_; size_t software_surface_present_count_ = 0; - void SetupSurface(SkISize surface_size) override; FML_DISALLOW_COPY_AND_ASSIGN(EmbedderTestContextSoftware); }; diff --git a/shell/platform/embedder/tests/embedder_test_context_vulkan.cc b/shell/platform/embedder/tests/embedder_test_context_vulkan.cc index 4f3678597dda1..09bb264a38616 100644 --- a/shell/platform/embedder/tests/embedder_test_context_vulkan.cc +++ b/shell/platform/embedder/tests/embedder_test_context_vulkan.cc @@ -15,20 +15,52 @@ #include "flutter/vulkan/vulkan_device.h" #include "third_party/skia/include/core/SkSurface.h" -namespace flutter { -namespace testing { +namespace flutter::testing { EmbedderTestContextVulkan::EmbedderTestContextVulkan(std::string assets_path) : EmbedderTestContext(std::move(assets_path)), surface_() { vulkan_context_ = fml::MakeRefCounted(); + renderer_config_.type = FlutterRendererType::kVulkan; + renderer_config_.vulkan = { + .struct_size = sizeof(FlutterVulkanRendererConfig), + .version = vulkan_context_->application_->GetAPIVersion(), + .instance = vulkan_context_->application_->GetInstance(), + .physical_device = vulkan_context_->device_->GetPhysicalDeviceHandle(), + .device = vulkan_context_->device_->GetHandle(), + .queue_family_index = vulkan_context_->device_->GetGraphicsQueueIndex(), + .queue = vulkan_context_->device_->GetQueueHandle(), + .get_instance_proc_address_callback = + EmbedderTestContextVulkan::InstanceProcAddr, + .get_next_image_callback = + [](void* context, + const FlutterFrameInfo* frame_info) -> FlutterVulkanImage { + VkImage image = + reinterpret_cast(context)->GetNextImage( + {static_cast(frame_info->size.width), + static_cast(frame_info->size.height)}); + return { + .struct_size = sizeof(FlutterVulkanImage), + .image = reinterpret_cast(image), + .format = VK_FORMAT_R8G8B8A8_UNORM, + }; + }, + .present_image_callback = [](void* context, + const FlutterVulkanImage* image) -> bool { + return reinterpret_cast(context) + ->PresentImage(reinterpret_cast(image->image)); + }, + }; } EmbedderTestContextVulkan::~EmbedderTestContextVulkan() {} -void EmbedderTestContextVulkan::SetupSurface(SkISize surface_size) { - FML_CHECK(surface_size_.isEmpty()); - surface_size_ = surface_size; - surface_ = TestVulkanSurface::Create(*vulkan_context_, surface_size_); +EmbedderTestContextType EmbedderTestContextVulkan::GetContextType() const { + return EmbedderTestContextType::kVulkanContext; +} + +void EmbedderTestContextVulkan::SetVulkanInstanceProcAddressCallback( + FlutterVulkanInstanceProcAddressCallback callback) { + renderer_config_.vulkan.get_instance_proc_address_callback = callback; } size_t EmbedderTestContextVulkan::GetSurfacePresentCount() const { @@ -46,18 +78,6 @@ bool EmbedderTestContextVulkan::PresentImage(VkImage image) { return true; } -EmbedderTestContextType EmbedderTestContextVulkan::GetContextType() const { - return EmbedderTestContextType::kVulkanContext; -} - -void EmbedderTestContextVulkan::SetupCompositor() { - FML_CHECK(!compositor_) << "Already set up a compositor in this context."; - FML_CHECK(surface_) - << "Set up the Vulkan surface before setting up a compositor."; - compositor_ = std::make_unique( - surface_size_, vulkan_context_->GetGrDirectContext()); -} - void* EmbedderTestContextVulkan::InstanceProcAddr( void* user_data, FlutterVulkanInstanceHandle instance, @@ -68,5 +88,18 @@ void* EmbedderTestContextVulkan::InstanceProcAddr( return reinterpret_cast(proc_addr); } -} // namespace testing -} // namespace flutter +void EmbedderTestContextVulkan::SetSurface(SkISize surface_size) { + FML_CHECK(surface_size_.isEmpty()); + surface_size_ = surface_size; + surface_ = TestVulkanSurface::Create(*vulkan_context_, surface_size_); +} + +void EmbedderTestContextVulkan::SetupCompositor() { + FML_CHECK(!compositor_) << "Already set up a compositor in this context."; + FML_CHECK(surface_) + << "Set up the Vulkan surface before setting up a compositor."; + compositor_ = std::make_unique( + surface_size_, vulkan_context_->GetGrDirectContext()); +} + +} // namespace flutter::testing diff --git a/shell/platform/embedder/tests/embedder_test_context_vulkan.h b/shell/platform/embedder/tests/embedder_test_context_vulkan.h index 18cceab4a28d4..2fde79996207d 100644 --- a/shell/platform/embedder/tests/embedder_test_context_vulkan.h +++ b/shell/platform/embedder/tests/embedder_test_context_vulkan.h @@ -26,18 +26,24 @@ class EmbedderTestContextVulkan : public EmbedderTestContext { // |EmbedderTestContext| size_t GetSurfacePresentCount() const override; - // |EmbedderTestContext| - void SetupCompositor() override; - VkImage GetNextImage(const SkISize& size); bool PresentImage(VkImage image); + void SetVulkanInstanceProcAddressCallback( + FlutterVulkanInstanceProcAddressCallback callback); + static void* InstanceProcAddr(void* user_data, FlutterVulkanInstanceHandle instance, const char* name); private: + // |EmbedderTestContext| + void SetSurface(SkISize surface_size) override; + + // |EmbedderTestContext| + void SetupCompositor() override; + // The TestVulkanContext destructor must be called _after_ the compositor is // freed. fml::RefPtr vulkan_context_ = nullptr; @@ -47,10 +53,6 @@ class EmbedderTestContextVulkan : public EmbedderTestContext { SkISize surface_size_ = SkISize::MakeEmpty(); size_t present_count_ = 0; - void SetupSurface(SkISize surface_size) override; - - friend class EmbedderConfigBuilder; - FML_DISALLOW_COPY_AND_ASSIGN(EmbedderTestContextVulkan); }; diff --git a/shell/platform/embedder/tests/embedder_unittests.cc b/shell/platform/embedder/tests/embedder_unittests.cc index 4acdcde9aa170..1f6323427a785 100644 --- a/shell/platform/embedder/tests/embedder_unittests.cc +++ b/shell/platform/embedder/tests/embedder_unittests.cc @@ -69,7 +69,7 @@ TEST_F(EmbedderTest, CanLaunchAndShutdownWithValidProjectArgs) { fml::AutoResetWaitableEvent latch; context.AddIsolateCreateCallback([&latch]() { latch.Signal(); }); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); auto engine = builder.LaunchEngine(); ASSERT_TRUE(engine.is_valid()); // Wait for the root isolate to launch. @@ -81,7 +81,7 @@ TEST_F(EmbedderTest, CanLaunchAndShutdownWithValidProjectArgs) { TEST_F(EmbedderTest, DISABLED_CanLaunchAndShutdownMultipleTimes) { EmbedderConfigBuilder builder( GetEmbedderContext(EmbedderTestContextType::kSoftwareContext)); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); for (size_t i = 0; i < 3; ++i) { auto engine = builder.LaunchEngine(); ASSERT_TRUE(engine.is_valid()); @@ -97,7 +97,7 @@ TEST_F(EmbedderTest, CanInvokeCustomEntrypoint) { }; context.AddNativeCallback("SayHiFromCustomEntrypoint", entrypoint); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("customEntrypoint"); auto engine = builder.LaunchEngine(); latch.Wait(); @@ -136,7 +136,7 @@ TEST_F(EmbedderTest, CanInvokeCustomEntrypointMacro) { })); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("customEntrypoint1"); auto engine = builder.LaunchEngine(); latch1.Wait(); @@ -148,7 +148,7 @@ TEST_F(EmbedderTest, CanInvokeCustomEntrypointMacro) { TEST_F(EmbedderTest, CanTerminateCleanly) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("terminateExitCodeHandler"); auto engine = builder.LaunchEngine(); ASSERT_TRUE(engine.is_valid()); @@ -169,7 +169,7 @@ TEST_F(EmbedderTest, ExecutableNameNotNull) { })); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("executableNameNotNull"); builder.SetExecutableName("/path/to/binary"); auto engine = builder.LaunchEngine(); @@ -192,7 +192,7 @@ TEST_F(EmbedderTest, ImplicitViewNotNull) { })); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("implicitViewNotNull"); auto engine = builder.LaunchEngine(); latch.Wait(); @@ -239,7 +239,7 @@ TEST_F(EmbedderTest, CanSpecifyCustomPlatformTaskRunner) { EmbedderConfigBuilder builder(context); const auto task_runner_description = test_task_runner.GetFlutterTaskRunnerDescription(); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetPlatformTaskRunner(&task_runner_description); builder.SetDartEntrypoint("invokePlatformTaskRunner"); std::scoped_lock lock(engine_mutex); @@ -283,7 +283,7 @@ TEST(EmbedderTestNoFixture, CanGetCurrentTimeInNanoseconds) { TEST_F(EmbedderTest, CanReloadSystemFonts) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); auto engine = builder.LaunchEngine(); ASSERT_TRUE(engine.is_valid()); @@ -301,7 +301,7 @@ TEST_F(EmbedderTest, IsolateServiceIdSent) { thread.GetTaskRunner()->PostTask([&]() { EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("main"); builder.SetPlatformMessageCallback( [&](const FlutterPlatformMessage* message) { @@ -337,7 +337,7 @@ TEST_F(EmbedderTest, IsolateServiceIdSent) { TEST_F(EmbedderTest, CanCreateAndCollectCallbacks) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("platform_messages_response"); context.AddNativeCallback( "SignalNativeTest", @@ -376,7 +376,7 @@ TEST_F(EmbedderTest, PlatformMessagesCanReceiveResponse) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("platform_messages_response"); fml::AutoResetWaitableEvent ready; @@ -432,7 +432,7 @@ TEST_F(EmbedderTest, PlatformMessagesCanReceiveResponse) { TEST_F(EmbedderTest, PlatformMessagesCanBeSentWithoutResponseHandles) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("platform_messages_no_response"); const std::string message_data = "Hello but don't call me back."; @@ -477,7 +477,7 @@ TEST_F(EmbedderTest, PlatformMessagesCanBeSentWithoutResponseHandles) { TEST_F(EmbedderTest, NullPlatformMessagesCanBeSent) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("null_platform_messages"); fml::AutoResetWaitableEvent ready, message; @@ -519,7 +519,7 @@ TEST_F(EmbedderTest, NullPlatformMessagesCanBeSent) { TEST_F(EmbedderTest, InvalidPlatformMessages) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); auto engine = builder.LaunchEngine(); ASSERT_TRUE(engine.is_valid()); @@ -544,7 +544,7 @@ TEST_F(EmbedderTest, CanSetCustomLogMessageCallback) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); builder.SetDartEntrypoint("custom_logger"); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); context.SetLogMessageCallback( [&callback_latch](const char* tag, const char* message) { EXPECT_EQ(std::string(tag), "flutter"); @@ -563,7 +563,7 @@ TEST_F(EmbedderTest, CanSetCustomLogTag) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); builder.SetDartEntrypoint("custom_logger"); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetLogTag("butterfly"); context.SetLogMessageCallback( [&callback_latch](const char* tag, const char* message) { @@ -583,7 +583,7 @@ TEST_F(EmbedderTest, CanSetCustomLogTag) { TEST_F(EmbedderTest, VMShutsDownWhenNoEnginesInProcess) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); const auto launch_count = DartVM::GetVMLaunchCount(); { @@ -602,7 +602,7 @@ TEST_F(EmbedderTest, VMShutsDownWhenNoEnginesInProcess) { TEST_F(EmbedderTest, DartEntrypointArgs) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.AddDartEntrypointArgument("foo"); builder.AddDartEntrypointArgument("bar"); builder.SetDartEntrypoint("dart_entrypoint_args"); @@ -636,7 +636,7 @@ TEST_F(EmbedderTest, VMAndIsolateSnapshotSizesAreRedundantInAOTMode) { } auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); // The fixture sets this up correctly. Intentionally mess up the args. builder.GetProjectArgs().vm_snapshot_data_size = 0; @@ -652,7 +652,7 @@ TEST_F(EmbedderTest, CanRenderImplicitView) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); builder.SetDartEntrypoint("render_implicit_view"); builder.SetRenderTargetType( @@ -684,7 +684,7 @@ TEST_F(EmbedderTest, CanRenderImplicitViewUsingPresentLayersCallback) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(/* avoid_backing_store_cache = */ false, /* use_present_layers_callback = */ true); builder.SetDartEntrypoint("render_implicit_view"); @@ -729,7 +729,7 @@ TEST_F(EmbedderTest, auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); builder.SetDartEntrypoint("can_composite_platform_views_with_known_scene"); @@ -948,7 +948,7 @@ TEST_F(EmbedderTest, NoLayerCreatedForTransparentOverlayOnTopOfPlatformLayer) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); builder.SetDartEntrypoint("can_composite_platform_views_transparent_overlay"); @@ -1085,7 +1085,7 @@ TEST_F(EmbedderTest, NoLayerCreatedForNoOverlayOnTopOfPlatformLayer) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); builder.SetDartEntrypoint("can_composite_platform_views_no_overlay"); @@ -1220,7 +1220,7 @@ TEST_F(EmbedderTest, NoLayerCreatedForNoOverlayOnTopOfPlatformLayer) { TEST_F(EmbedderTest, CanCreateInitializedEngine) { EmbedderConfigBuilder builder( GetEmbedderContext(EmbedderTestContextType::kSoftwareContext)); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); auto engine = builder.InitializeEngine(); ASSERT_TRUE(engine.is_valid()); engine.reset(); @@ -1232,7 +1232,7 @@ TEST_F(EmbedderTest, CanCreateInitializedEngine) { TEST_F(EmbedderTest, CanRunInitializedEngine) { EmbedderConfigBuilder builder( GetEmbedderContext(EmbedderTestContextType::kSoftwareContext)); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); auto engine = builder.InitializeEngine(); ASSERT_TRUE(engine.is_valid()); ASSERT_EQ(FlutterEngineRunInitialized(engine.get()), kSuccess); @@ -1247,7 +1247,7 @@ TEST_F(EmbedderTest, CanRunInitializedEngine) { TEST_F(EmbedderTest, CanDeinitializeAnEngine) { EmbedderConfigBuilder builder( GetEmbedderContext(EmbedderTestContextType::kSoftwareContext)); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); auto engine = builder.InitializeEngine(); ASSERT_TRUE(engine.is_valid()); ASSERT_EQ(FlutterEngineRunInitialized(engine.get()), kSuccess); @@ -1278,7 +1278,7 @@ TEST_F(EmbedderTest, CanDeinitializeAnEngine) { TEST_F(EmbedderTest, CanAddView) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("window_metrics_event_all_view_ids"); fml::AutoResetWaitableEvent ready_latch, message_latch; @@ -1326,7 +1326,7 @@ TEST_F(EmbedderTest, CanAddView) { TEST_F(EmbedderTest, AddViewSchedulesFrame) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("add_view_schedules_frame"); fml::AutoResetWaitableEvent latch; context.AddNativeCallback( @@ -1371,7 +1371,7 @@ TEST_F(EmbedderTest, AddViewSchedulesFrame) { TEST_F(EmbedderTest, CanRemoveView) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("window_metrics_event_all_view_ids"); fml::AutoResetWaitableEvent ready_latch, message_latch; @@ -1432,7 +1432,7 @@ TEST_F(EmbedderTest, CanRemoveView) { TEST_F(EmbedderTest, CannotRemoveImplicitView) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); auto engine = builder.LaunchEngine(); ASSERT_TRUE(engine.is_valid()); @@ -1452,7 +1452,7 @@ TEST_F(EmbedderTest, CannotRemoveImplicitView) { TEST_F(EmbedderTest, CannotAddDuplicateViews) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("window_metrics_event_all_view_ids"); fml::AutoResetWaitableEvent ready_latch, message_latch; @@ -1524,7 +1524,7 @@ TEST_F(EmbedderTest, CannotAddDuplicateViews) { TEST_F(EmbedderTest, CanReuseViewIds) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("window_metrics_event_all_view_ids"); fml::AutoResetWaitableEvent ready_latch, message_latch; @@ -1589,7 +1589,7 @@ TEST_F(EmbedderTest, CanReuseViewIds) { TEST_F(EmbedderTest, CannotRemoveUnknownView) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); auto engine = builder.LaunchEngine(); ASSERT_TRUE(engine.is_valid()); @@ -1615,7 +1615,7 @@ TEST_F(EmbedderTest, CannotRemoveUnknownView) { TEST_F(EmbedderTest, ViewOperationsOrdered) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("window_metrics_event_all_view_ids"); fml::AutoResetWaitableEvent ready_latch; @@ -1762,7 +1762,7 @@ TEST_F(EmbedderTest, ViewOperationsOrdered) { TEST_F(EmbedderTest, CanRenderMultipleViews) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetCompositor(); builder.SetDartEntrypoint("render_all_views"); @@ -1843,7 +1843,7 @@ TEST_F(EmbedderTest, BackingStoresCorrespondToTheirViews) { EmbedderConfigBuilder builder(context); builder.SetDartEntrypoint("render_all_views"); - builder.SetSoftwareRendererConfig(SkISize::Make(800, 600)); + builder.SetSurface(SkISize::Make(800, 600)); builder.SetCompositor(); EmbedderTestBackingStoreProducerSoftware producer( @@ -1995,7 +1995,7 @@ TEST_F(EmbedderTest, BackingStoresCorrespondToTheirViews) { TEST_F(EmbedderTest, CanUpdateLocales) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("can_receive_locale_updates"); fml::AutoResetWaitableEvent latch; context.AddNativeCallback( @@ -2056,7 +2056,7 @@ TEST_F(EmbedderTest, LocalizationCallbacksCalled) { fml::AutoResetWaitableEvent latch; context.AddIsolateCreateCallback([&latch]() { latch.Signal(); }); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); auto engine = builder.LaunchEngine(); ASSERT_TRUE(engine.is_valid()); // Wait for the root isolate to launch. @@ -2087,7 +2087,7 @@ TEST_F(EmbedderTest, VerifyB143464703WithSoftwareBackend) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(SkISize::Make(1024, 600)); + builder.SetSurface(SkISize::Make(1024, 600)); builder.SetCompositor(); builder.SetDartEntrypoint("verify_b143464703"); @@ -2211,7 +2211,7 @@ TEST_F(EmbedderTest, CanSendLowMemoryNotification) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); auto engine = builder.LaunchEngine(); @@ -2241,7 +2241,7 @@ TEST_F(EmbedderTest, CanPostTaskToAllNativeThreads) { GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); engine = builder.LaunchEngine(); @@ -2385,7 +2385,7 @@ TEST_F(EmbedderTest, MustNotRunWithMultipleAOTSources) { context, EmbedderConfigBuilder::InitializationPreference::kMultiAOTInitialize); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); auto engine = builder.LaunchEngine(); ASSERT_FALSE(engine.is_valid()); @@ -2430,7 +2430,7 @@ TEST_F(EmbedderTest, CanLaunchAndShutdownWithAValidElfSource) { context, EmbedderConfigBuilder::InitializationPreference::kAOTDataInitialize); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); auto engine = builder.LaunchEngine(); ASSERT_TRUE(engine.is_valid()); @@ -2466,7 +2466,7 @@ TEST_F(EmbedderTest, CanSuccessfullyPopulateSpecificJITSnapshotCallbacks) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); // Construct the location of valid JIT snapshots. const std::string src_path = GetSourcePath(); @@ -2522,7 +2522,7 @@ TEST_F(EmbedderTest, JITSnapshotCallbacksFailWithInvalidLocation) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); // Explicitly define the locations of the invalid JIT snapshots builder.GetProjectArgs().vm_snapshot_data = @@ -2559,7 +2559,7 @@ TEST_F(EmbedderTest, CanLaunchEngineWithSpecifiedJITSnapshots) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); // Construct the location of valid JIT snapshots. const std::string src_path = GetSourcePath(); @@ -2599,7 +2599,7 @@ TEST_F(EmbedderTest, CanLaunchEngineWithSomeSpecifiedJITSnapshots) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); // Construct the location of valid JIT snapshots. const std::string src_path = GetSourcePath(); @@ -2632,7 +2632,7 @@ TEST_F(EmbedderTest, CanLaunchEngineWithInvalidJITSnapshots) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); // Explicitly define the locations of the JIT snapshots builder.GetProjectArgs().isolate_snapshot_data = @@ -2658,7 +2658,7 @@ TEST_F(EmbedderTest, CanLaunchEngineWithUnspecifiedJITSnapshots) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); ASSERT_EQ(builder.GetProjectArgs().vm_snapshot_data, nullptr); ASSERT_EQ(builder.GetProjectArgs().vm_snapshot_instructions, nullptr); @@ -2672,7 +2672,7 @@ TEST_F(EmbedderTest, CanLaunchEngineWithUnspecifiedJITSnapshots) { TEST_F(EmbedderTest, InvalidFlutterWindowMetricsEvent) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); auto engine = builder.LaunchEngine(); ASSERT_TRUE(engine.is_valid()); @@ -2724,7 +2724,7 @@ static void expectSoftwareRenderingOutputMatches( fml::AutoResetWaitableEvent latch; bool matches = false; - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetCompositor(); builder.SetDartEntrypoint(std::move(entrypoint)); builder.SetRenderTargetType( @@ -2943,7 +2943,7 @@ TEST_F(EmbedderTest, KeyDataIsCorrectlySerialized) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("key_data_echo"); builder.SetPlatformMessageCallback( [&](const FlutterPlatformMessage* message) { @@ -3065,7 +3065,7 @@ TEST_F(EmbedderTest, KeyDataAreBuffered) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("key_data_late_echo"); builder.SetPlatformMessageCallback( [&](const FlutterPlatformMessage* message) { @@ -3166,7 +3166,7 @@ TEST_F(EmbedderTest, KeyDataResponseIsCorrectlyInvoked) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("key_data_echo"); context.AddNativeCallback( "SignalNativeTest", @@ -3241,7 +3241,7 @@ TEST_F(EmbedderTest, BackToBackKeyEventResponsesCorrectlyInvoked) { GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("key_data_echo"); context.AddNativeCallback( "SignalNativeTest", @@ -3340,7 +3340,7 @@ TEST_F(EmbedderTest, VsyncCallbackPostedIntoFuture) { })); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetupVsyncCallback(); builder.SetDartEntrypoint("empty_scene"); engine = builder.LaunchEngine(); @@ -3371,7 +3371,7 @@ TEST_F(EmbedderTest, VsyncCallbackPostedIntoFuture) { TEST_F(EmbedderTest, CanScheduleFrame) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("can_schedule_frame"); fml::AutoResetWaitableEvent latch; context.AddNativeCallback( @@ -3399,7 +3399,7 @@ TEST_F(EmbedderTest, CanScheduleFrame) { TEST_F(EmbedderTest, CanSetNextFrameCallback) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("draw_solid_red"); auto engine = builder.LaunchEngine(); @@ -3486,7 +3486,7 @@ TEST_F(EmbedderTest, EmbedderThreadHostUseCustomThreadConfig) { TEST_F(EmbedderTest, CanSendPointer) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("pointer_data_packet"); fml::AutoResetWaitableEvent ready_latch, count_latch, message_latch; @@ -3537,7 +3537,7 @@ TEST_F(EmbedderTest, CanSendPointer) { TEST_F(EmbedderTest, CanSendPointerEventWithViewId) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("pointer_data_packet_view_id"); fml::AutoResetWaitableEvent ready_latch, add_view_latch, message_latch; @@ -3599,7 +3599,7 @@ TEST_F(EmbedderTest, CanSendPointerEventWithViewId) { TEST_F(EmbedderTest, WindowMetricsEventDefaultsToImplicitView) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("window_metrics_event_view_id"); fml::AutoResetWaitableEvent ready_latch, message_latch; @@ -3640,7 +3640,7 @@ TEST_F(EmbedderTest, WindowMetricsEventDefaultsToImplicitView) { TEST_F(EmbedderTest, IgnoresWindowMetricsEventForUnknownView) { auto& context = GetEmbedderContext(EmbedderTestContextType::kSoftwareContext); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("window_metrics_event_view_id"); fml::AutoResetWaitableEvent ready_latch, message_latch; @@ -3710,7 +3710,7 @@ TEST_F(EmbedderTest, RegisterChannelListener) { }); EmbedderConfigBuilder builder(context); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetDartEntrypoint("channel_listener_response"); auto engine = builder.LaunchEngine(); @@ -3769,7 +3769,7 @@ TEST_F(EmbedderTest, PlatformThreadIsolatesWithCustomPlatformTaskRunner) { EmbedderConfigBuilder builder(context); const auto task_runner_description = test_task_runner.GetFlutterTaskRunnerDescription(); - builder.SetSoftwareRendererConfig(); + builder.SetSurface(SkISize::Make(1, 1)); builder.SetPlatformTaskRunner(&task_runner_description); builder.SetDartEntrypoint("invokePlatformThreadIsolate"); builder.AddCommandLineArgument("--enable-platform-isolates"); diff --git a/shell/platform/embedder/tests/embedder_vk_unittests.cc b/shell/platform/embedder/tests/embedder_vk_unittests.cc index d6209d2ed96d0..53ab019948e4b 100644 --- a/shell/platform/embedder/tests/embedder_vk_unittests.cc +++ b/shell/platform/embedder/tests/embedder_vk_unittests.cc @@ -96,12 +96,12 @@ static_assert( } // namespace TEST_F(EmbedderTest, CanSwapOutVulkanCalls) { - auto& context = GetEmbedderContext(EmbedderTestContextType::kVulkanContext); fml::AutoResetWaitableEvent latch; + + auto& context = static_cast( + GetEmbedderContext(EmbedderTestContextType::kVulkanContext)); context.AddIsolateCreateCallback([&latch]() { latch.Signal(); }); - EmbedderConfigBuilder builder(context); - builder.SetVulkanRendererConfig( - SkISize::Make(1024, 1024), + context.SetVulkanInstanceProcAddressCallback( [](void* user_data, FlutterVulkanInstanceHandle instance, const char* name) -> void* { if (StrcmpFixed(name, "vkGetInstanceProcAddr") == 0) { @@ -114,6 +114,9 @@ TEST_F(EmbedderTest, CanSwapOutVulkanCalls) { return EmbedderTestContextVulkan::InstanceProcAddr(user_data, instance, name); }); + + EmbedderConfigBuilder builder(context); + builder.SetSurface(SkISize::Make(1024, 1024)); auto engine = builder.LaunchEngine(); ASSERT_TRUE(engine.is_valid()); // Wait for the root isolate to launch.