[Impeller] Plumb through the impeller-force-gl flag. (#123828)

[Impeller] Plumb through the impeller-force-gl flag.
This commit is contained in:
Chinmay Garde 2023-03-31 08:13:10 -07:00 committed by GitHub
parent d940f60b46
commit f6c2b10e1a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 24 additions and 0 deletions

View file

@ -662,6 +662,8 @@ class AndroidDevice extends Device {
...<String>['--ez', 'enable-impeller', 'false'],
if (debuggingOptions.enableVulkanValidation)
...<String>['--ez', 'enable-vulkan-validation', 'true'],
if (debuggingOptions.impellerForceGL)
...<String>['--ez', 'impeller-force-gl', 'true'],
if (debuggingOptions.debuggingEnabled) ...<String>[
if (debuggingOptions.buildInfo.isDebug) ...<String>[
...<String>['--ez', 'enable-checked-mode', 'true'],

View file

@ -184,6 +184,7 @@ abstract class RunCommandBase extends FlutterCommand with DeviceBasedDevelopment
usesFatalWarningsOption(verboseHelp: verboseHelp);
addEnableImpellerFlag(verboseHelp: verboseHelp);
addEnableVulkanValidationFlag(verboseHelp: verboseHelp);
addImpellerForceGLFlag(verboseHelp: verboseHelp);
addEnableEmbedderApiFlag(verboseHelp: verboseHelp);
}
@ -198,6 +199,7 @@ abstract class RunCommandBase extends FlutterCommand with DeviceBasedDevelopment
bool get trackWidgetCreation => boolArg('track-widget-creation');
ImpellerStatus get enableImpeller => ImpellerStatus.fromBool(argResults!['enable-impeller'] as bool?);
bool get enableVulkanValidation => boolArg('enable-vulkan-validation');
bool get impellerForceGL => boolArg('impeller-force-gl');
bool get uninstallFirst => boolArg('uninstall-first');
bool get enableEmbedderApi => boolArg('enable-embedder-api');
@ -240,6 +242,7 @@ abstract class RunCommandBase extends FlutterCommand with DeviceBasedDevelopment
webBrowserFlags: webBrowserFlags,
enableImpeller: enableImpeller,
enableVulkanValidation: enableVulkanValidation,
impellerForceGL: impellerForceGL,
uninstallFirst: uninstallFirst,
enableDartProfiling: enableDartProfiling,
enableEmbedderApi: enableEmbedderApi,
@ -289,6 +292,7 @@ abstract class RunCommandBase extends FlutterCommand with DeviceBasedDevelopment
nativeNullAssertions: boolArg('native-null-assertions'),
enableImpeller: enableImpeller,
enableVulkanValidation: enableVulkanValidation,
impellerForceGL: impellerForceGL,
uninstallFirst: uninstallFirst,
serveObservatory: boolArg('serve-observatory'),
enableDartProfiling: enableDartProfiling,

View file

@ -966,6 +966,7 @@ class DebuggingOptions {
this.nativeNullAssertions = false,
this.enableImpeller = ImpellerStatus.platformDefault,
this.enableVulkanValidation = false,
this.impellerForceGL = false,
this.uninstallFirst = false,
this.serveObservatory = false,
this.enableDartProfiling = true,
@ -988,6 +989,7 @@ class DebuggingOptions {
this.traceAllowlist,
this.enableImpeller = ImpellerStatus.platformDefault,
this.enableVulkanValidation = false,
this.impellerForceGL = false,
this.uninstallFirst = false,
this.enableDartProfiling = true,
this.enableEmbedderApi = false,
@ -1062,6 +1064,7 @@ class DebuggingOptions {
required this.nativeNullAssertions,
required this.enableImpeller,
required this.enableVulkanValidation,
required this.impellerForceGL,
required this.uninstallFirst,
required this.serveObservatory,
required this.enableDartProfiling,
@ -1102,6 +1105,7 @@ class DebuggingOptions {
final bool webUseSseForInjectedClient;
final ImpellerStatus enableImpeller;
final bool enableVulkanValidation;
final bool impellerForceGL;
final bool serveObservatory;
final bool enableDartProfiling;
final bool enableEmbedderApi;
@ -1235,6 +1239,7 @@ class DebuggingOptions {
'nativeNullAssertions': nativeNullAssertions,
'enableImpeller': enableImpeller.asBool,
'enableVulkanValidation': enableVulkanValidation,
'impellerForceGL': impellerForceGL,
'serveObservatory': serveObservatory,
'enableDartProfiling': enableDartProfiling,
'enableEmbedderApi': enableEmbedderApi,
@ -1284,6 +1289,7 @@ class DebuggingOptions {
nativeNullAssertions: json['nativeNullAssertions']! as bool,
enableImpeller: ImpellerStatus.fromBool(json['enableImpeller'] as bool?),
enableVulkanValidation: (json['enableVulkanValidation'] as bool?) ?? false,
impellerForceGL: (json['impellerForceGL'] as bool?) ?? false,
uninstallFirst: (json['uninstallFirst'] as bool?) ?? false,
serveObservatory: (json['serveObservatory'] as bool?) ?? false,
enableDartProfiling: (json['enableDartProfiling'] as bool?) ?? true,

View file

@ -1069,6 +1069,16 @@ abstract class FlutterCommand extends Command<void> {
);
}
void addImpellerForceGLFlag({required bool verboseHelp}) {
argParser.addFlag('impeller-force-gl',
hide: !verboseHelp,
help: 'On platforms that support OpenGL Rendering using Impeller, force '
'rendering using OpenGL over other APIs. If Impeller is not '
'enabled or the platform does not support OpenGL ES, this flag '
'does nothing.',
);
}
void addEnableEmbedderApiFlag({required bool verboseHelp}) {
argParser.addFlag('enable-embedder-api',
hide: !verboseHelp,

View file

@ -1051,6 +1051,7 @@ void main() {
'--native-null-assertions',
'--enable-impeller',
'--enable-vulkan-validation',
'--impeller-force-gl',
'--trace-systrace',
'--enable-software-rendering',
'--skia-deterministic-rendering',
@ -1070,6 +1071,7 @@ void main() {
expect(options.traceSystrace, true);
expect(options.enableImpeller, ImpellerStatus.enabled);
expect(options.enableVulkanValidation, true);
expect(options.impellerForceGL, true);
expect(options.enableSoftwareRendering, true);
expect(options.skiaDeterministicRendering, true);
}, overrides: <Type, Generator>{