From 8b1e1c48ac55e5ef9e91bd40a3689d299cb2fb48 Mon Sep 17 00:00:00 2001 From: gaaclarke <30870216+gaaclarke@users.noreply.github.com> Date: Tue, 18 Apr 2023 10:28:40 -0700 Subject: [PATCH] [Impeller] Turned on wide gamut support by default. (#39801) After having run a memory audit on Flutter Gallery I believe we can turn on wide gamut support by default for impeller. Here are the ramifications of this change: 1) If an opaque surface is used and no transparent wide gamut images are used, there should be no change in performance or memory usage. 1) If a transparent surface is used; the surface will take up 2x memory (ex 4MB on iPhone 7) and will have a runtime performance cost. 1) If wide gamut **transparent** images are used, they will take up 2x memory. Opaque wide-gamut images will take up the same amount of memory. ## Flutter gallery test results ### Test 1 Steps: * Tap "Material" * Scroll down and back to "Cards" * Tap "Cards" * Scroll to bottom of "Cards" example Notice that the card images are wide gamut, AdobeRGB. **Memory increase:** 10.401 MB (+8.7%) ### Test 2 Steps: * Just launch the gallery Notice that there shouldn't be any wide gamut images. **Memory Increase:** 1.22 MB (+1%, this is probably a fluke of measurement) ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide] and the [C++, Objective-C, Java style guides]. - [ ] I listed at least one issue that this PR fixes in the description above. - [ ] I added new tests to check the change I am making or feature I am adding, or Hixie said the PR is test-exempt. See [testing the engine] for instructions on writing and running engine tests. - [x] I updated/added relevant documentation (doc comments with `///`). - [x] I signed the [CLA]. - [x] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. [Contributor Guide]: https://github.com/flutter/flutter/wiki/Tree-hygiene#overview [Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene [Flutter Style Guide]: https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo [C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style [testing the engine]: https://github.com/flutter/flutter/wiki/Testing-the-engine [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/wiki/Chat --- .../darwin/ios/framework/Source/FlutterDartProject.mm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm b/shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm index 145fac6212dd7..07334dbdd9fbb 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm @@ -156,10 +156,9 @@ settings.may_insecurely_connect_to_all_domains = true; settings.domain_network_policy = ""; - // Whether to enable Impeller. + // Whether to enable wide gamut colors. NSNumber* nsEnableWideGamut = [mainBundle objectForInfoDictionaryKey:@"FLTEnableWideGamut"]; - // TODO(gaaclarke): Make this value `on` by default (pending memory audit). - BOOL enableWideGamut = nsEnableWideGamut ? nsEnableWideGamut.boolValue : NO; + BOOL enableWideGamut = nsEnableWideGamut ? nsEnableWideGamut.boolValue : YES; settings.enable_wide_gamut = enableWideGamut; // TODO(dnfield): We should reverse the order for all these settings so that command line options