Reverts: flutter/engine#53783
Initiated by: jiahaog
Reason for reverting: There are still internal users of these hash functions (b/352191023). Flutter also exports it [here](72f83d3237/packages/flutter/lib/src/painting/basic_types.dart (L58)) so its easy for developers to use them even without importing `dart:ui`. Though it's an easy fix, I'd imagine this to be a breaking change for the OSS ecosystem a
Original PR Author: kevmoo
Reviewed By: {yjbanov}
This change reverts the following previous change:
We moved to dart:core Object functions a while ago
I admit to using this private macro initially without realizing that the documented way to do this is to use the stream the other macro returns. The non-private variant is actually more powerful since it allows for easier customization of the reason for the skip.
No change in functionality. Just removes the use of the private macros.
Fixes https://github.com/flutter/flutter/issues/150973
On a Pixel 7 pro, this speeds up the repeated blur macrobenchmark by 20ms (~65 -> ~45). The mip computation for backdrop filters is especially wasteful, as most of the contents are unused. RIght now, we also need to continually re-generate mips every time we do a texture flip, even if there is only a single blur. This is because the mip level is a property of the texture, which gets reused in the entity pass backdrop.
Experimentally support merging UI and platform thread on Android/iOS. This works by changing the shell holder to set the UI thread to the platform thread. Several shell APIs that post messages from the platform to ui thread were changed to use RunNowOrPostTask to immediately call the UI task if the threads are the same.
Experimentally, this seems to work reasonably well if there are no platform views. On Android with TLHC it works fine either way, while iOS currently takes a big performance hit.
This can be opted into via a Plist:
```
<key>FLTEnableMergedPlatformUIThread</key>
<true/>
```
Or via AndroidManifest.xml:
```
<meta-data
android:name="io.flutter.embedding.android.EnableMergedPlatformUIThread"
android:value="true" />
```
https://github.com/flutter/flutter/issues/150525
My expectation was that all toggles were disabled with OpenGL. But the specification states: "The initial value for each capability with the exception of GL_DITHER is GL_FALSE. The initial value for GL_DITHER is GL_TRUE."
The kind of dithering is implementation dependent and our layered OpenGL implementations choose to do nothing when this is enabled (unless extensions like VK_EXT_legacy_dithering are supported). Since, again, per the spec: "As far as OpenGL layering is concerned, no dithering is technically an acceptable algorithm".
But it does have a cost of older hardware where dithering is supported.
This sets the default to match our other backends and get some performance on hardware that does do dithering.
Tracking bug: https://github.com/flutter/flutter/issues/151473
To resolve engine roll failures starting on roll:
https://github.com/flutter/flutter/pull/151434
Reverts 4 Dart rolls:
- Roll Dart SDK from ffc8bb004a64 to 1679aba20a03 (16 revisions)
(#53761) 998d1fa85578e719607105125169e5a55b9e6f6b
- Roll Dart SDK from 1679aba20a03 to 0ecada960645 (1 revision) (#53767)
0585cb610e02b4831edf3d9a850a3eae21c4b75e
- Roll Dart SDK from 0ecada960645 to 33b65d2fe034 (2 revisions) (#53772)
5bbc45ba606adb1ec5227b52b5fe16c65ce389ff
- Roll Dart SDK from 33b65d2fe034 to 726cb2467f27 (1 revision) (#53776)
4ff005801023f2d70256f69411ead0e550fbf749
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.3.3 to 4.3.4.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/actions/upload-artifact/releases">actions/upload-artifact's releases</a>.</em></p>
<blockquote>
<h2>v4.3.4</h2>
<h2>What's Changed</h2>
<ul>
<li>Update <code>@âactions/artifact</code> version, bump dependencies by <a href="https://github.com/robherley"><code>@ârobherley</code></a> in <a href="https://redirect.github.com/actions/upload-artifact/pull/584">actions/upload-artifact#584</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/actions/upload-artifact/compare/v4.3.3...v4.3.4">https://github.com/actions/upload-artifact/compare/v4.3.3...v4.3.4</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="0b2256b8c0"><code>0b2256b</code></a> Merge pull request <a href="https://redirect.github.com/actions/upload-artifact/issues/584">#584</a> from actions/robherley/bump-pkgs</li>
<li><a href="488dcefb9b"><code>488dcef</code></a> licensed cache</li>
<li><a href="04c51f5766"><code>04c51f5</code></a> ncc</li>
<li><a href="32a9e276a8"><code>32a9e27</code></a> bump <code>@âactions/artifact</code> and npm audit</li>
<li><a href="552bf3722c"><code>552bf37</code></a> new version</li>
<li><a href="79616d2ded"><code>79616d2</code></a> Merge pull request <a href="https://redirect.github.com/actions/upload-artifact/issues/565">#565</a> from actions/eggyhead/use-artifact-v2.1.6</li>
<li>See full diff in <a href="65462800fd...0b2256b8c0">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Fixes https://github.com/flutter/flutter/issues/151355
The coverage pad introduced by renderToSnapshot is being picked up by drawVertices with texture coordinates. The pad is showing up in the final results, which can appear to be a gap between elements.
Additionally: if the coverage computed from the texture coordinates does not include the origin, then make sure the coverage used for the snapshot is translated onscreen.
Fixes https://github.com/flutter/flutter/issues/150995
Rather than using a separate state bit, we can use whether the current render pass is active as an indicator for whether or not it is safe to apply the clear color optimization.
Fixes https://github.com/flutter/flutter/issues/150993
This change allows testing the experimental canvas dispatcher in the playgrounds, which is important for golden testing. The plan to enable requires demonstrating that the goldens are the same.
Reverts: flutter/engine#45166
Initiated by: jiahaog
Reason for reverting: This commit seems to cause the debug banner of a material app to be unnecessarily blurred. For example, one of the tests runs the following flutter app:
<details>
<summary>Code</summary>
```dart
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Materia
Original PR Author: Kingtous
Reviewed By: {yjbanov, harryterkelsen}
This change reverts the following previous change:
Hi from [Dora team](https://www.dora.run/), which powers web developers to build their 3d websites in just a few seconds.
This PR fixes: https://github.com/flutter/flutter/issues/133443, related: https://github.com/flutter/flutter/issues/58546
The original codes attempts to cache the css string but it causes bugs when encountering nested the same mask filter blur. We should also set `filter` properties when currentFilter == incoming mask filter using the cached css string, not just ignore it.
[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
Fixes https://github.com/flutter/flutter/issues/151274
This is only an issue on iOS (so far) because of the platform view rendering strategy that involves submitting multiple impeller frames per compositor frame.
FYI @bdero
A semantic node may be tappable without having a more concrete role set on it, such as "button". It will just have a tap handler. This could lead to the sized span to be chosen as the label representation. However, when pointer events land on the span the DOM `target` becomes the span rather than the tappable element, and that breaks the debouncing logic in `pointer_binding.dart`.
This PR removes pointer event handling from inert text spans. This fixes the click debounce logic.
Fixes https://github.com/flutter/flutter/issues/151265
This is similar to our handling of degrees and radians or really any of the stuff in chrono.
Storage is always in bytes. Before being displayed, it can be converted into any of unit that makes the most sense. Conversions are non-truncating and everything is constexpr safe.
Part of https://github.com/flutter/flutter/issues/143953.
Because there are so many boundary cases, i.e. tests failed uploading artifacts to LUCI, I was _not_ planning on atomically deleting and replacing `run_ios_tests.sh`, and want to give a chance for the iOS team to try the converted code and verify it works the way they expect.
I'm also happy to just slam it on, but defer to y'all. _It works on my machine_.
---
```sh
dart run testing/scenario_app/bin/run_ios_tests.dart
```
This was the workflow that worked best as I was bringing up the backend. Though, the bit about Angle is new since the OpenGL stuff is no longer shipped with Xcode. I've tried to recreate those workflows as best I could.
Fixes https://github.com/flutter/flutter/issues/136760