Wire up support for --skia-deterministic-rendering (#14802)
https://github.com/flutter/flutter/issues/14519
diff --git a/packages/flutter_tools/lib/src/android/android_device.dart b/packages/flutter_tools/lib/src/android/android_device.dart
index aa93628..f2779f3 100644
--- a/packages/flutter_tools/lib/src/android/android_device.dart
+++ b/packages/flutter_tools/lib/src/android/android_device.dart
@@ -420,6 +420,8 @@
cmd.addAll(<String>['--es', 'route', route]);
if (debuggingOptions.enableSoftwareRendering)
cmd.addAll(<String>['--ez', 'enable-software-rendering', 'true']);
+ if (debuggingOptions.skiaDeterministicRendering)
+ cmd.addAll(<String>['--ez', 'skia-deterministic-rendering', 'true']);
if (debuggingOptions.traceSkia)
cmd.addAll(<String>['--ez', 'trace-skia', 'true']);
if (debuggingOptions.debuggingEnabled) {
diff --git a/packages/flutter_tools/lib/src/commands/run.dart b/packages/flutter_tools/lib/src/commands/run.dart
index 30809bb..5397f6d 100644
--- a/packages/flutter_tools/lib/src/commands/run.dart
+++ b/packages/flutter_tools/lib/src/commands/run.dart
@@ -90,6 +90,10 @@
'when testing Flutter on emulators. By default, Flutter will\n'
'attempt to either use OpenGL or Vulkan and fall back to software\n'
'when neither is available.');
+ argParser.addFlag('skia-deterministic-rendering',
+ negatable: false,
+ help: 'When combined with --enable-software-rendering, provides 100%\n'
+ 'deterministic Skia rendering.');
argParser.addFlag('trace-skia',
negatable: false,
help: 'Enable tracing of Skia code. This is useful when debugging\n'
@@ -229,6 +233,7 @@
startPaused: argResults['start-paused'],
useTestFonts: argResults['use-test-fonts'],
enableSoftwareRendering: argResults['enable-software-rendering'],
+ skiaDeterministicRendering: argResults['skia-deterministic-rendering'],
traceSkia: argResults['trace-skia'],
observatoryPort: observatoryPort,
);
diff --git a/packages/flutter_tools/lib/src/device.dart b/packages/flutter_tools/lib/src/device.dart
index 0fcee66..0adeb37 100644
--- a/packages/flutter_tools/lib/src/device.dart
+++ b/packages/flutter_tools/lib/src/device.dart
@@ -320,6 +320,7 @@
DebuggingOptions.enabled(this.buildInfo, {
this.startPaused: false,
this.enableSoftwareRendering: false,
+ this.skiaDeterministicRendering: false,
this.traceSkia: false,
this.useTestFonts: false,
this.observatoryPort,
@@ -330,6 +331,7 @@
useTestFonts = false,
startPaused = false,
enableSoftwareRendering = false,
+ skiaDeterministicRendering = false,
traceSkia = false,
observatoryPort = null;
@@ -338,6 +340,7 @@
final BuildInfo buildInfo;
final bool startPaused;
final bool enableSoftwareRendering;
+ final bool skiaDeterministicRendering;
final bool traceSkia;
final bool useTestFonts;
final int observatoryPort;
diff --git a/packages/flutter_tools/lib/src/ios/devices.dart b/packages/flutter_tools/lib/src/ios/devices.dart
index 9aa78da..9fd3505 100644
--- a/packages/flutter_tools/lib/src/ios/devices.dart
+++ b/packages/flutter_tools/lib/src/ios/devices.dart
@@ -210,6 +210,9 @@
if (debuggingOptions.enableSoftwareRendering)
launchArguments.add('--enable-software-rendering');
+ if (debuggingOptions.skiaDeterministicRendering)
+ launchArguments.add('--skia-deterministic-rendering');
+
if (debuggingOptions.traceSkia)
launchArguments.add('--trace-skia');
diff --git a/packages/flutter_tools/lib/src/ios/simulators.dart b/packages/flutter_tools/lib/src/ios/simulators.dart
index 86452b2..f9d5b22 100644
--- a/packages/flutter_tools/lib/src/ios/simulators.dart
+++ b/packages/flutter_tools/lib/src/ios/simulators.dart
@@ -332,6 +332,8 @@
args.add('--enable-checked-mode');
if (debuggingOptions.startPaused)
args.add('--start-paused');
+ if (debuggingOptions.skiaDeterministicRendering)
+ args.add('--skia-deterministic-rendering');
if (debuggingOptions.useTestFonts)
args.add('--use-test-fonts');