Skip to content

Remove BorderMaskBlur - #194508

Merged
auto-submit[bot] merged 1 commit into
flutter:masterfrom
walley892:remove_dead_shaders
Oct 16, 2026
Merged

auto-submit[bot] merged 1 commit into
flutter:masterfrom
walley892:remove_dead_shaders

Conversation

@walley892

@walley892 walley892 commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Removes the BorderMaskBlur pipeline and associated shaders.

This is created only in CreateMaskBlur when is_solid_color=false. The three argument CreateMaskBlur is only called in canvas.cc, and hardcodes is_solid_color=true.

std::shared_ptr<FilterContents> filter =

This shader looks like it was used in the olden days, but has been deadcode since 2024.

Part of #194511

Pre-launch Checklist

  • I read the [Contributor Guide] and followed the process outlined there for submitting PRs.
  • I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools.
  • I read the [Tree Hygiene] wiki page, which explains my responsibilities.
  • I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement].
  • I signed the [CLA].
  • I listed at least one issue that this PR fixes in the description above.
  • I updated/added relevant in-code documentation (doc comments with ///).
  • If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed).
  • I added new tests to check the change I am making, or this PR is [test-exempt].
  • I followed the [breaking change policy] and added [Data Driven Fixes] where supported.
  • All existing and new tests are passing.

@walley892

Copy link
Copy Markdown
Contributor Author

/gemini review

@walley892 walley892 added the CICD Run CI/CD label Oct 15, 2026
@github-actions github-actions Bot added engine flutter/engine related. See also e: labels. e: impeller Impeller rendering backend issues and features requests labels Oct 15, 2026

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

Copy link
Copy Markdown
Contributor

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 removes the BorderMaskBlur filter, its associated shader, pipeline, and tests from Impeller, simplifying mask blur operations to always use a Gaussian blur. Feedback on the changes suggests reusing the already computed blur_coverage variable in entity_unittests.cc instead of redundantly calling GetCoverage again.

