Skip to content

Conversation

@gaaclarke
Copy link
Member

@gaaclarke gaaclarke commented Oct 8, 2025

fixes #176417

This fixes the linked issue in so far as it is possible today. This opts for the runtime lookup of bindings since it avoids all sort of messy issues when dealing with codegen. This doesn't stop us from doing codegen in the future.

This also adds tests for hot reload cases that would fail in the past, like inserting new uniforms.

Limitations

  1. It doesn't handle component names like ".r" or ".x". This is possible if we want.
  2. It doesn't handle nested structs. This isn't possible with the current shader metadata and may be a limitation with glsl?

Features

  1. Slots can be cached to amortize the cost of looking up the bindings
  2. Works with hot reload (tested inserting a uniform before one accessed by name)

Followup work

I plan on filing the following issues:

  1. Map postfixes like ".r" ".z" to offsets so a uniform can be "foo.z"
  2. Support nested structs so a uniform name can be "foo.bar"
  3. Support codegen for uniforms to get compile-time uniform name support

Example

ShaderBuilder(
  assetKey: 'shaders/grayscale.frag',
  (context, shader, _) {
    Color color = Colors.red;
    shader.getUniformFloat('uColor', 0).set(color.r);
    shader.getUniformFloat('uColor', 1).set(color.g);
    shader.getUniformFloat('uColor', 2).set(color.b);
    return BackdropFilter(
      filter: ImageFilter.shader(shader),
      child: Container(
        color: Colors.transparent,
      ),
    );
  },
),

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.

@github-actions github-actions bot added the engine flutter/engine related. See also e: labels. label Oct 8, 2025
@gaaclarke gaaclarke marked this pull request as ready for review October 8, 2025 18:21
@gaaclarke gaaclarke requested review from chinmaygarde and flar October 8, 2025 18:21
@gaaclarke
Copy link
Member Author

I forgot to stub this in for the web backend, I'll just throw if this is called there for now and file an issue for it.

@flar
Copy link
Contributor

flar commented Oct 8, 2025

A general question - it looks like this only solves the issue for floats. What about ImageSampler uniforms?

Also, Colors and Vec2 are handled by having the developer manually index all of the components. It would be fairly trivial to add getUniformColor(name) and getUniformVec2(name) just based on the existing support already being added for floats which would also alleviate the need to know how the color components and x,y coordinate values are laid out in the uniforms.

(assuming I got the relative offsets of the color components right in the example below)

base class UniformColorSlot {
  UniformColorSlot._(this._shader, this.name, this._index);

  /// Set the Color value of the bound uniform.
  void set(Color c) {
    _shader.setFloat(_index, c.a);
    _shader.setFloat(_index + 1, c.r);
    _shader.setFloat(_index + 2, c.g);
    _shader.setFloat(_index + 3, c.b);
  }

  /// VisibleForTesting: This is the index one would use with
  /// [FragmentShader.setFloat] for the base alpha component of this uniform.
  int get index {
    return _index;
  }

  final FragmentShader _shader;
  final int _index;

  /// The name of the bound uniform.
  final String name;
}

...

class FragmentShader {
  UniformColorSlot getUniformColor(String name) {
    return UniformColorSlot(this, name, _getBaseIndexForName(name));
  }
}

Copy link
Contributor

@flar flar left a comment

Choose a reason for hiding this comment

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

Some API and performance notes.

@gaaclarke
Copy link
Member Author

A general question - it looks like this only solves the issue for floats. What about ImageSampler uniforms?

Correct, that will be handled in a different PR.

Also, Colors and Vec2 are handled by having the developer manually index all of the components. It would be fairly trivial to add getUniformColor(name) and getUniformVec2(name) just based on the existing support already being added for floats which would also alleviate the need to know how the color components and x,y coordinate values are laid out in the uniforms.

(assuming I got the relative offsets of the color components right in the example below)

