diff --git a/engine/src/flutter/ci/builders/mac_unopt.json b/engine/src/flutter/ci/builders/mac_unopt.json index 746e049acb..9a6c3524e6 100644 --- a/engine/src/flutter/ci/builders/mac_unopt.json +++ b/engine/src/flutter/ci/builders/mac_unopt.json @@ -473,87 +473,6 @@ "script": "flutter/testing/ios_scenario_app/run_ios_tests.sh" } ] - }, - { - "cas_archive": false, - "drone_dimensions": - [ - "os=Mac-13|Mac-14", - "device_type=none" - ], - "gclient_variables": - { - "download_android_deps": false, - "use_rbe": true - }, - "gn": - [ - "--ios", - "--runtime-mode", - "release", - "--no-stripped", - "--no-lto", - "--xcode-symlinks", - "--rbe", - "--no-goma", - "--slimpeller" - ], - "name": "ci/macos/ios_release_slimpeller", - "description": "Builds a Slimpeller release mode engine that targets iOS from a macOS host.", - "ninja": - { - "config": "ios_release_slimpeller", - "targets": - [] - }, - "properties": - { - "$flutter/osx_sdk": - { - "sdk_version": "15a240d" - } - } - }, - { - "cas_archive": false, - "drone_dimensions": - [ - "os=Mac-13|Mac-14", - "device_type=none" - ], - "gclient_variables": - { - "download_android_deps": false, - "use_rbe": true - }, - "gn": - [ - "--ios", - "--runtime-mode", - "debug", - "--unoptimized", - "--no-stripped", - "--no-lto", - "--xcode-symlinks", - "--rbe", - "--no-goma", - "--slimpeller" - ], - "name": "ci/macos/ios_debug_unopt_slimpeller", - "description": "Builds an unoptimized debug mode engine with Slimpeller that targets iOS from a macOS host.", - "ninja": - { - "config": "ios_debug_unopt_slimpeller", - "targets": - [] - }, - "properties": - { - "$flutter/osx_sdk": - { - "sdk_version": "15a240d" - } - } } ] } diff --git a/engine/src/flutter/lib/ui/compositing/scene.cc b/engine/src/flutter/lib/ui/compositing/scene.cc index 2208023274..8bf7c2a869 100644 --- a/engine/src/flutter/lib/ui/compositing/scene.cc +++ b/engine/src/flutter/lib/ui/compositing/scene.cc @@ -76,7 +76,7 @@ static sk_sp CreateDeferredImage( std::unique_ptr layer_tree, fml::TaskRunnerAffineWeakPtr snapshot_delegate, fml::RefPtr raster_task_runner, - fml::RefPtr unref_queue) { + const fml::RefPtr& unref_queue) { #if IMPELLER_SUPPORTS_RENDERING if (impeller) { return DlDeferredImageGPUImpeller::Make(std::move(layer_tree), @@ -95,7 +95,7 @@ static sk_sp CreateDeferredImage( kRGBA_8888_SkColorType, kPremul_SkAlphaType); return DlDeferredImageGPUSkia::MakeFromLayerTree( image_info, std::move(layer_tree), std::move(snapshot_delegate), - raster_task_runner, std::move(unref_queue)); + raster_task_runner, unref_queue); #endif // SLIMPELLER } @@ -113,8 +113,7 @@ void Scene::RasterizeToImage(uint32_t width, auto image = CanvasImage::Create(); auto dl_image = CreateDeferredImage( dart_state->IsImpellerEnabled(), BuildLayerTree(width, height), - std::move(snapshot_delegate), std::move(raster_task_runner), - std::move(unref_queue)); + std::move(snapshot_delegate), std::move(raster_task_runner), unref_queue); image->set_image(dl_image); image->AssociateWithDartWrapper(raw_image_handle); } diff --git a/engine/src/flutter/lib/ui/painting/image_decoder.cc b/engine/src/flutter/lib/ui/painting/image_decoder.cc index 82cd37360f..db2c8dd461 100644 --- a/engine/src/flutter/lib/ui/painting/image_decoder.cc +++ b/engine/src/flutter/lib/ui/painting/image_decoder.cc @@ -16,14 +16,14 @@ std::unique_ptr ImageDecoder::Make( const Settings& settings, const TaskRunners& runners, std::shared_ptr concurrent_task_runner, - fml::WeakPtr io_manager, + const fml::WeakPtr& io_manager, const std::shared_ptr& gpu_disabled_switch) { #if IMPELLER_SUPPORTS_RENDERING if (settings.enable_impeller) { return std::make_unique( runners, // std::move(concurrent_task_runner), // - std::move(io_manager), // + io_manager, // settings.enable_wide_gamut, // gpu_disabled_switch); } @@ -32,7 +32,7 @@ std::unique_ptr ImageDecoder::Make( return std::make_unique( runners, // std::move(concurrent_task_runner), // - std::move(io_manager) // + io_manager // ); #else // !SLIMPELLER FML_LOG(FATAL) << "Could not setup an image decoder."; diff --git a/engine/src/flutter/lib/ui/painting/image_decoder.h b/engine/src/flutter/lib/ui/painting/image_decoder.h index ebb104efd4..ae87dbf092 100644 --- a/engine/src/flutter/lib/ui/painting/image_decoder.h +++ b/engine/src/flutter/lib/ui/painting/image_decoder.h @@ -27,7 +27,7 @@ class ImageDecoder { const Settings& settings, const TaskRunners& runners, std::shared_ptr concurrent_task_runner, - fml::WeakPtr io_manager, + const fml::WeakPtr& io_manager, const std::shared_ptr& gpu_disabled_switch); virtual ~ImageDecoder(); diff --git a/engine/src/flutter/lib/ui/painting/multi_frame_codec.cc b/engine/src/flutter/lib/ui/painting/multi_frame_codec.cc index f05ff11123..73b5550c9e 100644 --- a/engine/src/flutter/lib/ui/painting/multi_frame_codec.cc +++ b/engine/src/flutter/lib/ui/painting/multi_frame_codec.cc @@ -55,10 +55,10 @@ static void InvokeNextFrameCallback( std::pair, std::string> MultiFrameCodec::State::GetNextFrameImage( - fml::WeakPtr resourceContext, + const fml::WeakPtr& resourceContext, const std::shared_ptr& gpu_disable_sync_switch, const std::shared_ptr& impeller_context, - fml::RefPtr unref_queue) { + const fml::RefPtr& unref_queue) { SkBitmap bitmap = SkBitmap(); SkImageInfo info = generator_->GetInfo().makeColorType(kN32_SkColorType); if (info.alphaType() == kUnpremul_SkAlphaType) { @@ -175,7 +175,7 @@ MultiFrameCodec::State::GetNextFrameImage( } })); - return std::make_pair(DlImageGPU::Make({skImage, std::move(unref_queue)}), + return std::make_pair(DlImageGPU::Make({skImage, unref_queue}), std::string()); #else // !SLIMPELLER return std::make_pair(nullptr, "Unsupported backend."); @@ -185,8 +185,8 @@ MultiFrameCodec::State::GetNextFrameImage( void MultiFrameCodec::State::GetNextFrameAndInvokeCallback( std::unique_ptr callback, const fml::RefPtr& ui_task_runner, - fml::WeakPtr resourceContext, - fml::RefPtr unref_queue, + const fml::WeakPtr& resourceContext, + const fml::RefPtr& unref_queue, const std::shared_ptr& gpu_disable_sync_switch, size_t trace_id, const std::shared_ptr& impeller_context) { @@ -205,9 +205,8 @@ void MultiFrameCodec::State::GetNextFrameAndInvokeCallback( int duration = 0; sk_sp dlImage; std::string decode_error; - std::tie(dlImage, decode_error) = - GetNextFrameImage(std::move(resourceContext), gpu_disable_sync_switch, - impeller_context, std::move(unref_queue)); + std::tie(dlImage, decode_error) = GetNextFrameImage( + resourceContext, gpu_disable_sync_switch, impeller_context, unref_queue); if (dlImage) { image = CanvasImage::Create(); image->set_image(dlImage); diff --git a/engine/src/flutter/lib/ui/painting/multi_frame_codec.h b/engine/src/flutter/lib/ui/painting/multi_frame_codec.h index 4a49b84570..413574a7c5 100644 --- a/engine/src/flutter/lib/ui/painting/multi_frame_codec.h +++ b/engine/src/flutter/lib/ui/painting/multi_frame_codec.h @@ -60,16 +60,16 @@ class MultiFrameCodec : public Codec { std::optional restoreBGColorRect_; std::pair, std::string> GetNextFrameImage( - fml::WeakPtr resourceContext, + const fml::WeakPtr& resourceContext, const std::shared_ptr& gpu_disable_sync_switch, const std::shared_ptr& impeller_context, - fml::RefPtr unref_queue); + const fml::RefPtr& unref_queue); void GetNextFrameAndInvokeCallback( std::unique_ptr callback, const fml::RefPtr& ui_task_runner, - fml::WeakPtr resourceContext, - fml::RefPtr unref_queue, + const fml::WeakPtr& resourceContext, + const fml::RefPtr& unref_queue, const std::shared_ptr& gpu_disable_sync_switch, size_t trace_id, const std::shared_ptr& impeller_context); diff --git a/engine/src/flutter/lib/ui/painting/picture.cc b/engine/src/flutter/lib/ui/painting/picture.cc index 6f2a0cd5b6..3eece92e68 100644 --- a/engine/src/flutter/lib/ui/painting/picture.cc +++ b/engine/src/flutter/lib/ui/painting/picture.cc @@ -62,7 +62,7 @@ static sk_sp CreateDeferredImage( uint32_t height, fml::TaskRunnerAffineWeakPtr snapshot_delegate, fml::RefPtr raster_task_runner, - fml::RefPtr unref_queue) { + const fml::RefPtr& unref_queue) { #if IMPELLER_SUPPORTS_RENDERING if (impeller) { return DlDeferredImageGPUImpeller::Make( @@ -77,9 +77,9 @@ static sk_sp CreateDeferredImage( #else // SLIMPELLER const SkImageInfo image_info = SkImageInfo::Make( width, height, kRGBA_8888_SkColorType, kPremul_SkAlphaType); - return DlDeferredImageGPUSkia::Make( - image_info, std::move(display_list), std::move(snapshot_delegate), - raster_task_runner, std::move(unref_queue)); + return DlDeferredImageGPUSkia::Make(image_info, std::move(display_list), + std::move(snapshot_delegate), + raster_task_runner, unref_queue); #endif // !SLIMPELLER } @@ -99,8 +99,7 @@ void Picture::RasterizeToImageSync(sk_sp display_list, auto image = CanvasImage::Create(); auto dl_image = CreateDeferredImage( dart_state->IsImpellerEnabled(), std::move(display_list), width, height, - std::move(snapshot_delegate), std::move(raster_task_runner), - std::move(unref_queue)); + std::move(snapshot_delegate), std::move(raster_task_runner), unref_queue); image->set_image(dl_image); image->AssociateWithDartWrapper(raw_image_handle); } diff --git a/engine/src/flutter/lib/ui/snapshot_delegate.h b/engine/src/flutter/lib/ui/snapshot_delegate.h index 5e2b6c3bee..1a89b5013b 100644 --- a/engine/src/flutter/lib/ui/snapshot_delegate.h +++ b/engine/src/flutter/lib/ui/snapshot_delegate.h @@ -24,7 +24,7 @@ class SnapshotDelegate { /// @brief A data structure used by the Skia implementation of deferred /// GPU based images. struct GpuImageResult { - GpuImageResult( + explicit GpuImageResult( #if !SLIMPELLER const GrBackendTexture& p_texture, #endif // !SLIMPELLER diff --git a/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm b/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm index 3f31c181f3..44459eb55b 100644 --- a/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm +++ b/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm @@ -48,7 +48,7 @@ flutter::Settings FLTDefaultSettingsForBundle(NSBundle* bundle, NSProcessInfo* p auto command_line = flutter::CommandLineFromNSProcessInfo(processInfoOrNil); // Precedence: - // 1. Settings from the specified NSBundle (except for enable-impeller). + // 1. Settings from the specified NSBundle. // 2. Settings passed explicitly via command-line arguments. // 3. Settings from the NSBundle with the default bundle ID. // 4. Settings from the main NSBundle and default values. @@ -403,8 +403,4 @@ flutter::Settings FLTDefaultSettingsForBundle(NSBundle* bundle, NSProcessInfo* p return _settings.enable_wide_gamut; } -- (BOOL)isImpellerEnabled { - return _settings.enable_impeller; -} - @end diff --git a/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterDartProjectTest.mm b/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterDartProjectTest.mm index fbb2cbe3c2..414761f9ad 100644 --- a/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterDartProjectTest.mm +++ b/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterDartProjectTest.mm @@ -225,34 +225,6 @@ FLUTTER_ASSERT_ARC } } -- (void)testRequestsWarningWhenImpellerOptOut { - auto settings = FLTDefaultSettingsForBundle(); - XCTAssertEqual(settings.warn_on_impeller_opt_out, YES); -} - -- (void)testEnableImpellerSettingIsCorrectlyParsed { - id mockMainBundle = OCMPartialMock([NSBundle mainBundle]); - OCMStub([mockMainBundle objectForInfoDictionaryKey:@"FLTEnableImpeller"]).andReturn(@"YES"); - - auto settings = FLTDefaultSettingsForBundle(); - // Check settings.enable_impeller value is same as the value defined in Info.plist. - XCTAssertEqual(settings.enable_impeller, YES); - [mockMainBundle stopMocking]; -} - -- (void)testEnableImpellerSettingIsCorrectlyOverriddenByCommandLine { - id mockMainBundle = OCMPartialMock([NSBundle mainBundle]); - OCMStub([mockMainBundle objectForInfoDictionaryKey:@"FLTEnableImpeller"]).andReturn(@"NO"); - id mockProcessInfo = OCMPartialMock([NSProcessInfo processInfo]); - NSArray* arguments = @[ @"process_name", @"--enable-impeller" ]; - OCMStub([mockProcessInfo arguments]).andReturn(arguments); - - auto settings = FLTDefaultSettingsForBundle(nil, mockProcessInfo); - // Check settings.enable_impeller value is same as the value on command line. - XCTAssertEqual(settings.enable_impeller, YES); - [mockMainBundle stopMocking]; -} - - (void)testEnableDartAssertsCommandLineArgument { id mockMainBundle = OCMPartialMock([NSBundle mainBundle]); OCMStub([mockMainBundle objectForInfoDictionaryKey:@"FLTEnableDartAsserts"]).andReturn(@"YES"); diff --git a/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterDartProject_Internal.h b/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterDartProject_Internal.h index f90d44e900..7d3a3d8e5f 100644 --- a/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterDartProject_Internal.h +++ b/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterDartProject_Internal.h @@ -19,7 +19,6 @@ flutter::Settings FLTDefaultSettingsForBundle(NSBundle* _Nullable bundle = nil, @interface FlutterDartProject () @property(nonatomic, readonly) BOOL isWideGamutEnabled; -@property(nonatomic, readonly) BOOL isImpellerEnabled; /** * This is currently used for *only for tests* to override settings. diff --git a/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm b/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm index 9b470a8b26..df4b48f8df 100644 --- a/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm +++ b/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterEngine.mm @@ -264,7 +264,7 @@ static constexpr int kNumProfilerSamplesPerSec = 5; } - (void)recreatePlatformViewsController { - _renderingApi = flutter::GetRenderingAPIForProcess(FlutterView.forceSoftwareRendering); + _renderingApi = flutter::GetRenderingAPIForProcess(/*force_software=*/false); _platformViewsController = [[FlutterPlatformViewsController alloc] init]; } @@ -743,7 +743,7 @@ static flutter::ThreadHost MakeThreadHost(NSString* thread_label, fml::MessageLoop::EnsureInitializedForCurrentThread(); uint32_t threadHostType = flutter::ThreadHost::Type::kRaster | flutter::ThreadHost::Type::kIo; - if (!settings.enable_impeller || !settings.merged_platform_ui_thread) { + if (!settings.merged_platform_ui_thread) { threadHostType |= flutter::ThreadHost::Type::kUi; } @@ -802,8 +802,6 @@ static void SetEntryPoint(flutter::Settings* settings, NSString* entrypoint, NSS self.initialRoute = [NSString stringWithUTF8String:settings.route.c_str()]; } - FlutterView.forceSoftwareRendering = settings.enable_software_rendering; - auto platformData = [self.dartProject defaultPlatformData]; SetEntryPoint(&settings, entrypoint, libraryURI); @@ -1497,10 +1495,6 @@ static void SetEntryPoint(flutter::Settings* settings, NSString* entrypoint, NSS return self.dartProject; } -- (BOOL)isUsingImpeller { - return self.project.isImpellerEnabled; -} - @end @implementation FlutterEngineRegistrar { diff --git a/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformViewsController.h b/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformViewsController.h index 165808cc69..ee5623ef89 100644 --- a/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformViewsController.h +++ b/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformViewsController.h @@ -72,16 +72,14 @@ NS_ASSUME_NONNULL_BEGIN /// /// Called from the raster thread. - (flutter::PostPrerollResult)postPrerollActionWithThreadMerger: - (const fml::RefPtr&)rasterThreadMerger - impellerEnabled:(BOOL)impellerEnabled; + (const fml::RefPtr&)rasterThreadMerger; /// @brief Mark the end of a compositor frame. /// /// May determine changes are required to the thread merging state. /// Called from the raster thread. - (void)endFrameWithResubmit:(BOOL)shouldResubmitFrame - threadMerger:(const fml::RefPtr&)rasterThreadMerger - impellerEnabled:(BOOL)impellerEnabled; + threadMerger:(const fml::RefPtr&)rasterThreadMerger; /// @brief Returns the Canvas for the overlay slice for the given platform view. /// diff --git a/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformViewsController.mm b/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformViewsController.mm index 647f68d47a..79625935bc 100644 --- a/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformViewsController.mm +++ b/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformViewsController.mm @@ -448,14 +448,12 @@ static bool ClipRRectContainsPlatformViewBoundingRect(const SkRRect& clip_rrect, } - (flutter::PostPrerollResult)postPrerollActionWithThreadMerger: - (const fml::RefPtr&)rasterThreadMerger - impellerEnabled:(BOOL)impellerEnabled { + (const fml::RefPtr&)rasterThreadMerger { return flutter::PostPrerollResult::kSuccess; } - (void)endFrameWithResubmit:(BOOL)shouldResubmitFrame - threadMerger:(const fml::RefPtr&)rasterThreadMerger - impellerEnabled:(BOOL)impellerEnabled { + threadMerger:(const fml::RefPtr&)rasterThreadMerger { } - (void)pushFilterToVisitedPlatformViews:(const std::shared_ptr&)filter diff --git a/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformViewsTest.mm b/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformViewsTest.mm index 78f2d4ce51..7247d15764 100644 --- a/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformViewsTest.mm +++ b/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformViewsTest.mm @@ -324,9 +324,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -388,9 +386,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -485,9 +481,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -571,9 +565,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -657,9 +649,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -744,9 +734,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -876,9 +864,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -1035,9 +1021,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -1339,9 +1323,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -1675,9 +1657,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -1745,9 +1725,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -1858,9 +1836,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -1943,9 +1919,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -2024,9 +1998,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -2104,9 +2076,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -2189,9 +2159,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -2294,9 +2262,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -2406,9 +2372,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -2535,9 +2499,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -2648,9 +2610,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -2778,9 +2738,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -2849,9 +2807,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -2977,9 +2933,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -3094,9 +3048,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -3162,9 +3114,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -3271,9 +3221,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -3336,9 +3284,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -3401,9 +3347,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -3462,9 +3406,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -3522,9 +3464,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -3607,9 +3547,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -3665,9 +3603,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -3739,9 +3675,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -3793,15 +3727,12 @@ fml::RefPtr GetDefaultTaskRunner() { [flutterPlatformViewsController prerollCompositeEmbeddedView:1 withParams:std::move(embeddedViewParams2)]; - // SKSurface is required if the root FlutterView is present. - const SkImageInfo image_info = SkImageInfo::MakeN32Premul(1000, 1000); - sk_sp mock_sk_surface = SkSurfaces::Raster(image_info); flutter::SurfaceFrame::FramebufferInfo framebuffer_info; auto mock_surface = std::make_unique( - std::move(mock_sk_surface), framebuffer_info, + nullptr, framebuffer_info, [](const flutter::SurfaceFrame& surface_frame, flutter::DlCanvas* canvas) { return true; }, [](const flutter::SurfaceFrame& surface_frame) { return true; }, - /*frame_size=*/SkISize::Make(800, 600)); + /*frame_size=*/SkISize::Make(800, 600), nullptr, /*display_list_fallback=*/true); XCTAssertTrue([flutterPlatformViewsController submitFrame:std::move(mock_surface) withIosContext:std::make_shared()]); @@ -3826,12 +3757,11 @@ fml::RefPtr GetDefaultTaskRunner() { [flutterPlatformViewsController prerollCompositeEmbeddedView:0 withParams:std::move(embeddedViewParams1)]; - mock_sk_surface = SkSurfaces::Raster(image_info); mock_surface = std::make_unique( - std::move(mock_sk_surface), framebuffer_info, + nullptr, framebuffer_info, [](const flutter::SurfaceFrame& surface_frame, flutter::DlCanvas* canvas) { return true; }, [](const flutter::SurfaceFrame& surface_frame) { return true; }, - /*frame_size=*/SkISize::Make(800, 600)); + /*frame_size=*/SkISize::Make(800, 600), nullptr, /*display_list_fallback=*/true); XCTAssertTrue([flutterPlatformViewsController submitFrame:std::move(mock_surface) withIosContext:std::make_shared()]); @@ -3855,9 +3785,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -3909,15 +3837,12 @@ fml::RefPtr GetDefaultTaskRunner() { [flutterPlatformViewsController prerollCompositeEmbeddedView:1 withParams:std::move(embeddedViewParams2)]; - // SKSurface is required if the root FlutterView is present. - const SkImageInfo image_info = SkImageInfo::MakeN32Premul(1000, 1000); - sk_sp mock_sk_surface = SkSurfaces::Raster(image_info); flutter::SurfaceFrame::FramebufferInfo framebuffer_info; auto mock_surface = std::make_unique( - std::move(mock_sk_surface), framebuffer_info, + nullptr, framebuffer_info, [](const flutter::SurfaceFrame& surface_frame, flutter::DlCanvas* canvas) { return true; }, [](const flutter::SurfaceFrame& surface_frame) { return true; }, - /*frame_size=*/SkISize::Make(800, 600)); + /*frame_size=*/SkISize::Make(800, 600), nullptr, /*display_list_fallback=*/true); XCTAssertTrue([flutterPlatformViewsController submitFrame:std::move(mock_surface) withIosContext:std::make_shared()]); @@ -3942,12 +3867,11 @@ fml::RefPtr GetDefaultTaskRunner() { [flutterPlatformViewsController prerollCompositeEmbeddedView:1 withParams:std::move(embeddedViewParams2)]; - mock_sk_surface = SkSurfaces::Raster(image_info); mock_surface = std::make_unique( - std::move(mock_sk_surface), framebuffer_info, + nullptr, framebuffer_info, [](const flutter::SurfaceFrame& surface_frame, flutter::DlCanvas* canvas) { return true; }, [](const flutter::SurfaceFrame& surface_frame) { return true; }, - /*frame_size=*/SkISize::Make(800, 600)); + /*frame_size=*/SkISize::Make(800, 600), nullptr, /*display_list_fallback=*/true); XCTAssertTrue([flutterPlatformViewsController submitFrame:std::move(mock_surface) withIosContext:std::make_shared()]); @@ -4056,9 +3980,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -4162,9 +4084,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -4255,9 +4175,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -4357,9 +4275,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -4423,14 +4339,13 @@ fml::RefPtr GetDefaultTaskRunner() { result:disposeResult]; [self waitForExpectationsWithTimeout:30 handler:nil]; - const SkImageInfo image_info = SkImageInfo::MakeN32Premul(1000, 1000); - sk_sp mock_sk_surface = SkSurfaces::Raster(image_info); flutter::SurfaceFrame::FramebufferInfo framebuffer_info; auto mock_surface = std::make_unique( - std::move(mock_sk_surface), framebuffer_info, + nullptr, framebuffer_info, [](const flutter::SurfaceFrame& surface_frame, flutter::DlCanvas* canvas) { return true; }, [](const flutter::SurfaceFrame& surface_frame) { return true; }, - /*frame_size=*/SkISize::Make(800, 600)); + /*frame_size=*/SkISize::Make(800, 600), nullptr, + /*display_list_fallback=*/true); XCTAssertTrue([flutterPlatformViewsController submitFrame:std::move(mock_surface) withIosContext:std::make_shared()]); @@ -4452,14 +4367,12 @@ fml::RefPtr GetDefaultTaskRunner() { [flutterPlatformViewsController prerollCompositeEmbeddedView:1 withParams:std::move(embeddedViewParams1)]; - const SkImageInfo image_info = SkImageInfo::MakeN32Premul(1000, 1000); - sk_sp mock_sk_surface = SkSurfaces::Raster(image_info); flutter::SurfaceFrame::FramebufferInfo framebuffer_info; auto mock_surface = std::make_unique( - std::move(mock_sk_surface), framebuffer_info, + nullptr, framebuffer_info, [](const flutter::SurfaceFrame& surface_frame, flutter::DlCanvas* canvas) { return true; }, [](const flutter::SurfaceFrame& surface_frame) { return true; }, - /*frame_size=*/SkISize::Make(800, 600)); + /*frame_size=*/SkISize::Make(800, 600), nullptr, /*display_list_fallback=*/true); XCTAssertTrue([flutterPlatformViewsController submitFrame:std::move(mock_surface) withIosContext:std::make_shared()]); @@ -4483,9 +4396,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -4529,15 +4440,12 @@ fml::RefPtr GetDefaultTaskRunner() { [flutterPlatformViewsController prerollCompositeEmbeddedView:2 withParams:std::move(embeddedViewParams)]; - // SKSurface is required if the root FlutterView is present. - const SkImageInfo image_info = SkImageInfo::MakeN32Premul(1000, 1000); - sk_sp mock_sk_surface = SkSurfaces::Raster(image_info); flutter::SurfaceFrame::FramebufferInfo framebuffer_info; auto mock_surface = std::make_unique( - std::move(mock_sk_surface), framebuffer_info, + nullptr, framebuffer_info, [](const flutter::SurfaceFrame& surface_frame, flutter::DlCanvas* canvas) { return true; }, [](const flutter::SurfaceFrame& surface_frame) { return true; }, - /*frame_size=*/SkISize::Make(800, 600)); + /*frame_size=*/SkISize::Make(800, 600), nullptr, /*display_list_fallback=*/true); [flutterPlatformViewsController submitFrame:std::move(mock_surface) withIosContext:std::make_shared()]; @@ -4562,9 +4470,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -4609,15 +4515,12 @@ fml::RefPtr GetDefaultTaskRunner() { [flutterPlatformViewsController prerollCompositeEmbeddedView:2 withParams:std::move(embeddedViewParams)]; - // SKSurface is required if the root FlutterView is present. - const SkImageInfo image_info = SkImageInfo::MakeN32Premul(1000, 1000); - sk_sp mock_sk_surface = SkSurfaces::Raster(image_info); flutter::SurfaceFrame::FramebufferInfo framebuffer_info; auto mock_surface = std::make_unique( - std::move(mock_sk_surface), framebuffer_info, + nullptr, framebuffer_info, [](const flutter::SurfaceFrame& surface_frame, flutter::DlCanvas* canvas) { return true; }, [](const flutter::SurfaceFrame& surface_frame) { return true; }, - /*frame_size=*/SkISize::Make(800, 600)); + /*frame_size=*/SkISize::Make(800, 600), nullptr, /*display_list_fallback=*/true); [flutterPlatformViewsController submitFrame:std::move(mock_surface) withIosContext:std::make_shared()]; @@ -4669,9 +4572,7 @@ fml::RefPtr GetDefaultTaskRunner() { flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner(); auto platform_view = std::make_unique( /*delegate=*/mock_delegate, - /*rendering_api=*/mock_delegate.settings_.enable_impeller - ? flutter::IOSRenderingAPI::kMetal - : flutter::IOSRenderingAPI::kSoftware, + /*rendering_api=*/flutter::IOSRenderingAPI::kMetal, /*platform_views_controller=*/flutterPlatformViewsController, /*task_runners=*/runners, /*worker_task_runner=*/nil, @@ -4721,19 +4622,17 @@ fml::RefPtr GetDefaultTaskRunner() { [flutterPlatformViewsController prerollCompositeEmbeddedView:1 withParams:std::move(embeddedViewParams2)]; - // SKSurface is required if the root FlutterView is present. - const SkImageInfo image_info = SkImageInfo::MakeN32Premul(1000, 1000); - sk_sp mock_sk_surface = SkSurfaces::Raster(image_info); flutter::SurfaceFrame::FramebufferInfo framebuffer_info; std::optional submit_info; auto mock_surface = std::make_unique( - std::move(mock_sk_surface), framebuffer_info, + nullptr, framebuffer_info, [](const flutter::SurfaceFrame& surface_frame, flutter::DlCanvas* canvas) { return true; }, [&](const flutter::SurfaceFrame& surface_frame) { submit_info = surface_frame.submit_info(); return true; }, - /*frame_size=*/SkISize::Make(800, 600)); + /*frame_size=*/SkISize::Make(800, 600), nullptr, + /*display_list_fallback=*/true); mock_surface->set_submit_info({ .frame_damage = SkIRect::MakeWH(800, 600), .buffer_damage = SkIRect::MakeWH(400, 600), diff --git a/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterView.h b/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterView.h index 80619e44b7..7f3a32ed63 100644 --- a/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterView.h +++ b/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterView.h @@ -13,7 +13,6 @@ @protocol FlutterViewEngineDelegate -@property(nonatomic, readonly) BOOL isUsingImpeller; @property(nonatomic, readonly) FlutterPlatformViewsController* platformViewsController; - (flutter::Rasterizer::Screenshot)takeScreenshot:(flutter::Rasterizer::ScreenshotType)type @@ -44,8 +43,6 @@ - (UIScreen*)screen; - (MTLPixelFormat)pixelFormat; -// Set by FlutterEngine or FlutterViewController to override software rendering. -@property(class, nonatomic) BOOL forceSoftwareRendering; @end #endif // FLUTTER_SHELL_PLATFORM_DARWIN_IOS_FRAMEWORK_SOURCE_FLUTTERVIEW_H_ diff --git a/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterView.mm b/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterView.mm index cab7a67e15..dd37e8a553 100644 --- a/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterView.mm +++ b/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterView.mm @@ -51,10 +51,6 @@ FLUTTER_ASSERT_ARC return MTLPixelFormatBGRA8Unorm; } - (BOOL)isWideGamutSupported { - if (!self.delegate.isUsingImpeller) { - return NO; - } - FML_DCHECK(self.screen); // This predicates the decision on the capabilities of the iOS device's @@ -105,12 +101,11 @@ static void PrintWideGamutWarningOnce() { layer.contentsScale = screenScale; layer.rasterizationScale = screenScale; layer.framebufferOnly = flutter::Settings::kSurfaceDataAccessible ? NO : YES; - BOOL isWideGamutSupported = self.isWideGamutSupported; - if (_isWideGamutEnabled && isWideGamutSupported) { + if (_isWideGamutEnabled && self.isWideGamutSupported) { fml::CFRef srgb(CGColorSpaceCreateWithName(kCGColorSpaceExtendedSRGB)); layer.colorspace = srgb; layer.pixelFormat = MTLPixelFormatBGRA10_XR; - } else if (_isWideGamutEnabled && !isWideGamutSupported) { + } else if (_isWideGamutEnabled && !self.isWideGamutSupported) { PrintWideGamutWarningOnce(); } } @@ -118,19 +113,9 @@ static void PrintWideGamutWarningOnce() { [super layoutSubviews]; } -static BOOL _forceSoftwareRendering; - -+ (BOOL)forceSoftwareRendering { - return _forceSoftwareRendering; -} - -+ (void)setForceSoftwareRendering:(BOOL)forceSoftwareRendering { - _forceSoftwareRendering = forceSoftwareRendering; -} - + (Class)layerClass { return flutter::GetCoreAnimationLayerClassForRenderingAPI( - flutter::GetRenderingAPIForProcess(FlutterView.forceSoftwareRendering)); + flutter::GetRenderingAPIForProcess(/*force_software=*/false)); } - (void)drawLayer:(CALayer*)layer inContext:(CGContextRef)context { diff --git a/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm b/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm index ad6eedc910..36e1a4897c 100644 --- a/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm +++ b/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterViewController.mm @@ -256,7 +256,6 @@ typedef struct MouseState { if (!project) { project = [[FlutterDartProject alloc] init]; } - FlutterView.forceSoftwareRendering = project.settings.enable_software_rendering; FlutterEngine* engine = [[FlutterEngine alloc] initWithName:@"io.flutter" project:project allowHeadlessExecution:self.engineAllowHeadlessExecution diff --git a/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterViewTest.mm b/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterViewTest.mm index 357c65e4c8..3b686dea82 100644 --- a/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterViewTest.mm +++ b/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterViewTest.mm @@ -10,7 +10,6 @@ FLUTTER_ASSERT_ARC @interface FakeDelegate : NSObject @property(nonatomic) BOOL callbackCalled; -@property(nonatomic, assign) BOOL isUsingImpeller; @end @implementation FakeDelegate @@ -52,16 +51,6 @@ FLUTTER_ASSERT_ARC XCTAssertNil(view.backgroundColor); } -- (void)testIgnoreWideColorWithoutImpeller { - FakeDelegate* delegate = [[FakeDelegate alloc] init]; - delegate.isUsingImpeller = NO; - FlutterView* view = [[FlutterView alloc] initWithDelegate:delegate opaque:NO enableWideGamut:YES]; - [view layoutSubviews]; - XCTAssertTrue([view.layer isKindOfClass:[CAMetalLayer class]]); - CAMetalLayer* layer = (CAMetalLayer*)view.layer; - XCTAssertEqual(layer.pixelFormat, MTLPixelFormatBGRA8Unorm); -} - - (void)testLayerScalesMatchScreenAfterLayoutSubviews { FakeDelegate* delegate = [[FakeDelegate alloc] init]; FlutterView* view = [[FlutterView alloc] initWithDelegate:delegate opaque:NO enableWideGamut:NO]; diff --git a/engine/src/flutter/shell/platform/darwin/ios/ios_context.h b/engine/src/flutter/shell/platform/darwin/ios/ios_context.h index ef9a1a878f..24a887a4d8 100644 --- a/engine/src/flutter/shell/platform/darwin/ios/ios_context.h +++ b/engine/src/flutter/shell/platform/darwin/ios/ios_context.h @@ -39,7 +39,7 @@ class IOSContext { public: //---------------------------------------------------------------------------- /// @brief Create an iOS context object capable of creating the on-screen - /// and off-screen GPU context for use by Skia. + /// and off-screen GPU context for use by Impeller. /// /// In case the engine does not support the specified client /// rendering API, this a `nullptr` may be returned. diff --git a/engine/src/flutter/shell/platform/darwin/ios/ios_context_metal_impeller.h b/engine/src/flutter/shell/platform/darwin/ios/ios_context_metal_impeller.h index a672d83130..debed104dd 100644 --- a/engine/src/flutter/shell/platform/darwin/ios/ios_context_metal_impeller.h +++ b/engine/src/flutter/shell/platform/darwin/ios/ios_context_metal_impeller.h @@ -7,7 +7,6 @@ #include "flutter/fml/macros.h" #include "flutter/shell/platform/darwin/graphics/FlutterDarwinContextMetalImpeller.h" -#include "flutter/shell/platform/darwin/graphics/FlutterDarwinContextMetalSkia.h" #include "flutter/shell/platform/darwin/ios/ios_context.h" #include "impeller/display_list/aiks_context.h" diff --git a/engine/src/flutter/shell/platform/darwin/ios/ios_external_view_embedder.mm b/engine/src/flutter/shell/platform/darwin/ios/ios_external_view_embedder.mm index fa274438ba..575071c6a5 100644 --- a/engine/src/flutter/shell/platform/darwin/ios/ios_external_view_embedder.mm +++ b/engine/src/flutter/shell/platform/darwin/ios/ios_external_view_embedder.mm @@ -59,10 +59,8 @@ PostPrerollResult IOSExternalViewEmbedder::PostPrerollAction( const fml::RefPtr& raster_thread_merger) { TRACE_EVENT0("flutter", "IOSExternalViewEmbedder::PostPrerollAction"); FML_CHECK(platform_views_controller_); - BOOL impeller_enabled = ios_context_->GetBackend() != IOSRenderingBackend::kSkia; PostPrerollResult result = - [platform_views_controller_ postPrerollActionWithThreadMerger:raster_thread_merger - impellerEnabled:impeller_enabled]; + [platform_views_controller_ postPrerollActionWithThreadMerger:raster_thread_merger]; return result; } @@ -94,10 +92,8 @@ void IOSExternalViewEmbedder::EndFrame( bool should_resubmit_frame, const fml::RefPtr& raster_thread_merger) { TRACE_EVENT0("flutter", "IOSExternalViewEmbedder::EndFrame"); - BOOL impeller_enabled = ios_context_->GetBackend() != IOSRenderingBackend::kSkia; [platform_views_controller_ endFrameWithResubmit:should_resubmit_frame - threadMerger:raster_thread_merger - impellerEnabled:impeller_enabled]; + threadMerger:raster_thread_merger]; } // |ExternalViewEmbedder| diff --git a/engine/src/flutter/shell/platform/darwin/ios/platform_view_ios.h b/engine/src/flutter/shell/platform/darwin/ios/platform_view_ios.h index 74968d5629..1013aca65e 100644 --- a/engine/src/flutter/shell/platform/darwin/ios/platform_view_ios.h +++ b/engine/src/flutter/shell/platform/darwin/ios/platform_view_ios.h @@ -30,7 +30,7 @@ namespace flutter { * The shell provides and requests for UI related data and this PlatformView subclass fulfills * it with iOS specific capabilities. As an example, the iOS embedding (the `FlutterEngine` and the * `FlutterViewController`) sends pointer data to the shell and receives the shell's request for a - * Skia GrDirectContext and supplies it. + * Impeller AiksContext and supplies it. * * Despite the name "view", this class is unrelated to UIViews on iOS and doesn't have the same * lifecycle. It's a long lived bridge owned by the `FlutterEngine` and can be attached and diff --git a/engine/src/flutter/testing/ios_scenario_app/bin/run_ios_tests.dart b/engine/src/flutter/testing/ios_scenario_app/bin/run_ios_tests.dart index 54c4c726fd..c98ff301fe 100644 --- a/engine/src/flutter/testing/ios_scenario_app/bin/run_ios_tests.dart +++ b/engine/src/flutter/testing/ios_scenario_app/bin/run_ios_tests.dart @@ -64,7 +64,6 @@ void main(List args) async { deviceIdentifier: results.option('device-identifier')!, osRuntime: results.option('os-runtime')!, osVersion: results.option('os-version')!, - withImpeller: results.flag('with-impeller'), dumpXcresultOnFailure: dumpXcresultOnFailurePath, ); completer.complete(); @@ -111,7 +110,6 @@ Future _run( required String deviceIdentifier, required String osRuntime, required String osVersion, - required bool withImpeller, required String? dumpXcresultOnFailure, }) async { // Terminate early on SIGINT. @@ -132,37 +130,35 @@ Future _run( cleanup.add(() => _deleteIfPresent(resultBundle)); - if (withImpeller) { - final process = await _runTests( - outScenariosPath: scenarioPath, - resultBundlePath: resultBundle.path, - osVersion: osVersion, - deviceName: deviceName, - iosEngineVariant: iosEngineVariant, - ); - cleanup.add(process.kill); + final process = await _runTests( + outScenariosPath: scenarioPath, + resultBundlePath: resultBundle.path, + osVersion: osVersion, + deviceName: deviceName, + iosEngineVariant: iosEngineVariant, + ); + cleanup.add(process.kill); - // Create a temporary directory, if needed. - var storePath = dumpXcresultOnFailure; - if (storePath == null) { - final dumpDir = io.Directory.systemTemp.createTempSync(); - storePath = dumpDir.path; - cleanup.add(() => dumpDir.delete(recursive: true)); - } - - if (await process.exitCode != 0) { - final String outputPath = _zipAndStoreFailedTestResults( - iosEngineVariant: iosEngineVariant, - resultBundle: resultBundle, - storePath: storePath, - ); - io.stderr.writeln('Failed test results are stored at $outputPath'); - throw _ToolFailure('test failed.'); - } else { - io.stderr.writeln('test succcess.'); - } - _deleteIfPresent(resultBundle); + // Create a temporary directory, if needed. + var storePath = dumpXcresultOnFailure; + if (storePath == null) { + final dumpDir = io.Directory.systemTemp.createTempSync(); + storePath = dumpDir.path; + cleanup.add(() => dumpDir.delete(recursive: true)); } + + if (await process.exitCode != 0) { + final String outputPath = _zipAndStoreFailedTestResults( + iosEngineVariant: iosEngineVariant, + resultBundle: resultBundle, + storePath: storePath, + ); + io.stderr.writeln('Failed test results are stored at $outputPath'); + throw _ToolFailure('test failed.'); + } else { + io.stderr.writeln('test succcess.'); + } + _deleteIfPresent(resultBundle); } /// Exception thrown when the tool should halt execution intentionally. @@ -198,11 +194,6 @@ final _args = help: 'The OS version of the iOS simulator device to use.', defaultsTo: '17.0', ) - ..addFlag( - 'with-impeller', - help: 'Whether to use the Impeller backend to run the tests.', - defaultsTo: true, - ) ..addOption( 'dump-xcresult-on-failure', help: diff --git a/engine/src/flutter/tools/gn b/engine/src/flutter/tools/gn index 34d780f3f3..e8c4524b2e 100755 --- a/engine/src/flutter/tools/gn +++ b/engine/src/flutter/tools/gn @@ -451,7 +451,7 @@ def to_gn_args(args): gn_args['is_clang'] = True else: gn_args['is_clang'] = args.clang - if args.slimpeller: + if args.target_os == 'ios' or args.slimpeller: gn_args['skia_enable_graphite'] = False gn_args['skia_enable_ganesh'] = False gn_args['slimpeller'] = True