Comment on lines +1091 to +1094
std::optional<Rect> blur_coverage = blur->GetCoverage(entity);
if (blur_coverage.has_value()) {
std::unique_ptr<Geometry> geom = Geometry::MakeFillPath(
flutter::DlPath::MakeRect(blur->GetCoverage(entity).value()));

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

The coverage of the blur filter is already computed and stored in blur_coverage. Calling blur->GetCoverage(entity).value() again inside the if block is redundant and inefficient. Use blur_coverage.value() instead.

Suggested change
std::optional<Rect> blur_coverage = blur->GetCoverage(entity);
if (blur_coverage.has_value()) {
std::unique_ptr<Geometry> geom = Geometry::MakeFillPath(
flutter::DlPath::MakeRect(blur->GetCoverage(entity).value()));
std::optional<Rect> blur_coverage = blur->GetCoverage(entity);
if (blur_coverage.has_value()) {
std::unique_ptr<Geometry> geom = Geometry::MakeFillPath(
flutter::DlPath::MakeRect(blur_coverage.value()));

@walley892
walley892 requested a review from gaaclarke October 15, 2026 23:04
@walley892
walley892 marked this pull request as ready for review October 15, 2026 23:30

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

Copy link
Copy Markdown
Contributor

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 removes the BorderMaskBlur filter, its associated shader, pipeline, and unit tests from the Impeller engine, consolidating mask blur operations to always use Gaussian blur. Feedback on the changes suggests avoiding a redundant call to GetCoverage in the unit tests by reusing the already computed blur_coverage variable.

Comment on lines +1091 to +1094
std::optional<Rect> blur_coverage = blur->GetCoverage(entity);
if (blur_coverage.has_value()) {
std::unique_ptr<Geometry> geom = Geometry::MakeFillPath(
flutter::DlPath::MakeRect(blur->GetCoverage(entity).value()));

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

Avoid calling blur->GetCoverage(entity) again inside DlPath::MakeRect since the result has already been computed and stored in blur_coverage.

Suggested change
std::optional<Rect> blur_coverage = blur->GetCoverage(entity);
if (blur_coverage.has_value()) {
std::unique_ptr<Geometry> geom = Geometry::MakeFillPath(
flutter::DlPath::MakeRect(blur->GetCoverage(entity).value()));
std::optional<Rect> blur_coverage = blur->GetCoverage(entity);
if (blur_coverage.has_value()) {
std::unique_ptr<Geometry> geom = Geometry::MakeFillPath(
flutter::DlPath::MakeRect(blur_coverage.value()));

@gaaclarke gaaclarke left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

lgtm 🔪

@walley892 walley892 added the autosubmit Merge PR when tree becomes green via auto submit App label Oct 16, 2026
@auto-submit auto-submit Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Oct 16, 2026
@auto-submit

auto-submit Bot commented Oct 16, 2026

Copy link
Copy Markdown
Contributor

autosubmit label was removed for flutter/flutter/194508, because - The status or check suite Mac_arm64_verify_binaries has failed. Please fix the issues identified (or deflake) before re-applying this label.

@walley892 walley892 added the autosubmit Merge PR when tree becomes green via auto submit App label Oct 16, 2026
@auto-submit
auto-submit Bot added this pull request to the merge queue Oct 16, 2026
Merged via the queue into flutter:master with commit 34540e9 Oct 16, 2026
39 of 40 checks passed
@flutter-dashboard flutter-dashboard Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Oct 16, 2026
vashworth pushed a commit to vashworth/flutter that referenced this pull request Oct 16, 2026
…r#194540)

DlComplexityPathReceiver in dl_complexity_helper.cc:32-35 did not
initialize its line_verb_count, quad_verb_count, conic_verb_count, and
cubic_verb_count fields, causing
ComplexityCalculatorHelper::CalculatePathComplexity to read
uninitialized stack memory when computing path complexity.
In DisplayListComplexity.DrawShadow, removing BorderMaskBlur (flutter#194508)
shifted symbol addresses in display_list_unittests such that the
uninitialized stack values in Linux linux_unopt caused the computed
complexity score for display_list_conic to wrap to 0, failing
ASSERT_NE(calculator->Compute(display_list_conic.get()), 0u).
Zero-initializing the verb counters should fix the bug.

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [AI contribution guidelines] and understand my
responsibilities, or I am not using AI tools.
- [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 in-code documentation (doc comments with
`///`).
- [x] If this PR introduces a new feature or capability, I created and
linked a website documentation issue or PR in [flutter/website] (or
verified none is needed).
- [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.
@eyebrowsoffire eyebrowsoffire added the revert Autorevert PR (with "Reason for revert:" comment) label Oct 16, 2026
@flutteractionsbot

Copy link
Copy Markdown
Contributor

A reason for requesting a revert of flutter/flutter/194508 could not be found or the reason was not properly formatted. Begin a comment with 'Reason for revert:' to tell the bot why this issue is being reverted.

@flutteractionsbot flutteractionsbot removed the revert Autorevert PR (with "Reason for revert:" comment) label Oct 16, 2026
@eyebrowsoffire

Copy link
Copy Markdown
Contributor

@gaaclarke

Copy link
Copy Markdown
Member

there is a fix already landing

@eyebrowsoffire eyebrowsoffire added the revert Autorevert PR (with "Reason for revert:" comment) label Oct 16, 2026
@gaaclarke

Copy link
Copy Markdown
Member

#194540

@eyebrowsoffire

Copy link
Copy Markdown
Contributor

there is a fix already landing

Ah oops. Well I'll close the revert then.

@eyebrowsoffire eyebrowsoffire removed the revert Autorevert PR (with "Reason for revert:" comment) label Oct 16, 2026
@gaaclarke

Copy link
Copy Markdown
Member

please see sheriff chat for discussion

@flutteractionsbot

Copy link
Copy Markdown
Contributor

Successfully created revert PR: #194567

auto-submit Bot pushed a commit to flutter/packages that referenced this pull request Oct 16, 2026
flutter/flutter@5c7e45a...a3d71d8

2026-10-16 [email protected] 0 Initialize variables in the DlComplexityPathReceiver helper (flutter/flutter#194540)
2026-10-16 [email protected] Roll Fuchsia Test Scripts from V-qQL4158Nw6L-QLi... to 2T18KC7-LDQtmQiLP... (flutter/flutter#194527)
2026-10-16 [email protected] Remove BorderMaskBlur (flutter/flutter#194508)
2026-10-16 [email protected] Roll Skia from a577264dc087 to 470b8816a261 (1 revision) (flutter/flutter#194526)
2026-10-16 [email protected] [ios] Use DFS traversal to find engines of a scene automatically (rather than manually manage the engines list) (flutter/flutter#192457)
2026-10-16 [email protected] [Skia][DisplayList] Map local bounds through the local matrix in DlLocalMatrixImageFilter (flutter/flutter#193963)
2026-10-16 [email protected] [framework] Fix avoid_setters_without_getters warnings on mixin declarations  (flutter/flutter#193856)
2026-10-16 [email protected] Roll Dart SDK from 84686ea04815 to 55a734a01fb1 (3 revisions) (flutter/flutter#194522)
2026-10-16 [email protected] Roll Skia from d131b7789482 to a577264dc087 (7 revisions) (flutter/flutter#194514)
2026-10-16 [email protected] Roll Fuchsia GN SDK from PDJz3b3CL31uoLOkD... to kFdyRnojbVy0cxvRZ... (flutter/flutter#194510)
2026-10-16 [email protected] Roll GN to f9eca75ae554 (flutter/flutter#194471)
2026-10-16 [email protected] refactor(flutter_tools): migrate RunCommand and RunCommandBase to OptionDescriptor and OptionBundle (flutter/flutter#194362)
2026-10-15 [email protected] refactor(flutter_tools): finish TestCommand OptionDescriptor and OptionBundle migration (flutter/flutter#194361)
2026-10-15 [email protected] [iOS][a11y] Fix VoiceOver announcement for unfocused password fields (flutter/flutter#192851)
2026-10-15 [email protected] Roll pub packages (flutter/flutter#194477)
2026-10-15 [email protected] refactor(flutter_tools): finish DriveCommand OptionDescriptor migration (flutter/flutter#194360)
2026-10-15 [email protected] [flutter_tools] Roll package:vm_service to 15.4.0 (flutter/flutter#194467)
2026-10-15 [email protected] refactor(flutter_tools): migrate AttachCommand to OptionDescriptor and OptionBundle (flutter/flutter#194359)
2026-10-15 [email protected] [flutter_tools] Inject dependencies into update-packages and package_map (flutter/flutter#194046)
2026-10-15 [email protected] [impeller] parallelize opengles shader compiles (flutter/flutter#194022)
2026-10-15 [email protected] Roll pub packages (flutter/flutter#194469)
2026-10-15 [email protected] Restrict web dev server to loopback by default (flutter/flutter#187595)
2026-10-15 [email protected] Roll Packages from a1ed23c to da40eaf (33 revisions) (flutter/flutter#194459)
2026-10-15 [email protected] [web] Render soft hyphens on Skwasm (flutter/flutter#193850)
2026-10-15 [email protected] refactor(flutter_tools): migrate AssembleCommand to OptionDescriptor (flutter/flutter#194358)
2026-10-15 [email protected] [windows] Add OpenGL golden test against ANGLE at D3D11 feature level 10_0 (flutter/flutter#194321)

If this roll has caused a breakage, revert this CL and set the roller
to dry run mode using the controls here:
https://autoroll.skia.org/r/flutter-packages
Please CC [email protected],[email protected] on the revert to ensure that a human
is aware of the problem.

To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
suryaKommana2662 pushed a commit to suryaKommana2662/flutter that referenced this pull request Oct 29, 2026
Removes the BorderMaskBlur pipeline and associated shaders. 

This is created only in `CreateMaskBlur` when `is_solid_color=false`.
The three argument `CreateMaskBlur` is only called in canvas.cc, and
hardcodes `is_solid_color=true`.
https://github.com/flutter/flutter/blob/669265bc0e5c37c71a9f355743ef0efa6776a01e/engine/src/flutter/impeller/display_list/canvas.cc#L2225

This shader looks like it was used in the olden days, but has been
deadcode since 2024.

Part of flutter#194511

## Pre-launch Checklist

- [ ] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [ ] I read the [AI contribution guidelines] and understand my
responsibilities, or I am not using AI tools.
- [ ] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [ ] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [ ] I signed the [CLA].
- [ ] I listed at least one issue that this PR fixes in the description
above.
- [ ] I updated/added relevant in-code documentation (doc comments with
`///`).
- [ ] If this PR introduces a new feature or capability, I created and
linked a website documentation issue or PR in [flutter/website] (or
verified none is needed).
- [ ] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [ ] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [ ] All existing and new tests are passing.
suryaKommana2662 pushed a commit to suryaKommana2662/flutter that referenced this pull request Oct 29, 2026
…r#194540)

DlComplexityPathReceiver in dl_complexity_helper.cc:32-35 did not
initialize its line_verb_count, quad_verb_count, conic_verb_count, and
cubic_verb_count fields, causing
ComplexityCalculatorHelper::CalculatePathComplexity to read
uninitialized stack memory when computing path complexity.
In DisplayListComplexity.DrawShadow, removing BorderMaskBlur (flutter#194508)
shifted symbol addresses in display_list_unittests such that the
uninitialized stack values in Linux linux_unopt caused the computed
complexity score for display_list_conic to wrap to 0, failing
ASSERT_NE(calculator->Compute(display_list_conic.get()), 0u).
Zero-initializing the verb counters should fix the bug.

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [AI contribution guidelines] and understand my
responsibilities, or I am not using AI tools.
- [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 in-code documentation (doc comments with
`///`).
- [x] If this PR introduces a new feature or capability, I created and
linked a website documentation issue or PR in [flutter/website] (or
verified none is needed).
- [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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CICD Run CI/CD e: impeller Impeller rendering backend issues and features requests engine flutter/engine related. See also e: labels.

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

4 participants