base class UniformColorSlot {
  UniformColorSlot._(this._shader, this.name, this._index);

  /// Set the Color value of the bound uniform.
  void set(Color c) {
    _shader.setFloat(_index, c.a);
    _shader.setFloat(_index + 1, c.r);
    _shader.setFloat(_index + 2, c.g);
    _shader.setFloat(_index + 3, c.b);
  }

Yep, I thought about that. I think that's a good idea but I don't think it should live in dart:ui. This provides the fundamental tools for someone to make that library.

@flar
Copy link
Contributor

flar commented Oct 8, 2025

A general question - it looks like this only solves the issue for floats. What about ImageSampler uniforms?

Correct, that will be handled in a different PR.

add getUniformColor(name) and getUniformVec2(name)

base class UniformColorSlot {
}

Yep, I thought about that. I think that's a good idea but I don't think it should live in dart:ui. This provides the fundamental tools for someone to make that library.

Someone could do any of this as a separate library, though. Why even have these new classes when all you need is "getOffsetForName(String)" and let them do their library.

One of the advantages of doing the Color and Vec2 (and Matrix) slot objects is that in returning them we could do some type checking (might require some extra info from native for explicit types, or at least it could check that a Color name is associated with 4 floats). Or, just expose the type/count info via methods and let the external library do that checking as well:

  • (optional) name-to-type
  • name-to-count
  • name-to-offset

are all that is needed to enable an external library. The (optional) type would be restricted to only the standard types and need to have a "custom" type for when someone makes up their own struct in the program.

@gaaclarke
Copy link
Member Author

Someone could do any of this as a separate library, though. Why even have these new classes when all you need is "getOffsetForName(String)" and let them do their library.

I would be open to something like that. I was thinking I'd have to do more to make sure that hot reload would work, but happily it seems to work fine like this. I was worried I'd have to keep weak references around to slots so that when we hot reload we could invalidate the slots to get them to rebind. There are symbols that seem related to hot reloading that we definitely wouldn't want to make public. We'll see if chinmay sees something I didn't with regard to hot reloading.

There's definitely an art to drawing the line and there are tradeoffs for every place we could decide to draw it. Having the most fundamental entity being useful and guaranteed to work with hot reload seems like a good place to draw it though.

@gaaclarke
Copy link
Member Author

draft posted for image samplers: #176749

@gaaclarke
Copy link
Member Author

I just tried hot reload again to show @flar and it doesn't work. I may have accidentally tested this with hot restart. I'll update update this. I figured I'd have to account for this, that's why there is a slot class. I'm dropping back to draft until it's fixed. I don't think there is a mechanism to do automated tests for this unfortunately.

@gaaclarke gaaclarke marked this pull request as draft October 9, 2025 15:58
@flutter-dashboard
Copy link

This pull request has been changed to a draft. The currently pending flutter-gold status will not be able to resolve until a new commit is pushed or the change is marked ready for review again.

For more guidance, visit Writing a golden file test for package:flutter.

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

@github-actions github-actions bot added the platform-web Web applications specifically label Oct 10, 2025
@gaaclarke gaaclarke marked this pull request as ready for review October 10, 2025 18:58
@gaaclarke gaaclarke added the autosubmit Merge PR when tree becomes green via auto submit App label Oct 13, 2025
@auto-submit auto-submit bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Oct 13, 2025
@auto-submit
Copy link
Contributor

auto-submit bot commented Oct 13, 2025

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

@gaaclarke gaaclarke added the autosubmit Merge PR when tree becomes green via auto submit App label Oct 14, 2025
@auto-submit auto-submit bot added this pull request to the merge queue Oct 14, 2025
Merged via the queue into flutter:master with commit d04705c Oct 14, 2025
191 checks passed
@flutter-dashboard flutter-dashboard bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Oct 14, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Oct 14, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Oct 14, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Oct 14, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Oct 14, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Oct 14, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Oct 14, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Oct 15, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Oct 15, 2025
auto-submit bot pushed a commit to flutter/packages that referenced this pull request Oct 15, 2025
Manual roll Flutter from e11e2c1 to 7cd821c (73 revisions)

Manual roll requested by tarrinneal@google.com

flutter/flutter@e11e2c1...7cd821c

2025-10-14 bruno.leroux@gmail.com Fix computeDistanceToActualBaseline throws when accessing child size (flutter/flutter#176906)
2025-10-14 47866232+chunhtai@users.noreply.github.com iOS can set application locale before view controller is set (flutter/flutter#176592)
2025-10-14 jason-simmons@users.noreply.github.com Roll ANGLE to a branch based on d9fa255a5c22 (flutter/flutter#176747)
2025-10-14 47866232+chunhtai@users.noreply.github.com Relands "Fixes keyboard selects disabled radio" (flutter/flutter#176977)
2025-10-14 huy@nevercode.io Fix expansion tile is missing state announcement on non-Apple platforms (flutter/flutter#175480)
2025-10-14 30870216+gaaclarke@users.noreply.github.com impeller: allows access of float uniforms by name (flutter/flutter#176728)
2025-10-14 aam@google.com Roll dart sdk to 3.11.0-17.0.dev (flutter/flutter#176947)
2025-10-13 okorohelijah@google.com Move iOS integration tests (flutter/flutter#176940)
2025-10-13 ahmedsameha1@gmail.com Make sure that an InputDatePickerFormField doesn't crash in 0x0 envir… (flutter/flutter#176047)
2025-10-13 jason-simmons@users.noreply.github.com [web] Match the behavior of other platforms in Web Locale.toString if the country code is an empty string (flutter/flutter#176862)
2025-10-13 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Fixes keyboard selects disabled radio (#176727)" (flutter/flutter#176958)
2025-10-13 47866232+chunhtai@users.noreply.github.com Fixes keyboard selects disabled radio (flutter/flutter#176727)
2025-10-13 engine-flutter-autoroll@skia.org Roll Packages from e319c40 to d062181 (2 revisions) (flutter/flutter#176916)
2025-10-13 jason-simmons@users.noreply.github.com Roll SwiftShader to 794b0cfce1d8 (flutter/flutter#176806)
2025-10-13 32538273+ValentinVignal@users.noreply.github.com Make DropdownMenu generic type non nullable (flutter/flutter#176711)
2025-10-12 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from BWGpRvpdQh-HJpq1c... to _dd0Jv50H0oUI2Ad8... (flutter/flutter#176895)
2025-10-11 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from JpiUsek1hU5r9QVKP... to BWGpRvpdQh-HJpq1c... (flutter/flutter#176880)
2025-10-11 codefu@google.com fix: content hash check for LUCI_CONTEXT (flutter/flutter#176867)
2025-10-11 34465683+rkishan516@users.noreply.github.com Feat: make tooltip position customizeable (flutter/flutter#175047)
2025-10-11 engine-flutter-autoroll@skia.org Roll Dart SDK from d88d8bf2b53c to 65b171958c93 (3 revisions) (flutter/flutter#176871)
2025-10-11 34465683+rkishan516@users.noreply.github.com feat: apply radioGroup role to segmented control widgets (flutter/flutter#176157)
2025-10-10 ahmedsameha1@gmail.com Make sure that a CheckboxMenuButton doesn't crash in 0x0 environment (flutter/flutter#176450)
2025-10-10 Rusino@users.noreply.github.com [WebParagraph] Support for more styles, placeholders, decorations, etc (flutter/flutter#172853)
2025-10-10 jason-simmons@users.noreply.github.com Set up a version of build_ios_framework_module_test that only runs on x64 machines and extend its timeout (flutter/flutter#176811)
2025-10-10 engine-flutter-autoroll@skia.org Roll Packages from 0b41de3 to e319c40 (1 revision) (flutter/flutter#176833)
2025-10-10 danny@tuppeny.com [tool/dap] Forward app.warning events from Flutter to DAP client (flutter/flutter#176827)
2025-10-10 engine-flutter-autoroll@skia.org Roll Dart SDK from 70c00d3ceb3a to d88d8bf2b53c (1 revision) (flutter/flutter#176830)
2025-10-10 sokolovskyi.konstantin@gmail.com Remove unnecessary nullable types in examples. (flutter/flutter#176713)
2025-10-10 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from xArtL4DH0FsdwSqG_... to JpiUsek1hU5r9QVKP... (flutter/flutter#176822)
2025-10-10 bruno.leroux@gmail.com Cleanup OutlinedButton.icon documentation and implementation (flutter/flutter#176630)
2025-10-10 34871572+gmackall@users.noreply.github.com [HCPP] Properly remove hcpp views that are no longer visible (flutter/flutter#176742)
2025-10-10 ahmedsameha1@gmail.com Make sure that an InputChip doesn't crash in 0x0 environment (flutter/flutter#175930)
2025-10-10 737941+loic-sharma@users.noreply.github.com Update Flutter templates' Dart style (flutter/flutter#175963)
2025-10-10 ahmedsameha1@gmail.com Make sure that a DropdownButtonFormField doesn't crash in 0x0 environ… (flutter/flutter#174958)
2025-10-10 ahmedsameha1@gmail.com Make sure that an InkWell doesn't crash in 0x0 environment (flutter/flutter#175871)
2025-10-10 ahmedsameha1@gmail.com Handle#6537 end drawer button (flutter/flutter#173026)
2025-10-10 engine-flutter-autoroll@skia.org Roll Dart SDK from a9b7bd4b0b32 to 70c00d3ceb3a (4 revisions) (flutter/flutter#176815)
2025-10-10 robert.ancell@canonical.com Change default Linux thread policy to merge platform and UI threads. (flutter/flutter#176759)
2025-10-09 bkonyi@google.com [ Tool ] Roll package:dwds to 26.0.0 (flutter/flutter#176808)
2025-10-09 43054281+camsim99@users.noreply.github.com Update `CHANGELOG` to include 3.35.6 notes (flutter/flutter#176803)
2025-10-09 36861262+QuncCccccc@users.noreply.github.com Announce text and button together when DropdownMenu is treated as a button (flutter/flutter#176428)
2025-10-09 gregorysconrad@gmail.com [native_assets] create macOS CCompilerConfig via xcrun --find (flutter/flutter#175717)
2025-10-09 chinmaygarde@google.com [Impeller] Fix broken links in README. (flutter/flutter#176770)
2025-10-09 chinmaygarde@google.com Fix links to Custom Flutter Engine Embedders in README. (flutter/flutter#175807)
...
github-merge-queue bot pushed a commit that referenced this pull request Oct 30, 2025
follow up to #176728 which allows
setting image samplers too.

## 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
walley892 pushed a commit to walley892/flutter that referenced this pull request Oct 30, 2025
follow up to flutter#176728 which allows
setting image samplers too.

## 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
reidbaker pushed a commit to AbdeMohlbi/flutter that referenced this pull request Dec 10, 2025
fixes flutter#176417

This fixes the linked issue in so far as it is possible today. This opts
for the runtime lookup of bindings since it avoids all sort of messy
issues when dealing with codegen. This doesn't stop us from doing
codegen in the future.

This also adds tests for hot reload cases that would fail in the past,
like inserting new uniforms.

## Limitations
1) It doesn't handle component names like ".r" or ".x". This is possible
if we want.
1) It doesn't handle nested structs. This isn't possible with the
current shader metadata and may be a limitation with glsl?

## Features
1) Slots can be cached to amortize the cost of looking up the bindings
1) Works with hot reload (tested inserting a uniform before one accessed
by name)

## Followup work
I plan on filing the following issues:
1) Map postfixes like ".r" ".z" to offsets so a uniform can be "foo.z"
1) Support nested structs so a uniform name can be "foo.bar"
1) Support codegen for uniforms to get compile-time uniform name support

## Example
```dart
ShaderBuilder(
  assetKey: 'shaders/grayscale.frag',
  (context, shader, _) {
    Color color = Colors.red;
    shader.getUniformFloat('uColor', 0).set(color.r);
    shader.getUniformFloat('uColor', 1).set(color.g);
    shader.getUniformFloat('uColor', 2).set(color.b);
    return BackdropFilter(
      filter: ImageFilter.shader(shader),
      child: Container(
        color: Colors.transparent,
      ),
    );
  },
),
```

## 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
reidbaker pushed a commit to AbdeMohlbi/flutter that referenced this pull request Dec 10, 2025
follow up to flutter#176728 which allows
setting image samplers too.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Allow uniform bindings by name for FragmentShader

2 participants