Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: flutter/flutter
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: master@{1day}
Choose a base ref
...
head repository: flutter/flutter
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: master
Choose a head ref
  • 20 commits
  • 82 files changed
  • 12 contributors

Commits on May 11, 2026

  1. Roll Packages from 92552b16bcc1 to 19ec8b861676 (4 revisions) (#186350)

    flutter/packages@92552b1...19ec8b8
    
    2026-05-11 49699333+dependabot[bot]@users.noreply.github.com Bump
    actions/labeler from 6.0.1 to 6.1.0 in the all-github-actions group
    (flutter/packages#11686)
    2026-05-08 [email protected] [flutter_svg] add imageBuilder
    property to SvgPicture (flutter/packages#11615)
    2026-05-08 [email protected] [material_ui, cupertino_ui, infra]
    Support skipping golden files for the design migration
    (flutter/packages#11649)
    2026-05-08 [email protected] [video_player] Add missing
    swift_version to podspec (flutter/packages#11670)
    
    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-flutter-autoroll
    Please CC [email protected] on the revert to ensure that a
    human
    is aware of the problem.
    
    To file a bug in Flutter:
    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
    engine-flutter-autoroll authored May 11, 2026
    Configuration menu
    Copy the full SHA
    1072bb6 View commit details
    Browse the repository at this point in the history
  2. Roll Skia from 2514f6b5f92b to 32281401997e (1 revision) (#186349)

    https://skia.googlesource.com/skia.git/+log/2514f6b5f92b..32281401997e
    
    2026-05-11 [email protected] Roll
    vulkan-deps from e069d6e7382e to 4391cb02adc5 (1 revision)
    
    If this roll has caused a breakage, revert this CL and stop the roller
    using the controls here:
    https://autoroll.skia.org/r/skia-flutter-autoroll
    Please CC
    [email protected],[email protected],[email protected] on the
    revert to ensure that a human
    is aware of the problem.
    
    To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry
    To file a bug in Flutter:
    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
    engine-flutter-autoroll authored May 11, 2026
    Configuration menu
    Copy the full SHA
    aba6abf View commit details
    Browse the repository at this point in the history
  3. Remove currentMainUri from generateMainDartWithPluginRegistrant (#…

    …185907)
    
    Fixes #185600.
    
    `currentMainUri` was unused.
    
    ## 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.
    - [ ] I updated/added relevant documentation (doc comments with `///`).
    - [ ] 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.
    Mr-Pepe authored May 11, 2026
    Configuration menu
    Copy the full SHA
    35ed55b View commit details
    Browse the repository at this point in the history
  4. Use Xcode's LLDB (#186273)

    Switches `lldb` to `xcrun lldb`. Xcode's `lldb` seems to be optimized
    and has better performance.
    
    Towards #185762
    
    ## 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 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].
    
    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](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
    [AI contribution guidelines]:
    https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines
    [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
    vashworth authored May 11, 2026
    Configuration menu
    Copy the full SHA
    3ee0842 View commit details
    Browse the repository at this point in the history
  5. Convert rebuilding-flutter-tool script to dart (#185089)

    Converts a bash script to dart.
    
    <details>
    <summary>Example</summary>
    
    ```
    # Chat Conversation
    
    Note: _This is purely the output of the chat conversation and does not contain any raw data, codebase snippets, etc. used to generate the output._
    
    ### User Input
    
    rebuild cli
    
    *Viewed [SKILL.md](file:///Users/vashworth/Development/flutter/.agents/skills/rebuilding-flutter-tool/SKILL.md) *
    
    *User accepted the command `dart .agents/skills/rebuilding-flutter-tool/scripts/rebuild.dart`*
    
    *Checked command status*
    
    ### Planner Response
    
    **Flutter tool rebuilt successfully!**
    ```
    
    </details>
    
    ## 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].
    - [ ] 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].
    
    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](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
    [AI contribution guidelines]:
    https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines
    [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
    vashworth authored May 11, 2026
    Configuration menu
    Copy the full SHA
    496e76f View commit details
    Browse the repository at this point in the history
  6. Show SwiftPM warnings right before iOS/macOS build (#185984)

    Currently, we show SwiftPM warnings during
    `ensureReadyForPlatformSpecificTooling`, which can happen while
    targeting any build (such as targeting an Android device on a macOS
    host). We should only show SwiftPM warnings when building for iOS or
    macOS, so we move the logic to be called right before the build.
    
    Fixes #185775.
    
    ## 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 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].
    
    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](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
    [AI contribution guidelines]:
    https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines
    [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
    vashworth authored May 11, 2026
    Configuration menu
    Copy the full SHA
    927c1a6 View commit details
    Browse the repository at this point in the history
  7. Roll Skia from 32281401997e to 91d3c1e730af (4 revisions) (#186368)

    https://skia.googlesource.com/skia.git/+log/32281401997e..91d3c1e730af
    
    2026-05-11 [email protected] Make SkYUVAPixmap comments match behavior
    2026-05-11 [email protected] Manually created dawn roll.
    2026-05-11
    recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com
    Roll recipe dependencies (trivial).
    2026-05-11 [email protected] [graphite] Add Sparse Strips tiler
    
    If this roll has caused a breakage, revert this CL and stop the roller
    using the controls here:
    https://autoroll.skia.org/r/skia-flutter-autoroll
    Please CC
    [email protected],[email protected],[email protected] on the
    revert to ensure that a human
    is aware of the problem.
    
    To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry
    To file a bug in Flutter:
    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
    engine-flutter-autoroll authored May 11, 2026
    Configuration menu
    Copy the full SHA
    b85162a View commit details
    Browse the repository at this point in the history
  8. docs: fix doubled-word typos in comments (#186320)

    ## Summary
    
    Removes accidentally repeated words ("the the", "is is") in dartdoc and
    inline comments across lutter and lutter_tools. Comment-only follow-up
    to #186319.
    
    No code, public API, or behavior is touched. The fix is mechanical and
    was verified by re-grepping the modified files.
    
    ## Changes
    
    - `packages/flutter/lib/src/widgets/text_selection.dart`: `the the start
    handle` -> `the start handle`; `the the end handle` -> `the end handle`
    - `packages/flutter_tools/lib/src/ios/lldb.dart`: dartdoc on
    `_LLDBProcess` — `[Process] that is is running LLDB` -> `[Process] that
    is running LLDB`
    -
    `packages/flutter_tools/test/host_cross_arch.shard/ios_content_validation_test.dart`:
    `This is is the default for CocoaPods` -> `This is the default for
    CocoaPods`
    
    ## Tests
    
    No tests added. This is a comment-only change with no executable lines
    touched. Verified locally by grepping the touched files for residual
    `the the` / `is is` / `to to` / similar doubled tokens — none remain.
    
    ## Notes for maintainers
    
    - Pre-launch checklist read; no engineering doc rewrite needed
    (docs-only).
    - No Material or Cupertino source paths are modified, so the active code
    freeze is not impacted.
    - Authored by a human (Nicoreia) with AI tooling assistance, in line
    with Flutter's AI contribution policy: scope is small, mechanical, and
    reviewable; no generated logic.
    
    ## Pre-launch Checklist
    
    - [x] I read the [Contributor Guide] and followed the process outlined
    there for submitting PRs.
    - [x] I read the [Tree Hygiene] page and followed its process for
    submitting this PR.
    - [x] I read and followed the [Flutter Style Guide].
    - [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] All existing and new tests are passing.
    
    [Contributor Guide]:
    https://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md#overview
    [Tree Hygiene]:
    https://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md
    [Flutter Style Guide]:
    https://github.com/flutter/flutter/blob/master/docs/contributing/Style-guide-for-Flutter-repo.md
    [CLA]: https://cla.developers.google.com/
    Nicoreia authored May 11, 2026
    Configuration menu
    Copy the full SHA
    4613306 View commit details
    Browse the repository at this point in the history
  9. [ImpellerC] Write a depfile when --shader-bundle is in use (#186341)

    Fixes #186340
    
    When `impellerc` is invoked with both `--depfile=<path>` and
    `--shader-bundle=<json>`, the depfile is silently dropped.
    `impellerc_main.cc` takes an early return into
    `GenerateShaderBundle(switches)` when `--shader-bundle` is set, and the
    depfile-writing branch only runs on the non-bundle path. Build systems
    consuming impellerc for shader bundles (notably Dart's `hooks`
    framework, which `flutter_gpu_shaders`'s `buildShaderBundleJson` goes
    through) have no way to discover which source files and transitive
    `#include` headers contributed to the produced bundle, and therefore
    cannot rerun the bundle build when any input changes. The user-visible
    effect is that editing a `.frag` referenced by a shader bundle manifest
    does not invalidate the cached bundle output until `flutter clean` is
    run, which makes shader iteration painful and confuses new users.
    
    This change threads an optional `std::set<std::string>*
    out_dependencies` parameter through `GenerateShaderBundleFlatbuffer`,
    `GenerateShaderFB`, and `GenerateShaderBackendFB`. Each `Compiler`
    instance reports its `GetIncludedFileNames()` plus the primary shader
    source file into the set, which dedupes naturally across the five
    target-platform compiles per shader. After successful bundle generation,
    `GenerateShaderBundle` emits a Ninja-style depfile when `--depfile` is
    set, mirroring the format produced by `Compiler::CreateDepfileContents`
    on the single-shader compile path.
    
    Manually verified end to end against a real bundle whose only shader
    transitively `#include`s a header: the resulting depfile lists both
    files. The new unit tests cover both the explicit-collector path (set
    contains the primary source files) and the null-collector path (callers
    that don't pass a set get exactly today's behaviour). Existing
    shader-bundle unit tests continue to pass unchanged.
    
    ## 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 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.
    
    [Contributor Guide]:
    https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
    [AI contribution guidelines]:
    https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines
    [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/
    [breaking change policy]:
    https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
    [Data Driven Fixes]:
    https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
    bdero authored May 11, 2026
    Configuration menu
    Copy the full SHA
    037b916 View commit details
    Browse the repository at this point in the history
  10. [ci] update no-response workflow to also look for old label name in e… (

    #186373)
    
    …vents
    
    <!--
    Thanks for filing a pull request!
    Reviewers are typically assigned within a week of filing a request.
    To learn more about code review, see our documentation on Tree Hygiene:
    https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
    -->
    
    fixes #186223
    
    ## 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 documentation (doc comments with `///`).
    - [ ] 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.
    
    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](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
    [AI contribution guidelines]:
    https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines
    [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
    chunhtai authored May 11, 2026
    Configuration menu
    Copy the full SHA
    a77a280 View commit details
    Browse the repository at this point in the history

Commits on May 12, 2026

  1. [Android] Propagate --enable-flutter-gpu Intent extra to engine args (#…

    …186298)
    
    Fixes #186297. `flutter run --enable-flutter-gpu` now
    opts the app into Flutter GPU on Android, matching the documented
    behavior on iOS and macOS.
    
    The flutter tool already sends `--ez enable-flutter-gpu true` as an
    Intent boolean extra to the launched activity
    (`packages/flutter_tools/lib/src/android/android_device.dart:668`), the
    same way it ships `enable-impeller`, `enable-vulkan-validation`,
    `enable-hcpp-and-surface-control`, etc.
    `FlutterActivity.getFlutterShellArgs()` calls
    `FlutterShellArgs.fromIntent(getIntent())` to convert those extras into
    engine arguments, but `fromIntent` is a hardcoded list of intent-key to
    engine-arg conversions, and the `enable-flutter-gpu` case was never
    added. So the extra was silently dropped on the floor, no
    `--enable-flutter-gpu` ever reached
    `FlutterLoader.ensureInitializationComplete`, and
    `settings.enable_flutter_gpu` stayed `false`. The runtime check in
    `lib/gpu/context.cc` then threw the manifest-required exception, even
    though its own error message explicitly says the CLI flag is one of the
    valid opt-ins.
    
    This PR adds two new constants and one new branch in
    `FlutterShellArgs.fromIntent`:
    
    ```java
    public static final String ARG_KEY_ENABLE_FLUTTER_GPU = "enable-flutter-gpu";
    public static final String ARG_ENABLE_FLUTTER_GPU = "--enable-flutter-gpu";
    
    // In fromIntent, alongside the other boolean extras:
    if (intent.getBooleanExtra(ARG_KEY_ENABLE_FLUTTER_GPU, false)) {
      args.add(ARG_ENABLE_FLUTTER_GPU);
    }
    ```
    
    Plus two unit tests covering the present-and-absent cases.
    
    `FlutterShellArgs` is marked deprecated in favor of `FlutterEngineFlags`
    (per the pending intent-deprecation work in #180686). The fix is kept in
    `FlutterShellArgs` because (1) `FlutterShellArgs.fromIntent` is still
    the operative path for converting tool-side Intent extras into engine
    args, and (2) `FlutterEngineFlags.getFlagFromIntentKey` is currently
    only used to log a deprecation warning, not to actually convert the
    extras. When #180686 lands and the conversion moves entirely to
    `FlutterEngineFlags`, this hardcoded entry will go away with the rest of
    `FlutterShellArgs`.
    
    `FlutterShellArgsTest.itPropagatesEnableFlutterGpuFromIntent` and
    `itDoesNotPropagateEnableFlutterGpuWhenAbsent` lock in the behavior at
    the unit level. Manually verified on a Pixel 10 Pro (Android 16,
    Vulkan/Impeller) with a flutter_scene-based app: with this patch
    applied, `flutter run --enable-flutter-gpu --enable-impeller` no longer
    throws "Flutter GPU must be enabled via the Flutter GPU manifest
    setting", and the `gpu.gpuContext` access proceeds normally.
    
    ## 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 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.
    
    <!-- Links -->
    [Contributor Guide]:
    https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
    [AI contribution guidelines]:
    https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines
    [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/
    [breaking change policy]:
    https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
    [Data Driven Fixes]:
    https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
    bdero authored May 12, 2026
    Configuration menu
    Copy the full SHA
    adcd006 View commit details
    Browse the repository at this point in the history
  2. [Impeller] GLES: lazily allocate texture mip levels on first per-leve…

    …l write (#186302)
    
    `glTexSubImage2D` into a mip level not previously defined by
    `glTexImage2D` raises `GL_INVALID_OPERATION`. Both the lazy slice-init
    in `BlitCopyBufferToTextureCommandGLES::Encode` and
    `TextureGLES::InitializeContentsIfNecessary` only ever allocated level
    0, so any non-zero mip upload aborted with a fatal GL error. The
    pre-existing cubemap path in `InitializeContentsIfNecessary` was also
    broken: it would re-bind a `GL_TEXTURE_CUBE_MAP` handle to
    `GL_TEXTURE_2D` and call `glTexImage2D` on the wrong target, a latent
    crash on the first cubemap sampler bind without a prior face upload.
    
    #185890 depends on this PR.
    
    ## Approach
    
    Per-`(slice, mip_level)` initialization tracking with lazy allocation on
    first write:
    
    1. `slices_initialized_` becomes `std::array<std::bitset<16>, 6>` (six
    cubemap faces by up to 16 mip levels, covering a 32k base dimension).
    2. `InitializeContentsIfNecessary` allocates only the base mip level.
    This is byte-identical to pre-fix behavior on the 2D path, so Impeller's
    snapshot pipeline (`Picture.toImage(generate_mips: true)` ->
    `RenderTargetAllocator::CreateOffscreen[MSAA]` -> render at level 0 ->
    `glGenerateMipmap`) keeps its existing GL footprint. For cubemaps the
    function now correctly binds `GL_TEXTURE_CUBE_MAP` and allocates the
    base level for each of the six face targets.
    3. `BlitCopyBufferToTextureCommandGLES::Encode` allocates the requested
    `(slice, mip_level)` lazily before `glTexSubImage2D`. Per-level uploads
    pay only for the levels they touch, and writes to a level after
    `glGenerateMipmap` (or `MarkContentsInitialized` from the Android
    external-texture path) are skipped because those bits are already set.
    4. `OnSetContents` (the legacy upload path) is updated to use the new
    bit-marking API. Side-effect fix: the old `slices_initialized_ =
    AddOperation(...)` assignment clobbered all six cubemap bits on every
    upload; the new API marks only the face that was actually written.
    
    ## Behavior table
    
    | Code path | Pre-fix | This PR |
    |---|---|---|
    | 2D mip_count=1 (overwhelming majority) | 1 `TexImage2D` | identical |
    | Snapshot path with `generate_mips=true` | 1 `TexImage2D` upfront +
    `glGenerateMipmap` driven implicit allocations | identical |
    | Flutter GPU per-level upload (#185890) | crash (`GL_INVALID_OPERATION`
    on `glTexSubImage2D`) | works; 1 `TexImage2D` per mip on first write |
    | Cubemap face upload via blit | works | identical |
    | Cubemap rebind via `Bind()` before any upload | crash (rebind to
    `GL_TEXTURE_2D` of cube handle) | works; bind to `GL_TEXTURE_CUBE_MAP`
    and allocate face base level |
    
    This PR does not have a dedicated issue: it is a prerequisite bug fix
    for the per-`(mip, slice)` upload path required by #185890, and the
    failure modes (`GL_INVALID_OPERATION` on `glTexSubImage2D`, cubemap
    rebind to wrong target) are documented above. Verified via new
    `BlitCommandGLES` unit tests covering base-level, non-zero-mip,
    repeated-upload, every-mip-on-first-write, and cubemap face cases
    (`MockGLES` wires `glTexImage2D` and `glBindTexture` to the existing
    `MOCK_METHOD` declarations); the full GLES test suite passes locally
    (749 tests); manually confirmed with `flutter_tester_opengles
    --enable-flutter-gpu` against `gpu_test.dart` from #185890 that
    `Texture.overwrite writes to a non-zero mip level` and the cubemap-face
    tests pass.
    
    ## 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].
    - [ ] 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.
    
    <!-- Links -->
    [Contributor Guide]:
    https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
    [AI contribution guidelines]:
    https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines
    [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/
    [breaking change policy]:
    https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
    [Data Driven Fixes]:
    https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
    bdero authored May 12, 2026
    Configuration menu
    Copy the full SHA
    2fe6ec5 View commit details
    Browse the repository at this point in the history
  3. Roll Fuchsia Linux SDK from rFhU-YPqdCRCtCz7b... to z7ICmPtn4hspu02zk…

    …... (#186384)
    
    If this roll has caused a breakage, revert this CL and stop the roller
    using the controls here:
    https://autoroll.skia.org/r/fuchsia-linux-sdk-flutter
    Please CC [email protected],[email protected] on the revert to ensure
    that a human
    is aware of the problem.
    
    To file a bug in Flutter:
    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
    engine-flutter-autoroll authored May 12, 2026
    Configuration menu
    Copy the full SHA
    ad84f8d View commit details
    Browse the repository at this point in the history
  4. Fix EmbedderTest.CanRenderTextWithImpellerMetal test breakage (#186262

    )
    
    Fix `EmbedderTest.CanRenderTextWithImpellerMetal` test breakage.
    
    This broke due to #186074. That
    PR modified how light text is rendered on macOS, but did not update this
    test's golden image.
    
    This updates the image.
    
    It also changes the test to explicitly render dark text on a light
    background and light text on a dark background. Previously it rendered
    white text on a transparent background.
    
    ## 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 documentation (doc comments with `///`).
    - [ ] 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.
    
    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](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
    [AI contribution guidelines]:
    https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines
    [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
    
    ---------
    
    Co-authored-by: Jason Simmons <[email protected]>
    b-luk and jason-simmons authored May 12, 2026
    Configuration menu
    Copy the full SHA
    095d8cf View commit details
    Browse the repository at this point in the history
  5. [Flutter GPU] Allow customizing the vertex layout on a RenderPipeline (

    …#186310)
    
    Adds an explicit `VertexLayout` value type that the caller can pass to
    `GpuContext.createRenderPipeline` to override the default interleaved
    layout declared by the bound vertex shader's shader bundle, plus a
    `slot:` parameter on `RenderPass.bindVertexBuffer` so multiple vertex
    buffers can be bound to a single draw. This unblocks structure-of-arrays
    mesh loading (positions in one buffer, normals + UVs in another, etc.)
    and lets a renderer reorder attributes from the impellerc-generated
    default.
    
    The shipped scope intentionally pins only what's expressible against
    today's HAL without backing the API into a corner. The deferred
    capabilities (instancing, sparse bindings, normalized / packed /
    half-float / BGRA / 64-bit formats) are tracked at #186307, #186308, and
    #186309, with TODO comments at the relevant call sites pointing at each
    tracking issue.
    
    ### Dart surface
    
    ```dart
    enum VertexFormat {
      float32, float32x2, float32x3, float32x4,
      uint32,  uint32x2,  uint32x3,  uint32x4,
      sint32,  sint32x2,  sint32x3,  sint32x4,
    }
    
    class VertexAttribute {
      String name;
      VertexFormat format;
      int offsetInBytes; // defaults to 0
    }
    
    class VertexBuffer {
      int strideInBytes;
      List<VertexAttribute> attributes;
    }
    
    class VertexLayout {
      List<VertexBuffer> buffers;
    }
    
    GpuContext.createRenderPipeline(vertex, fragment, {VertexLayout? vertexLayout});
    RenderPass.bindVertexBuffer(BufferView, int vertexCount, {int slot = 0});
    ```
    
    If `vertexLayout` is `null`, the default for the bound vertex shader is
    used (today's behavior). The new `slot:` parameter defaults to `0`, so
    all existing single-buffer call sites compile unchanged.
    
    Attributes nest under the `VertexBuffer` they read from; each buffer's
    position in `VertexLayout.buffers` determines the binding slot it must
    be bound to via `RenderPass.bindVertexBuffer` (the first buffer is slot
    0, the second is slot 1, and so on). `offsetInBytes` defaults to 0 so
    the common structure-of-arrays case (one attribute per buffer at the
    start of each element) doesn't need to spell it out.
    
    Attributes are keyed by the shader-side input `name` rather than a raw
    integer location, mirroring how uniform bindings are resolved via
    `Shader.getUniformSlot('VertInfo')`. This keeps the Dart layout robust
    to shader edits that reorder `in` declarations (the underlying location,
    which is what every backend ultimately consumes, is read from the
    shader's reflection at pipeline build time).
    
    ### Example: structure-of-arrays glTF mesh
    
    Most glTF mesh primitives store each vertex attribute (POSITION, NORMAL,
    TEXCOORD_0, ...) in its own accessor, often inside its own buffer view.
    Without a configurable vertex layout, callers were forced to interleave
    those attributes on the CPU before upload. With this change, each
    attribute can keep its own buffer and bind at its own slot.
    
    Given a vertex shader that declares three named inputs:
    
    ```glsl
    in vec3 position;
    in vec3 normal;
    in vec2 texcoord;
    ```
    
    A renderer can describe the SoA layout once at pipeline creation and
    then bind one buffer per slot per draw:
    
    ```dart
    import 'package:flutter_gpu/gpu.dart' as gpu;
    
    final pipeline = gpu.gpuContext.createRenderPipeline(
      vertexShader,
      fragmentShader,
      vertexLayout: const gpu.VertexLayout(
        buffers: <gpu.VertexBuffer>[
          gpu.VertexBuffer(
            strideInBytes: 12,
            attributes: <gpu.VertexAttribute>[
              gpu.VertexAttribute(name: 'position', format: gpu.VertexFormat.float32x3),
            ],
          ),
          gpu.VertexBuffer(
            strideInBytes: 12,
            attributes: <gpu.VertexAttribute>[
              gpu.VertexAttribute(name: 'normal', format: gpu.VertexFormat.float32x3),
            ],
          ),
          gpu.VertexBuffer(
            strideInBytes: 8,
            attributes: <gpu.VertexAttribute>[
              gpu.VertexAttribute(name: 'texcoord', format: gpu.VertexFormat.float32x2),
            ],
          ),
        ],
      ),
    );
    
    // Per draw call: bind one buffer per slot.
    renderPass.bindPipeline(pipeline);
    renderPass.bindVertexBuffer(positionsView, vertexCount, slot: 0);
    renderPass.bindVertexBuffer(normalsView,   vertexCount, slot: 1);
    renderPass.bindVertexBuffer(texcoordsView, vertexCount, slot: 2);
    renderPass.draw();
    ```
    
    Interleaved layouts work too: declare one `VertexBuffer` whose
    `strideInBytes` covers the whole vertex, list every attribute under it,
    and give each attribute past the first an explicit `offsetInBytes` into
    the element:
    
    ```dart
    vertexLayout: const gpu.VertexLayout(
      buffers: <gpu.VertexBuffer>[
        gpu.VertexBuffer(
          strideInBytes: 32,
          attributes: <gpu.VertexAttribute>[
            gpu.VertexAttribute(name: 'position', format: gpu.VertexFormat.float32x3),
            gpu.VertexAttribute(
              name: 'normal',
              format: gpu.VertexFormat.float32x3,
              offsetInBytes: 12,
            ),
            gpu.VertexAttribute(
              name: 'texcoord',
              format: gpu.VertexFormat.float32x2,
              offsetInBytes: 24,
            ),
          ],
        ),
      ],
    ),
    ```
    
    This is also how a caller would override the impellerc-generated default
    to skip an unused attribute or reorder the components.
    
    ### Validation
    
    `createRenderPipeline` throws a Dart exception when:
    
    - A `VertexAttribute.format` doesn't match the bound vertex shader's
    declared scalar type class (float vs signed int vs unsigned int).
    Component-count mismatches are NOT errors, mirroring the
    default-substitution rules every modern HAL uses ((0, 0, 0, 1) fill).
    - An attribute's `offsetInBytes + format.bytesPerElement` overruns the
    owning `VertexBuffer`'s stride.
    - Two attributes within the same `VertexBuffer` occupy overlapping byte
    ranges (i.e. `[offsetInBytes, offsetInBytes + format.bytesPerElement)`
    ranges that intersect).
    - An attribute's `name` doesn't match any vertex shader input
    declaration.
    
    `RenderPass.bindVertexBuffer` throws `RangeError` if `slot` is outside
    `[0, 16)`.
    
    ### C++ plumbing
    
    - `Shader::GetStageInputs()` exposes the impellerc-reflected attribute
    metadata so the pipeline initializer can resolve user attribute names to
    `(location, set, columns, relaxed_precision)` and validate user formats
    against the shader's declared scalar type.
    - `RenderPipeline` stores its own `impeller::VertexDescriptor`, built
    from the user layout when supplied or fetched from the shader's
    reflection otherwise.
    - `RenderPass` upgrades `vertex_buffer` to a `std::array<BufferView,
    16>` indexed by binding slot, tracks the highest bound slot, and
    forwards the whole array to
    `impeller::RenderPass::SetVertexBuffer(BufferView*, count)`.
    
    The packed `(buffer layouts, attributes, attribute names)` data is
    passed via FFI as three `ByteData` handles and copied out of the
    typed-data handles before any callback into the Dart VM (else
    `Dart_TypedDataAcquireData` would forbid the callback). With nested
    attributes, `bufferLayouts` rows shrink to `[strideInBytes,
    attributeCount]` and `attributes` rows shrink to `[offsetInBytes,
    formatIndex, nameByteLength]`; binding slots are implicit in each
    buffer's position, and the C++ side walks attribute rows by consuming
    each buffer's `attributeCount` in order. Attribute names are encoded as
    concatenated UTF-8 bytes walked in parallel with the attributes integer
    table using each entry's `nameByteLength`.
    
    ### Tests
    
    Adds six `gpu_test.dart` tests covering an
    explicit-layout-matching-default render, a slot-range check, and four
    `createRenderPipeline` validation paths (wrong format, overrun stride,
    overlapping attributes within a buffer, unknown attribute name). All
    pass on `flutter_tester_opengles` (SwANGLE) and `flutter_tester` (Metal)
    locally.
    
    Fixes #145013.
    
    ## 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 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].
    
    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](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
    [AI contribution guidelines]:
    https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines
    [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
    bdero authored May 12, 2026
    Configuration menu
    Copy the full SHA
    12d86bc View commit details
    Browse the repository at this point in the history
  6. Roll Skia from 91d3c1e730af to ad0aff15b9fa (7 revisions) (#186391)

    https://skia.googlesource.com/skia.git/+log/91d3c1e730af..ad0aff15b9fa
    
    2026-05-12 [email protected] Roll
    vulkan-deps from 4391cb02adc5 to c95bf9c5e989 (13 revisions)
    2026-05-11
    recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com
    Roll recipe dependencies (trivial).
    2026-05-11 [email protected] [graphite] Add isOpaque to
    PrecompileShader
    2026-05-11
    recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com
    Roll recipe dependencies (trivial).
    2026-05-11 [email protected] Reland "Manually created dawn roll."
    2026-05-11
    recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com
    Roll recipe dependencies (trivial).
    2026-05-11 [email protected] Revert "Manually created dawn roll."
    
    If this roll has caused a breakage, revert this CL and stop the roller
    using the controls here:
    https://autoroll.skia.org/r/skia-flutter-autoroll
    Please CC
    [email protected],[email protected],[email protected] on the
    revert to ensure that a human
    is aware of the problem.
    
    To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry
    To file a bug in Flutter:
    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
    engine-flutter-autoroll authored May 12, 2026
    Configuration menu
    Copy the full SHA
    ac04c44 View commit details
    Browse the repository at this point in the history
  7. Migrate focus_node.unfocus.0.dart to use RadioGroup (#183979)

    Fixes #179088
    
    ## 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 documentation (doc comments with `///`).
    - [ ] 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.
    - [ ] 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
    [AI contribution guidelines]:
    https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines
    [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
    
    ---------
    
    Co-authored-by: Victor Sanni <[email protected]>
    Co-authored-by: Justin McCandless <[email protected]>
    3 people authored May 12, 2026
    Configuration menu
    Copy the full SHA
    48a522d View commit details
    Browse the repository at this point in the history
  8. Roll Skia from ad0aff15b9fa to 77a21bc723dc (2 revisions) (#186396)

    https://skia.googlesource.com/skia.git/+log/ad0aff15b9fa..77a21bc723dc
    
    2026-05-12 [email protected] Roll ANGLE
    from 2d8f36f37859 to 4a6d53434044 (14 revisions)
    2026-05-12 [email protected] Roll Skia
    Infra from 4ff5776b821e to 4bf523d4b47c (19 revisions)
    
    If this roll has caused a breakage, revert this CL and stop the roller
    using the controls here:
    https://autoroll.skia.org/r/skia-flutter-autoroll
    Please CC [email protected],[email protected],[email protected]
    on the revert to ensure that a human
    is aware of the problem.
    
    To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry
    To file a bug in Flutter:
    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
    engine-flutter-autoroll authored May 12, 2026
    Configuration menu
    Copy the full SHA
    f470294 View commit details
    Browse the repository at this point in the history
  9. Update iOS scenario app test goldens to match changes from #182662 (#…

    …186390)
    
    That PR affected golden image tests that use platform views. But the
    images had not been updated in the PR because errors in the "Mac
    mac_unopt" suite were suppressed on the dashboard when the PR landed.
    jason-simmons authored May 12, 2026
    Configuration menu
    Copy the full SHA
    2b7ca0c View commit details
    Browse the repository at this point in the history
  10. Pass XcodeBasedProject instead of String to functions in XcodeProject…

    …Interpreter (#186378)
    
    Pass `XcodeBasedProject` instead of the project path string.
    
    This will enable us to be able to get more information about the project
    (other than just the project path) from places in `xcodeproj.dart`.
    Needed for #185218,
    https://github.com/flutter/flutter/pull/186006/changes#r3191012567
    
    ## 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].
    - [ ] 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].
    
    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](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
    [AI contribution guidelines]:
    https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines
    [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
    vashworth authored May 12, 2026
    Configuration menu
    Copy the full SHA
    9ca95e5 View commit details
    Browse the repository at this point in the history
Loading