Turned on preserve bindings to impellerc (#167203)
fixes https://github.com/flutter/flutter/issues/116900
## 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], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.
If you need help, consider asking for advice on the #hackers-new channel
on [Discord].
<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
diff --git a/engine/src/flutter/impeller/compiler/spirv_compiler.cc b/engine/src/flutter/impeller/compiler/spirv_compiler.cc
index 9e0f66f..5861853 100644
--- a/engine/src/flutter/impeller/compiler/spirv_compiler.cc
+++ b/engine/src/flutter/impeller/compiler/spirv_compiler.cc
@@ -282,6 +282,7 @@
options.SetAutoBindUniforms(true);
options.SetAutoMapLocations(true);
+ options.SetPreserveBindings(true);
options.SetOptimizationLevel(optimization_level);
diff --git a/engine/src/flutter/impeller/fixtures/BUILD.gn b/engine/src/flutter/impeller/fixtures/BUILD.gn
index f4e6bc5..d42088e 100644
--- a/engine/src/flutter/impeller/fixtures/BUILD.gn
+++ b/engine/src/flutter/impeller/fixtures/BUILD.gn
@@ -68,6 +68,10 @@
"texture.vert",
]
+ if (impeller_enable_vulkan) {
+ vulkan_exclusions = [ "half.frag" ]
+ }
+
if (impeller_enable_opengles) {
gles_exclusions = [
"sample.comp",
diff --git a/engine/src/flutter/impeller/tools/shaders.gni b/engine/src/flutter/impeller/tools/shaders.gni
index 140b886..cfa2099 100644
--- a/engine/src/flutter/impeller/tools/shaders.gni
+++ b/engine/src/flutter/impeller/tools/shaders.gni
@@ -140,7 +140,11 @@
if (defined(invoker.vulkan_language_version)) {
vulkan_language_version = invoker.vulkan_language_version
}
- shaders = invoker.shaders
+ if (defined(invoker.vulkan_exclusions)) {
+ shaders = invoker.shaders - invoker.vulkan_exclusions
+ } else {
+ shaders = invoker.shaders
+ }
analyze = analyze
}
}