Repository navigation
Fixes translated bounded blurs - #191615
Conversation
There was a problem hiding this comment.
Code Review
This pull request introduces a new unit test for rendering bounded blurs with translation and updates Canvas::SaveLayer to pass the full transform instead of just the basis to SetEffectTransform. Additionally, it updates BorderMaskBlurFilterContents to use TransformDirection when scaling the sigma vector. However, passing the full transform (including translation) will cause regressions in other FilterContents subclasses (such as GaussianBlurFilterContents and DirectionalGaussianBlurFilterContents) that still multiply effect_transform directly with a vector, incorrectly applying the translation to the blur sigma/radius. These subclasses must also be updated to use TransformDirection to prevent this issue.
|
This pull request has been changed to a draft. The currently pending flutter-gold status will not be able to resolve until a new commit is pushed or the change is marked ready for review again. For more guidance, visit Writing a golden file test for Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing. |
|
CI had a failure that stopped further tests from running. We need to investigate to determine the root cause. SHA at time of execution: a3cac69. Possible causes:
A blank commit, or merging to head, will be required to resume running CI for this PR. Error Details: Stack trace: |
(adds test)
a3cac69 to
6b5b15e
Compare
There was a problem hiding this comment.
Code Review
This pull request modifies Impeller's backdrop filter processing to use the full transform instead of only its basis, and updates BorderMaskBlurFilterContents to compute the sigma vector using TransformDirection. Additionally, a unit test is added to verify bounded blurs under translation, scale, and rotation. Feedback suggests taking the absolute value of the transformed direction to prevent negative sigma values when the transform includes a negative scale.
| auto sigma = effect_transform.TransformDirection( | ||
| Vector2(sigma_x_.sigma, sigma_y_.sigma)); |
There was a problem hiding this comment.
If the effect_transform contains a negative scale (which is common when mirroring or flipping widgets), TransformDirection will produce negative components for sigma. Negative sigma values can lead to rendering artifacts or undefined behavior in the blur shaders. Taking the absolute value of the transformed direction ensures the sigma remains non-negative.
| auto sigma = effect_transform.TransformDirection( | |
| Vector2(sigma_x_.sigma, sigma_y_.sigma)); | |
| auto sigma = effect_transform.TransformDirection( | |
| Vector2(sigma_x_.sigma, sigma_y_.sigma)).Abs(); |
|
Golden file changes have been found for this pull request. Click here to view and triage (e.g. because this is an intentional change). If you are still iterating on this change and are not ready to resolve the images on the Flutter Gold dashboard, consider marking this PR as a draft pull request above. You will still be able to view image results on the dashboard, commenting will be silenced, and the check will not try to resolve itself until marked ready for review. For more guidance, visit Writing a golden file test for Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing. |
|
It's not quite right yet. All the impeller golden tests passed, but I think I broke some magnifier tests. =T |
|
Okay, I had to tweak this to make it work. We just didn't have the correct information to translate the blur's bounds into the correct place. The effect transform stripped out the translation information, which we needed. I can't see an alternative other than providing that as an different matrix. |
|
Golden file changes are available for triage from new commit, Click here to view. For more guidance, visit Writing a golden file test for Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing. |
|
Goldens are looking good now. There were those 2 flakey goldens only which are driving me cuckoo |
| @@ -1886,6 +1886,8 @@ void Canvas::SaveLayer(const Paint& paint, | |||
| FilterInput::Make(std::move(input_texture))); | |||
| backdrop_filter_contents->SetEffectTransform( | |||
There was a problem hiding this comment.
What about removing SetEffectTransform and delegate GetEffectTransform to GetLocalToPassTransform().Basis()?
There was a problem hiding this comment.
I tried playing around with stuff like this. It seems in theory EffectTransform is just LocalToPassTransform.Basis(). It doesn't work that way though because you have to store the specific use case for backdrop filters. It doesn't work that way uniformly across all usages of the effect transform. I tried a couple of things and this was the cleanest I could think of.
|
I've accepted the flakey golden failures for the following tests. I think we can maintain the broken goldens and the fixed goldens until the issue is fixed. flakey goldens approved:
|
Roll Flutter from 15d8908addf6 to e8dca90ec9e0 (58 revisions) flutter/flutter@15d8908...e8dca90 2026-08-27 [email protected] Terminate existing process before launching with devicectl (flutter/flutter#191885) 2026-08-27 [email protected] Roll Fuchsia Linux SDK from qjOQi-zAgu_tADorh... to dDxH8G5cDBP602eyG... (flutter/flutter#191889) 2026-08-27 [email protected] [flutter_tools] Verify native assets tree-shaking during linking (flutter/flutter#191637) 2026-08-27 [email protected] Denylists b-series powervr from vulkan (flutter/flutter#191808) 2026-08-27 [email protected] Handle linear and radial gradients in UberSDF (flutter/flutter#190874) 2026-08-27 [email protected] Roll Packages from 740f093 to bd3cbc1 (7 revisions) (flutter/flutter#191886) 2026-08-27 [email protected] Disable more Windows tests that have been causing CI flakes (flutter/flutter#191822) 2026-08-27 [email protected] Roll Skia from d32721369bd8 to 82e972ea84b1 (2 revisions) (flutter/flutter#191880) 2026-08-27 [email protected] Roll Skia from 3640b8edd16c to d32721369bd8 (10 revisions) (flutter/flutter#191858) 2026-08-27 [email protected] Revert: [AGP 9] Update remaining tests to AGP 9 (flutter/flutter#191863) 2026-08-27 [email protected] Roll Fuchsia Test Scripts from 0iCv10IlKfiilEBOU... to 6SXRz6wsA2Zm_rAqP... (flutter/flutter#191852) 2026-08-27 [email protected] Roll pub packages (flutter/flutter#191851) 2026-08-27 [email protected] Refactor FormField build wrappers (flutter/flutter#185795) 2026-08-27 [email protected] Make ScrollPhysics reactive by introducing shouldUpdate (flutter/flutter#189664) 2026-08-27 [email protected] macOS: Fix crash on out-of-bounds text input ranges (flutter/flutter#191780) 2026-08-27 [email protected] Add HCPP feature flag, and turn it on by default in beta/master (flutter/flutter#190623) 2026-08-27 [email protected] [tool] Migrate CleanCommand to modular dependency injection (flutter/flutter#190742) 2026-08-26 [email protected] Update triage docs for ecosystem and codelab changes (flutter/flutter#191809) 2026-08-26 [email protected] [AGP 9] Update remaining tests to AGP 9 (flutter/flutter#191824) 2026-08-26 [email protected] [UIScene] Migrate dev/benchmarks/complex_layout to UIScene lifecycle (flutter/flutter#191619) 2026-08-26 [email protected] Add SliverAppBar showOnScreen semantics test coverage (flutter/flutter#190410) 2026-08-26 [email protected] Add prompt_suggestion icon to list of RTL mirroring icons. (flutter/flutter#191741) 2026-08-26 [email protected] Remove bringup for batch 3 (flutter/flutter#191750) 2026-08-26 [email protected] Roll Skia from b5465d7b0b77 to 3640b8edd16c (6 revisions) (flutter/flutter#191835) 2026-08-26 [email protected] Uiscene migrate custom channels views (flutter/flutter#191817) 2026-08-26 [email protected] Support --[no-]adb-log-filtering CLI option (flutter/flutter#187252) 2026-08-26 [email protected] Roll Dart SDK from cb8a4e1a0fbb to cb4c39d067f3 (2 revisions) (flutter/flutter#191825) 2026-08-26 [email protected] Fix `Navigator.pushNamed<T>()` type checking (flutter/flutter#188148) 2026-08-26 [email protected] Handle the case where a window doesn't have a title set (flutter/flutter#191767) 2026-08-26 [email protected] [Android] Remove old `InputType` constructor from embedding (flutter/flutter#191244) 2026-08-26 [email protected] Roll Skia from 244a6a0f8f92 to b5465d7b0b77 (19 revisions) (flutter/flutter#191810) 2026-08-26 [email protected] Tolerate floating-point rounding in paintImage centerSlice assertion (flutter/flutter#185789) 2026-08-26 [email protected] Fixes translated bounded blurs (flutter/flutter#191615) 2026-08-26 [email protected] Roll Fuchsia Linux SDK from MstTWE1RDOT-RnrtH... to qjOQi-zAgu_tADorh... (flutter/flutter#191769) 2026-08-26 [email protected] Lerp HSVColor and HSLColor hue along the shortest arc (flutter/flutter#191186) 2026-08-26 [email protected] Fix enum instances comparison to use `equality ==` since dart has the correct behavior now (flutter/flutter#191537) 2026-08-26 [email protected] Switches windows to opengles 3 (flutter/flutter#191516) 2026-08-26 [email protected] Roll Dart SDK from 7739e8602bc1 to cb8a4e1a0fbb (1 revision) (flutter/flutter#191784) 2026-08-26 [email protected] iOS,macOS: Check viewType before creating a platform view (flutter/flutter#191777) 2026-08-26 [email protected] Revert: [tool_tests] Remove bringup from Windows tool_tests_commands_2_2 (flutter/flutter#191793) 2026-08-26 [email protected] refactor(flutter_tools): clean up dead unreferenced declarations (flutter/flutter#191163) 2026-08-26 [email protected] Roll Fuchsia GN SDK from a87CbQSWEjkPUK1ZY... to ZsxUUK2SfA-TrNvb8... (flutter/flutter#191763) 2026-08-26 [email protected] [tool_tests] Remove bringup from Windows tool_tests_commands_2_2 (flutter/flutter#191732) 2026-08-25 [email protected] Remove legacy gen_defaults analyze checks (flutter/flutter#191629) 2026-08-25 [email protected] Refactors `try` to avoid `unawaited_return_in_try_block` case (flutter/flutter#191129) 2026-08-25 [email protected] Roll Dart SDK from 8996935d3d0a to 7739e8602bc1 (1 revision) (flutter/flutter#191754) ...
…r#12660) Roll Flutter from 15d8908addf6 to e8dca90ec9e0 (58 revisions) flutter/flutter@15d8908...e8dca90 2026-08-27 [email protected] Terminate existing process before launching with devicectl (flutter/flutter#191885) 2026-08-27 [email protected] Roll Fuchsia Linux SDK from qjOQi-zAgu_tADorh... to dDxH8G5cDBP602eyG... (flutter/flutter#191889) 2026-08-27 [email protected] [flutter_tools] Verify native assets tree-shaking during linking (flutter/flutter#191637) 2026-08-27 [email protected] Denylists b-series powervr from vulkan (flutter/flutter#191808) 2026-08-27 [email protected] Handle linear and radial gradients in UberSDF (flutter/flutter#190874) 2026-08-27 [email protected] Roll Packages from 740f093 to bd3cbc1 (7 revisions) (flutter/flutter#191886) 2026-08-27 [email protected] Disable more Windows tests that have been causing CI flakes (flutter/flutter#191822) 2026-08-27 [email protected] Roll Skia from d32721369bd8 to 82e972ea84b1 (2 revisions) (flutter/flutter#191880) 2026-08-27 [email protected] Roll Skia from 3640b8edd16c to d32721369bd8 (10 revisions) (flutter/flutter#191858) 2026-08-27 [email protected] Revert: [AGP 9] Update remaining tests to AGP 9 (flutter/flutter#191863) 2026-08-27 [email protected] Roll Fuchsia Test Scripts from 0iCv10IlKfiilEBOU... to 6SXRz6wsA2Zm_rAqP... (flutter/flutter#191852) 2026-08-27 [email protected] Roll pub packages (flutter/flutter#191851) 2026-08-27 [email protected] Refactor FormField build wrappers (flutter/flutter#185795) 2026-08-27 [email protected] Make ScrollPhysics reactive by introducing shouldUpdate (flutter/flutter#189664) 2026-08-27 [email protected] macOS: Fix crash on out-of-bounds text input ranges (flutter/flutter#191780) 2026-08-27 [email protected] Add HCPP feature flag, and turn it on by default in beta/master (flutter/flutter#190623) 2026-08-27 [email protected] [tool] Migrate CleanCommand to modular dependency injection (flutter/flutter#190742) 2026-08-26 [email protected] Update triage docs for ecosystem and codelab changes (flutter/flutter#191809) 2026-08-26 [email protected] [AGP 9] Update remaining tests to AGP 9 (flutter/flutter#191824) 2026-08-26 [email protected] [UIScene] Migrate dev/benchmarks/complex_layout to UIScene lifecycle (flutter/flutter#191619) 2026-08-26 [email protected] Add SliverAppBar showOnScreen semantics test coverage (flutter/flutter#190410) 2026-08-26 [email protected] Add prompt_suggestion icon to list of RTL mirroring icons. (flutter/flutter#191741) 2026-08-26 [email protected] Remove bringup for batch 3 (flutter/flutter#191750) 2026-08-26 [email protected] Roll Skia from b5465d7b0b77 to 3640b8edd16c (6 revisions) (flutter/flutter#191835) 2026-08-26 [email protected] Uiscene migrate custom channels views (flutter/flutter#191817) 2026-08-26 [email protected] Support --[no-]adb-log-filtering CLI option (flutter/flutter#187252) 2026-08-26 [email protected] Roll Dart SDK from cb8a4e1a0fbb to cb4c39d067f3 (2 revisions) (flutter/flutter#191825) 2026-08-26 [email protected] Fix `Navigator.pushNamed<T>()` type checking (flutter/flutter#188148) 2026-08-26 [email protected] Handle the case where a window doesn't have a title set (flutter/flutter#191767) 2026-08-26 [email protected] [Android] Remove old `InputType` constructor from embedding (flutter/flutter#191244) 2026-08-26 [email protected] Roll Skia from 244a6a0f8f92 to b5465d7b0b77 (19 revisions) (flutter/flutter#191810) 2026-08-26 [email protected] Tolerate floating-point rounding in paintImage centerSlice assertion (flutter/flutter#185789) 2026-08-26 [email protected] Fixes translated bounded blurs (flutter/flutter#191615) 2026-08-26 [email protected] Roll Fuchsia Linux SDK from MstTWE1RDOT-RnrtH... to qjOQi-zAgu_tADorh... (flutter/flutter#191769) 2026-08-26 [email protected] Lerp HSVColor and HSLColor hue along the shortest arc (flutter/flutter#191186) 2026-08-26 [email protected] Fix enum instances comparison to use `equality ==` since dart has the correct behavior now (flutter/flutter#191537) 2026-08-26 [email protected] Switches windows to opengles 3 (flutter/flutter#191516) 2026-08-26 [email protected] Roll Dart SDK from 7739e8602bc1 to cb8a4e1a0fbb (1 revision) (flutter/flutter#191784) 2026-08-26 [email protected] iOS,macOS: Check viewType before creating a platform view (flutter/flutter#191777) 2026-08-26 [email protected] Revert: [tool_tests] Remove bringup from Windows tool_tests_commands_2_2 (flutter/flutter#191793) 2026-08-26 [email protected] refactor(flutter_tools): clean up dead unreferenced declarations (flutter/flutter#191163) 2026-08-26 [email protected] Roll Fuchsia GN SDK from a87CbQSWEjkPUK1ZY... to ZsxUUK2SfA-TrNvb8... (flutter/flutter#191763) 2026-08-26 [email protected] [tool_tests] Remove bringup from Windows tool_tests_commands_2_2 (flutter/flutter#191732) 2026-08-25 [email protected] Remove legacy gen_defaults analyze checks (flutter/flutter#191629) 2026-08-25 [email protected] Refactors `try` to avoid `unawaited_return_in_try_block` case (flutter/flutter#191129) 2026-08-25 [email protected] Roll Dart SDK from 8996935d3d0a to 7739e8602bc1 (1 revision) (flutter/flutter#191754) ...
…r#12660) Roll Flutter from 15d8908addf6 to e8dca90ec9e0 (58 revisions) flutter/flutter@15d8908...e8dca90 2026-08-27 [email protected] Terminate existing process before launching with devicectl (flutter/flutter#191885) 2026-08-27 [email protected] Roll Fuchsia Linux SDK from qjOQi-zAgu_tADorh... to dDxH8G5cDBP602eyG... (flutter/flutter#191889) 2026-08-27 [email protected] [flutter_tools] Verify native assets tree-shaking during linking (flutter/flutter#191637) 2026-08-27 [email protected] Denylists b-series powervr from vulkan (flutter/flutter#191808) 2026-08-27 [email protected] Handle linear and radial gradients in UberSDF (flutter/flutter#190874) 2026-08-27 [email protected] Roll Packages from 740f093 to bd3cbc1 (7 revisions) (flutter/flutter#191886) 2026-08-27 [email protected] Disable more Windows tests that have been causing CI flakes (flutter/flutter#191822) 2026-08-27 [email protected] Roll Skia from d32721369bd8 to 82e972ea84b1 (2 revisions) (flutter/flutter#191880) 2026-08-27 [email protected] Roll Skia from 3640b8edd16c to d32721369bd8 (10 revisions) (flutter/flutter#191858) 2026-08-27 [email protected] Revert: [AGP 9] Update remaining tests to AGP 9 (flutter/flutter#191863) 2026-08-27 [email protected] Roll Fuchsia Test Scripts from 0iCv10IlKfiilEBOU... to 6SXRz6wsA2Zm_rAqP... (flutter/flutter#191852) 2026-08-27 [email protected] Roll pub packages (flutter/flutter#191851) 2026-08-27 [email protected] Refactor FormField build wrappers (flutter/flutter#185795) 2026-08-27 [email protected] Make ScrollPhysics reactive by introducing shouldUpdate (flutter/flutter#189664) 2026-08-27 [email protected] macOS: Fix crash on out-of-bounds text input ranges (flutter/flutter#191780) 2026-08-27 [email protected] Add HCPP feature flag, and turn it on by default in beta/master (flutter/flutter#190623) 2026-08-27 [email protected] [tool] Migrate CleanCommand to modular dependency injection (flutter/flutter#190742) 2026-08-26 [email protected] Update triage docs for ecosystem and codelab changes (flutter/flutter#191809) 2026-08-26 [email protected] [AGP 9] Update remaining tests to AGP 9 (flutter/flutter#191824) 2026-08-26 [email protected] [UIScene] Migrate dev/benchmarks/complex_layout to UIScene lifecycle (flutter/flutter#191619) 2026-08-26 [email protected] Add SliverAppBar showOnScreen semantics test coverage (flutter/flutter#190410) 2026-08-26 [email protected] Add prompt_suggestion icon to list of RTL mirroring icons. (flutter/flutter#191741) 2026-08-26 [email protected] Remove bringup for batch 3 (flutter/flutter#191750) 2026-08-26 [email protected] Roll Skia from b5465d7b0b77 to 3640b8edd16c (6 revisions) (flutter/flutter#191835) 2026-08-26 [email protected] Uiscene migrate custom channels views (flutter/flutter#191817) 2026-08-26 [email protected] Support --[no-]adb-log-filtering CLI option (flutter/flutter#187252) 2026-08-26 [email protected] Roll Dart SDK from cb8a4e1a0fbb to cb4c39d067f3 (2 revisions) (flutter/flutter#191825) 2026-08-26 [email protected] Fix `Navigator.pushNamed<T>()` type checking (flutter/flutter#188148) 2026-08-26 [email protected] Handle the case where a window doesn't have a title set (flutter/flutter#191767) 2026-08-26 [email protected] [Android] Remove old `InputType` constructor from embedding (flutter/flutter#191244) 2026-08-26 [email protected] Roll Skia from 244a6a0f8f92 to b5465d7b0b77 (19 revisions) (flutter/flutter#191810) 2026-08-26 [email protected] Tolerate floating-point rounding in paintImage centerSlice assertion (flutter/flutter#185789) 2026-08-26 [email protected] Fixes translated bounded blurs (flutter/flutter#191615) 2026-08-26 [email protected] Roll Fuchsia Linux SDK from MstTWE1RDOT-RnrtH... to qjOQi-zAgu_tADorh... (flutter/flutter#191769) 2026-08-26 [email protected] Lerp HSVColor and HSLColor hue along the shortest arc (flutter/flutter#191186) 2026-08-26 [email protected] Fix enum instances comparison to use `equality ==` since dart has the correct behavior now (flutter/flutter#191537) 2026-08-26 [email protected] Switches windows to opengles 3 (flutter/flutter#191516) 2026-08-26 [email protected] Roll Dart SDK from 7739e8602bc1 to cb8a4e1a0fbb (1 revision) (flutter/flutter#191784) 2026-08-26 [email protected] iOS,macOS: Check viewType before creating a platform view (flutter/flutter#191777) 2026-08-26 [email protected] Revert: [tool_tests] Remove bringup from Windows tool_tests_commands_2_2 (flutter/flutter#191793) 2026-08-26 [email protected] refactor(flutter_tools): clean up dead unreferenced declarations (flutter/flutter#191163) 2026-08-26 [email protected] Roll Fuchsia GN SDK from a87CbQSWEjkPUK1ZY... to ZsxUUK2SfA-TrNvb8... (flutter/flutter#191763) 2026-08-26 [email protected] [tool_tests] Remove bringup from Windows tool_tests_commands_2_2 (flutter/flutter#191732) 2026-08-25 [email protected] Remove legacy gen_defaults analyze checks (flutter/flutter#191629) 2026-08-25 [email protected] Refactors `try` to avoid `unawaited_return_in_try_block` case (flutter/flutter#191129) 2026-08-25 [email protected] Roll Dart SDK from 8996935d3d0a to 7739e8602bc1 (1 revision) (flutter/flutter#191754) ...
fixes #184447
before
after
Pre-launch Checklist
///).If you need help, consider asking for advice on the #hackers-new channel on Discord.
If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance.
Note: The Flutter team is currently trialing the use of Gemini Code Assist for GitHub. Comments from the
gemini-code-assistbot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed.