Skip to content

Don't pass bounds to saveLayer call when painting ImageFilter#181353

Merged
auto-submit[bot] merged 1 commit intoflutter:masterfrom
harryterkelsen:skwasm-fix-imagefilter-tilemode
Jan 28, 2026
Merged

Don't pass bounds to saveLayer call when painting ImageFilter#181353
auto-submit[bot] merged 1 commit intoflutter:masterfrom
harryterkelsen:skwasm-fix-imagefilter-tilemode

Conversation

@harryterkelsen
Copy link
Contributor

This causes the filter to apply incorrectly with certain TileModes in Skwasm.

Fixes #178028

Pre-launch Checklist

If you need help, consider asking for advice on the #hackers-new channel on Discord.

Note: The Flutter team is currently trialing the use of Gemini Code Assist for GitHub. Comments from the gemini-code-assist bot 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.

This causes the filter to apply incorrectly with certain TileModes
in Skwasm
@github-actions github-actions bot added engine flutter/engine related. See also e: labels. platform-web Web applications specifically labels Jan 23, 2026
Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request addresses an issue where ImageFilter was not being applied correctly with certain TileModes in Skwasm. The fix involves passing null for the bounds parameter to saveLayer when painting an ImageFilter, which required making the bounds parameter nullable in NWayCanvas.saveLayer. A new golden test is added to verify the fix for ImageFilter.blur with TileMode.clamp.

@flutter-dashboard
Copy link

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 package:flutter.

Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing.

Changes reported for pull request #181353 at sha 739c640

@flutter-dashboard flutter-dashboard bot added the will affect goldens Changes to golden files label Jan 23, 2026
@mdebbar mdebbar self-requested a review January 23, 2026 20:16
@mdebbar mdebbar removed their assignment Jan 23, 2026
@mdebbar
Copy link
Contributor

mdebbar commented Jan 23, 2026

One of the framework goldens (here) is failing and it could be a legit regression:

✅ macOS ✅ CanvasKit
image image
⚠️ Skwasm (before) ⚠️ Skwasm (after)
image image

It looks like some parts of the clipping were fixed, and some other parts broke? (you may need to open the images at full size to see it).

@harryterkelsen
Copy link
Contributor Author

@mdebbar Actually, I think the golden changes are improvements across the board.

It only looks like regressions compared to the goldens they are now "closest" to (the ones from the native linux engine). If you look at what the goldens used to be (by clicking "diff" next to the old commits) then this is definitely an improvement with clipping on ImageFilter. However, there is definitely a lingering bug as you can see in the top corner of the Skwasm golden for "widgets.image_filter_matrix_offset" being clipped off, but it's still definitely an improvement over the old Skwasm golden for this test, which had the entire top black bar clipped off.

CanvasKit (before) CanvasKit (after)
canvaskit_bitmaprotate_before canvaskit_bitmaprotate_after
image_filter_matrix_before image_filter_matrix_after
Skwasm (before) Skwasm (after)
skwasm_before_matrix_offset skwasm_after_matrix_offset
skwasm_before_transform canvaskit_bitmaprotate_after
skwasm_matrix_before skwasm_matrix_after

Copy link
Contributor

@mdebbar mdebbar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for looking into it!

@harryterkelsen harryterkelsen added the autosubmit Merge PR when tree becomes green via auto submit App label Jan 27, 2026
@auto-submit auto-submit bot added this pull request to the merge queue Jan 28, 2026
Merged via the queue into flutter:master with commit 1205220 Jan 28, 2026
180 of 181 checks passed
@flutter-dashboard flutter-dashboard bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Jan 28, 2026
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 28, 2026
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 28, 2026
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 28, 2026
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 28, 2026
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 29, 2026
auto-submit bot pushed a commit to flutter/packages that referenced this pull request Jan 29, 2026
Roll Flutter from dfd92b773219 to da72d5936d69 (39 revisions)

flutter/flutter@dfd92b7...da72d59

2026-01-29 98614782+auto-submit[bot]@users.noreply.github.com Reverts "[ Tool / Engine ] Cleanup x86 references (#181152)" (flutter/flutter#181643)
2026-01-29 engine-flutter-autoroll@skia.org Roll Skia from 174db42b7300 to 89df65f8324c (2 revisions) (flutter/flutter#181636)
2026-01-29 59215665+davidhicks980@users.noreply.github.com [material/menu_anchor.dart] Add animations to MenuAnchor. (flutter/flutter#176494)
2026-01-28 engine-flutter-autoroll@skia.org Roll Skia from 8e09f8a82251 to 174db42b7300 (6 revisions) (flutter/flutter#181627)
2026-01-28 31859944+LongCatIsLooong@users.noreply.github.com Send statusBarTouch events via dedicated messages (flutter/flutter#179643)
2026-01-28 git@reb0.org test: Improve DropdownMenuFormField tests (flutter/flutter#181369)
2026-01-28 evanwall@buffalo.edu Account for vec3 padding in Metal (flutter/flutter#181563)
2026-01-28 bkonyi@google.com [ Tool / Engine ] Cleanup x86 references (flutter/flutter#181152)
2026-01-28 ybz975218925@gmail.com Fix the issue on macOS where, after a hot restart with multiple windows, unresponsive windows are left behind. (flutter/flutter#180287)
2026-01-28 engine-flutter-autoroll@skia.org Roll Skia from 675444e94bc9 to 8e09f8a82251 (7 revisions) (flutter/flutter#181606)
2026-01-28 engine-flutter-autoroll@skia.org Roll Packages from e37af11 to 1cb2148 (5 revisions) (flutter/flutter#181608)
2026-01-28 codefu@google.com fix: swap app and engine version in vk::ApplicationInfo (flutter/flutter#181432)
2026-01-28 30870216+gaaclarke@users.noreply.github.com Adds impeller backend to skia gold client (flutter/flutter#181503)
2026-01-28 mdebbar@google.com Remove chrome_and_driver dependency where it's not needed (flutter/flutter#178174)
2026-01-28 codefu@google.com chore: Windows_mokey basic_material_app_win__compile !bringup (flutter/flutter#180985)
2026-01-28 116356835+AbdeMohlbi@users.noreply.github.com Fix generating both `settings.gradle` and `settings.gradle.kts` for plugins (flutter/flutter#181592)
2026-01-28 engine-flutter-autoroll@skia.org Roll Skia from 6614f89de521 to 675444e94bc9 (3 revisions) (flutter/flutter#181587)
2026-01-28 104349824+huycozy@users.noreply.github.com Fix `todayBorder` todayBorder color is incorrectly overridden by `todayForegroundColor` in CalendarDatePicker (flutter/flutter#178792)
2026-01-28 engine-flutter-autoroll@skia.org Roll Skia from 8f1695a4b328 to 6614f89de521 (2 revisions) (flutter/flutter#181583)
2026-01-28 34465683+rkishan516@users.noreply.github.com feat: add RoundedSuperellipseInputBorder (flutter/flutter#177220)
2026-01-28 engine-flutter-autoroll@skia.org Roll Dart SDK from 38e351498549 to f10dcbfca98f (2 revisions) (flutter/flutter#181582)
2026-01-28 engine-flutter-autoroll@skia.org Roll Skia from f424d58e37a3 to 8f1695a4b328 (6 revisions) (flutter/flutter#181577)
2026-01-28 116356835+AbdeMohlbi@users.noreply.github.com Remove unused code paths  in `PlatformViewsController.java` (flutter/flutter#181393)
2026-01-28 34465683+rkishan516@users.noreply.github.com feat: add onEnd to AnimatedCrossFade (flutter/flutter#181455)
2026-01-28 1961493+harryterkelsen@users.noreply.github.com Don't pass bounds to saveLayer call when painting ImageFilter (flutter/flutter#181353)
2026-01-28 luanpotter27@gmail.com test: Clarify failure messages on gestures/debug_test.dart (flutter/flutter#181109)
2026-01-27 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from akraNGn2lw4T1msgZ... to adhoq9ouVRh0xzkm3... (flutter/flutter#181571)
2026-01-27 engine-flutter-autoroll@skia.org Roll Dart SDK from 4c7cb0a1d07d to 38e351498549 (4 revisions) (flutter/flutter#181570)
2026-01-27 ahmedsameha1@gmail.com Make sure that an AnimatedPadding doesn't crash in 0x0 environment (flutter/flutter#181235)
2026-01-27 ahmedsameha1@gmail.com Make sure that an ImageFiltered doesn't crash at 0x0 environment (flutter/flutter#181067)
2026-01-27 magder@google.com Marks firebase_release_smoke_test to be unflaky (flutter/flutter#181308)
2026-01-27 kazbek.sultanov.doc@gmail.com Fix remove material import box decoration test (flutter/flutter#181253)
2026-01-27 engine-flutter-autoroll@skia.org Roll Skia from c2754838b077 to f424d58e37a3 (8 revisions) (flutter/flutter#181564)
2026-01-27 ahmedsameha1@gmail.com Make sure that an AnimatedAlign doesn't crash in 0x0 environment (flutter/flutter#181361)
2026-01-27 ahmedsameha1@gmail.com Make sure that an ImageIcon doesn't crash in 0x0 environment (flutter/flutter#181099)
2026-01-27 ahmedsameha1@gmail.com Make sure that an AnimatedContainer doesn't crash in 0x0 environment (flutter/flutter#181198)
2026-01-27 ahmedsameha1@gmail.com Make sure that an AnimatedRotation doesn't crash in 0x0 environment (flutter/flutter#181486)
2026-01-27 ahmedsameha1@gmail.com Make sure that an AnimatedPositionedDirectional doesn't crash in 0x0 … (flutter/flutter#181451)
2026-01-27 jacksongardner@google.com Merge changelog for 3.38.8. (flutter/flutter#181558)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages
Please CC bmparr@google.com,stuartmorgan@google.com on the revert to ensure that a human
is aware of the problem.

...
flutter-zl pushed a commit to flutter-zl/flutter that referenced this pull request Feb 10, 2026
…r#181353)

This causes the filter to apply incorrectly with certain TileModes in
Skwasm.

Fixes flutter#178028

## 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].

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot 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.

<!-- 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

engine flutter/engine related. See also e: labels. platform-web Web applications specifically will affect goldens Changes to golden files

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] SKWasm Blur doesn't work

2 participants

Comments