Skip to content

Commit

Permalink
[Impeller] adds hardware check on gpu for wide gamut
Browse files Browse the repository at this point in the history
  • Loading branch information
gaaclarke committed Sep 19, 2023
1 parent ab30b68 commit 702f23b
Showing 1 changed file with 19 additions and 1 deletion.
20 changes: 19 additions & 1 deletion shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

#include <syslog.h>

#import <Metal/Metal.h>
#include <sstream>
#include <string>

Expand All @@ -22,6 +23,8 @@
#import "flutter/shell/platform/darwin/common/command_line.h"
#import "flutter/shell/platform/darwin/ios/framework/Headers/FlutterViewController.h"

FLUTTER_ASSERT_NOT_ARC

extern "C" {
#if FLUTTER_RUNTIME_MODE == FLUTTER_RUNTIME_MODE_DEBUG
// Used for debugging dart:* sources.
Expand All @@ -32,6 +35,20 @@

static const char* kApplicationKernelSnapshotFileName = "kernel_blob.bin";

static BOOL DoesHardwareSupportsWideGamut() {
id<MTLDevice> device = MTLCreateSystemDefaultDevice();
BOOL result;
if (@available(iOS 13.0, *)) {
// MTLGPUFamilyApple2 = A9/A10
result = [device supportsFamily:MTLGPUFamilyApple2];
} else {
// A9/A10 on iOS 10+
result = [device supportsFeatureSet:MTLFeatureSet_iOS_GPUFamily3_v2];
}
[device release];
return result;
}

flutter::Settings FLTDefaultSettingsForBundle(NSBundle* bundle, NSProcessInfo* processInfoOrNil) {
auto command_line = flutter::CommandLineFromNSProcessInfo(processInfoOrNil);

Expand Down Expand Up @@ -155,7 +172,8 @@
settings.enable_wide_gamut = false;
#else
NSNumber* nsEnableWideGamut = [mainBundle objectForInfoDictionaryKey:@"FLTEnableWideGamut"];
BOOL enableWideGamut = nsEnableWideGamut ? nsEnableWideGamut.boolValue : YES;
BOOL enableWideGamut =
(nsEnableWideGamut ? nsEnableWideGamut.boolValue : YES) && DoesHardwareSupportsWideGamut();
settings.enable_wide_gamut = enableWideGamut;
#endif

Expand Down

0 comments on commit 702f23b

Please sign in to comment.