diff --git a/packages/flutter_tools/lib/src/build_system/targets/shader_compiler.dart b/packages/flutter_tools/lib/src/build_system/targets/shader_compiler.dart index c1d2ad4c74..ce31f39cf1 100644 --- a/packages/flutter_tools/lib/src/build_system/targets/shader_compiler.dart +++ b/packages/flutter_tools/lib/src/build_system/targets/shader_compiler.dart @@ -22,13 +22,13 @@ import '../build_system.dart'; /// The output shader format that should be used by the [ShaderCompiler]. enum ShaderTarget { - impellerAndroid('--runtime-stage-gles'), - impelleriOS('--runtime-stage-metal'), - sksl('--sksl'); + impellerAndroid(['--runtime-stage-gles', '--runtime-stage-vulkan']), + impelleriOS(['--runtime-stage-metal']), + sksl(['--sksl']); - const ShaderTarget(this.target); + const ShaderTarget(this.stages); - final String target; + final List stages; } /// A wrapper around [ShaderCompiler] to support hot reload of shader sources. @@ -177,7 +177,7 @@ class ShaderCompiler { final String shaderLibPath = _fs.path.join(impellerc.parent.absolute.path, 'shader_lib'); final List cmd = [ impellerc.path, - target.target, + ...target.stages, '--iplr', if (json) '--json', diff --git a/packages/flutter_tools/test/general.shard/build_system/targets/android_test.dart b/packages/flutter_tools/test/general.shard/build_system/targets/android_test.dart index f96c8e9ec8..21c8b0f59e 100644 --- a/packages/flutter_tools/test/general.shard/build_system/targets/android_test.dart +++ b/packages/flutter_tools/test/general.shard/build_system/targets/android_test.dart @@ -536,6 +536,7 @@ void main() { const FakeCommand(command: [ 'HostArtifact.impellerc', '--runtime-stage-gles', + '--runtime-stage-vulkan', '--iplr', '--sl=out/flutter_assets/shader.glsl', '--spirv=out/flutter_assets/shader.glsl.spirv', diff --git a/packages/flutter_tools/test/general.shard/build_system/targets/shader_compiler_test.dart b/packages/flutter_tools/test/general.shard/build_system/targets/shader_compiler_test.dart index d3e301cfef..f8c83bef5f 100644 --- a/packages/flutter_tools/test/general.shard/build_system/targets/shader_compiler_test.dart +++ b/packages/flutter_tools/test/general.shard/build_system/targets/shader_compiler_test.dart @@ -118,12 +118,13 @@ void main() { expect(fileSystem.file(outputPath).existsSync(), true); }); - testWithoutContext('compileShader invokes impellerc for .frag files and opengl es', () async { + testWithoutContext('compileShader invokes impellerc for .frag files and Android', () async { final FakeProcessManager processManager = FakeProcessManager.list([ FakeCommand( command: [ impellerc, '--runtime-stage-gles', + '--runtime-stage-vulkan', '--iplr', '--sl=$outputPath', '--spirv=$outputPath.spirv', @@ -292,6 +293,7 @@ void main() { command: [ impellerc, '--runtime-stage-gles', + '--runtime-stage-vulkan', '--iplr', '--sl=/.tmp_rand0/0.8255140718871702.temp', '--spirv=/.tmp_rand0/0.8255140718871702.temp.spirv',