[iOS] switch iOS to slimpeller variant. (#163808)
Now that skia can no longer be used on both iOS devices and Simulators, we can switch the iOS engine to the "slimpeller" variant which removes some (not all!) of the Skia dependencies. This should reduce binary size and build time. I also did some cleanups as some tests we're still opting into Skia behaviors (though not actually running skia) and we now flag these as errors.
This commit is contained in:
parent
1e2583eff2
commit
a488d104f2
@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -76,7 +76,7 @@ static sk_sp<DlImage> CreateDeferredImage(
|
||||
std::unique_ptr<LayerTree> layer_tree,
|
||||
fml::TaskRunnerAffineWeakPtr<SnapshotDelegate> snapshot_delegate,
|
||||
fml::RefPtr<fml::TaskRunner> raster_task_runner,
|
||||
fml::RefPtr<SkiaUnrefQueue> unref_queue) {
|
||||
const fml::RefPtr<SkiaUnrefQueue>& unref_queue) {
|
||||
#if IMPELLER_SUPPORTS_RENDERING
|
||||
if (impeller) {
|
||||
return DlDeferredImageGPUImpeller::Make(std::move(layer_tree),
|
||||
@ -95,7 +95,7 @@ static sk_sp<DlImage> 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);
|
||||
}
|
||||
|
@ -16,14 +16,14 @@ std::unique_ptr<ImageDecoder> ImageDecoder::Make(
|
||||
const Settings& settings,
|
||||
const TaskRunners& runners,
|
||||
std::shared_ptr<fml::ConcurrentTaskRunner> concurrent_task_runner,
|
||||
fml::WeakPtr<IOManager> io_manager,
|
||||
const fml::WeakPtr<IOManager>& io_manager,
|
||||
const std::shared_ptr<fml::SyncSwitch>& gpu_disabled_switch) {
|
||||
#if IMPELLER_SUPPORTS_RENDERING
|
||||
if (settings.enable_impeller) {
|
||||
return std::make_unique<ImageDecoderImpeller>(
|
||||
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> ImageDecoder::Make(
|
||||
return std::make_unique<ImageDecoderSkia>(
|
||||
runners, //
|
||||
std::move(concurrent_task_runner), //
|
||||
std::move(io_manager) //
|
||||
io_manager //
|
||||
);
|
||||
#else // !SLIMPELLER
|
||||
FML_LOG(FATAL) << "Could not setup an image decoder.";
|
||||
|
@ -27,7 +27,7 @@ class ImageDecoder {
|
||||
const Settings& settings,
|
||||
const TaskRunners& runners,
|
||||
std::shared_ptr<fml::ConcurrentTaskRunner> concurrent_task_runner,
|
||||
fml::WeakPtr<IOManager> io_manager,
|
||||
const fml::WeakPtr<IOManager>& io_manager,
|
||||
const std::shared_ptr<fml::SyncSwitch>& gpu_disabled_switch);
|
||||
|
||||
virtual ~ImageDecoder();
|
||||
|
@ -55,10 +55,10 @@ static void InvokeNextFrameCallback(
|
||||
|
||||
std::pair<sk_sp<DlImage>, std::string>
|
||||
MultiFrameCodec::State::GetNextFrameImage(
|
||||
fml::WeakPtr<GrDirectContext> resourceContext,
|
||||
const fml::WeakPtr<GrDirectContext>& resourceContext,
|
||||
const std::shared_ptr<const fml::SyncSwitch>& gpu_disable_sync_switch,
|
||||
const std::shared_ptr<impeller::Context>& impeller_context,
|
||||
fml::RefPtr<flutter::SkiaUnrefQueue> unref_queue) {
|
||||
const fml::RefPtr<flutter::SkiaUnrefQueue>& 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<tonic::DartPersistentValue> callback,
|
||||
const fml::RefPtr<fml::TaskRunner>& ui_task_runner,
|
||||
fml::WeakPtr<GrDirectContext> resourceContext,
|
||||
fml::RefPtr<flutter::SkiaUnrefQueue> unref_queue,
|
||||
const fml::WeakPtr<GrDirectContext>& resourceContext,
|
||||
const fml::RefPtr<flutter::SkiaUnrefQueue>& unref_queue,
|
||||
const std::shared_ptr<const fml::SyncSwitch>& gpu_disable_sync_switch,
|
||||
size_t trace_id,
|
||||
const std::shared_ptr<impeller::Context>& impeller_context) {
|
||||
@ -205,9 +205,8 @@ void MultiFrameCodec::State::GetNextFrameAndInvokeCallback(
|
||||
int duration = 0;
|
||||
sk_sp<DlImage> 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);
|
||||
|
@ -60,16 +60,16 @@ class MultiFrameCodec : public Codec {
|
||||
std::optional<SkIRect> restoreBGColorRect_;
|
||||
|
||||
std::pair<sk_sp<DlImage>, std::string> GetNextFrameImage(
|
||||
fml::WeakPtr<GrDirectContext> resourceContext,
|
||||
const fml::WeakPtr<GrDirectContext>& resourceContext,
|
||||
const std::shared_ptr<const fml::SyncSwitch>& gpu_disable_sync_switch,
|
||||
const std::shared_ptr<impeller::Context>& impeller_context,
|
||||
fml::RefPtr<flutter::SkiaUnrefQueue> unref_queue);
|
||||
const fml::RefPtr<flutter::SkiaUnrefQueue>& unref_queue);
|
||||
|
||||
void GetNextFrameAndInvokeCallback(
|
||||
std::unique_ptr<tonic::DartPersistentValue> callback,
|
||||
const fml::RefPtr<fml::TaskRunner>& ui_task_runner,
|
||||
fml::WeakPtr<GrDirectContext> resourceContext,
|
||||
fml::RefPtr<flutter::SkiaUnrefQueue> unref_queue,
|
||||
const fml::WeakPtr<GrDirectContext>& resourceContext,
|
||||
const fml::RefPtr<flutter::SkiaUnrefQueue>& unref_queue,
|
||||
const std::shared_ptr<const fml::SyncSwitch>& gpu_disable_sync_switch,
|
||||
size_t trace_id,
|
||||
const std::shared_ptr<impeller::Context>& impeller_context);
|
||||
|
@ -62,7 +62,7 @@ static sk_sp<DlImage> CreateDeferredImage(
|
||||
uint32_t height,
|
||||
fml::TaskRunnerAffineWeakPtr<SnapshotDelegate> snapshot_delegate,
|
||||
fml::RefPtr<fml::TaskRunner> raster_task_runner,
|
||||
fml::RefPtr<SkiaUnrefQueue> unref_queue) {
|
||||
const fml::RefPtr<SkiaUnrefQueue>& unref_queue) {
|
||||
#if IMPELLER_SUPPORTS_RENDERING
|
||||
if (impeller) {
|
||||
return DlDeferredImageGPUImpeller::Make(
|
||||
@ -77,9 +77,9 @@ static sk_sp<DlImage> 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<DisplayList> 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);
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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");
|
||||
|
@ -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.
|
||||
|
@ -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 {
|
||||
|
@ -72,16 +72,14 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
///
|
||||
/// Called from the raster thread.
|
||||
- (flutter::PostPrerollResult)postPrerollActionWithThreadMerger:
|
||||
(const fml::RefPtr<fml::RasterThreadMerger>&)rasterThreadMerger
|
||||
impellerEnabled:(BOOL)impellerEnabled;
|
||||
(const fml::RefPtr<fml::RasterThreadMerger>&)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<fml::RasterThreadMerger>&)rasterThreadMerger
|
||||
impellerEnabled:(BOOL)impellerEnabled;
|
||||
threadMerger:(const fml::RefPtr<fml::RasterThreadMerger>&)rasterThreadMerger;
|
||||
|
||||
/// @brief Returns the Canvas for the overlay slice for the given platform view.
|
||||
///
|
||||
|
@ -448,14 +448,12 @@ static bool ClipRRectContainsPlatformViewBoundingRect(const SkRRect& clip_rrect,
|
||||
}
|
||||
|
||||
- (flutter::PostPrerollResult)postPrerollActionWithThreadMerger:
|
||||
(const fml::RefPtr<fml::RasterThreadMerger>&)rasterThreadMerger
|
||||
impellerEnabled:(BOOL)impellerEnabled {
|
||||
(const fml::RefPtr<fml::RasterThreadMerger>&)rasterThreadMerger {
|
||||
return flutter::PostPrerollResult::kSuccess;
|
||||
}
|
||||
|
||||
- (void)endFrameWithResubmit:(BOOL)shouldResubmitFrame
|
||||
threadMerger:(const fml::RefPtr<fml::RasterThreadMerger>&)rasterThreadMerger
|
||||
impellerEnabled:(BOOL)impellerEnabled {
|
||||
threadMerger:(const fml::RefPtr<fml::RasterThreadMerger>&)rasterThreadMerger {
|
||||
}
|
||||
|
||||
- (void)pushFilterToVisitedPlatformViews:(const std::shared_ptr<flutter::DlImageFilter>&)filter
|
||||
|
@ -324,9 +324,7 @@ fml::RefPtr<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> 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<SkSurface> mock_sk_surface = SkSurfaces::Raster(image_info);
|
||||
flutter::SurfaceFrame::FramebufferInfo framebuffer_info;
|
||||
auto mock_surface = std::make_unique<flutter::SurfaceFrame>(
|
||||
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<flutter::IOSContextNoop>()]);
|
||||
@ -3826,12 +3757,11 @@ fml::RefPtr<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
[flutterPlatformViewsController prerollCompositeEmbeddedView:0
|
||||
withParams:std::move(embeddedViewParams1)];
|
||||
|
||||
mock_sk_surface = SkSurfaces::Raster(image_info);
|
||||
mock_surface = std::make_unique<flutter::SurfaceFrame>(
|
||||
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<flutter::IOSContextNoop>()]);
|
||||
@ -3855,9 +3785,7 @@ fml::RefPtr<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> 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<SkSurface> mock_sk_surface = SkSurfaces::Raster(image_info);
|
||||
flutter::SurfaceFrame::FramebufferInfo framebuffer_info;
|
||||
auto mock_surface = std::make_unique<flutter::SurfaceFrame>(
|
||||
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<flutter::IOSContextNoop>()]);
|
||||
@ -3942,12 +3867,11 @@ fml::RefPtr<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
[flutterPlatformViewsController prerollCompositeEmbeddedView:1
|
||||
withParams:std::move(embeddedViewParams2)];
|
||||
|
||||
mock_sk_surface = SkSurfaces::Raster(image_info);
|
||||
mock_surface = std::make_unique<flutter::SurfaceFrame>(
|
||||
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<flutter::IOSContextNoop>()]);
|
||||
@ -4056,9 +3980,7 @@ fml::RefPtr<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
result:disposeResult];
|
||||
[self waitForExpectationsWithTimeout:30 handler:nil];
|
||||
|
||||
const SkImageInfo image_info = SkImageInfo::MakeN32Premul(1000, 1000);
|
||||
sk_sp<SkSurface> mock_sk_surface = SkSurfaces::Raster(image_info);
|
||||
flutter::SurfaceFrame::FramebufferInfo framebuffer_info;
|
||||
auto mock_surface = std::make_unique<flutter::SurfaceFrame>(
|
||||
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<flutter::IOSContextNoop>()]);
|
||||
@ -4452,14 +4367,12 @@ fml::RefPtr<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
[flutterPlatformViewsController prerollCompositeEmbeddedView:1
|
||||
withParams:std::move(embeddedViewParams1)];
|
||||
|
||||
const SkImageInfo image_info = SkImageInfo::MakeN32Premul(1000, 1000);
|
||||
sk_sp<SkSurface> mock_sk_surface = SkSurfaces::Raster(image_info);
|
||||
flutter::SurfaceFrame::FramebufferInfo framebuffer_info;
|
||||
auto mock_surface = std::make_unique<flutter::SurfaceFrame>(
|
||||
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<flutter::IOSContextNoop>()]);
|
||||
@ -4483,9 +4396,7 @@ fml::RefPtr<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> 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<SkSurface> mock_sk_surface = SkSurfaces::Raster(image_info);
|
||||
flutter::SurfaceFrame::FramebufferInfo framebuffer_info;
|
||||
auto mock_surface = std::make_unique<flutter::SurfaceFrame>(
|
||||
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<flutter::IOSContextNoop>()];
|
||||
|
||||
@ -4562,9 +4470,7 @@ fml::RefPtr<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> 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<SkSurface> mock_sk_surface = SkSurfaces::Raster(image_info);
|
||||
flutter::SurfaceFrame::FramebufferInfo framebuffer_info;
|
||||
auto mock_surface = std::make_unique<flutter::SurfaceFrame>(
|
||||
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<flutter::IOSContextNoop>()];
|
||||
|
||||
@ -4669,9 +4572,7 @@ fml::RefPtr<fml::TaskRunner> GetDefaultTaskRunner() {
|
||||
flutterPlatformViewsController.taskRunner = GetDefaultTaskRunner();
|
||||
auto platform_view = std::make_unique<flutter::PlatformViewIOS>(
|
||||
/*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<fml::TaskRunner> 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<SkSurface> mock_sk_surface = SkSurfaces::Raster(image_info);
|
||||
flutter::SurfaceFrame::FramebufferInfo framebuffer_info;
|
||||
std::optional<flutter::SurfaceFrame::SubmitInfo> submit_info;
|
||||
auto mock_surface = std::make_unique<flutter::SurfaceFrame>(
|
||||
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),
|
||||
|
@ -13,7 +13,6 @@
|
||||
|
||||
@protocol FlutterViewEngineDelegate <NSObject>
|
||||
|
||||
@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_
|
||||
|
@ -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<CGColorSpaceRef> 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 {
|
||||
|
@ -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
|
||||
|
@ -10,7 +10,6 @@ FLUTTER_ASSERT_ARC
|
||||
|
||||
@interface FakeDelegate : NSObject <FlutterViewEngineDelegate>
|
||||
@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];
|
||||
|
@ -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.
|
||||
|
@ -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"
|
||||
|
||||
|
@ -59,10 +59,8 @@ PostPrerollResult IOSExternalViewEmbedder::PostPrerollAction(
|
||||
const fml::RefPtr<fml::RasterThreadMerger>& 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<fml::RasterThreadMerger>& 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|
|
||||
|
@ -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
|
||||
|
@ -64,7 +64,6 @@ void main(List<String> 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<void> _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<void> _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:
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user