Fixes performance problem where image filters break clip culling, and lack of clip culling stops the clear color optimization from firing.
on the current canvas the cull rect computation is slightly incorrect, as we drop it as soon as we get a image filter. With the new canvas, we have the actual render target sizes, so we can correctly cull without it.
After switching to experimental canvas, I will remove the cull rect field from the canvas stack entry - as the clip coverage stack already performs basically the same culling.
This fixes the performance issue on the uncached zoom page transition where we lose the clear color optimization too early.
When computing whether or not an entity can be coerced into src blend from srcOver, take into account that stroke geometries may modulate with alpha to emulate stroke widths less than 1.0.
While we're at it, update several computations to use max basis XY (from https://github.com/flutter/flutter/issues/153451 ) since that can lead to incorrect stroke width computations in the presence of canvas scaling.
Most of the changes update the APIs that used to take a ` const Entity& entity` to instead use the `const Matrix& transform`, since that is all we used the entity for.
See screeenshots in https://github.com/flutter/flutter/issues/154178#issuecomment-2313714407
Fixes https://github.com/flutter/flutter/issues/154178
With [1] dart2wasm started using the new Wasm built-in string import
`wasm:js-string`.
With [2] dart2wasm started exporting `compile` and `compileStreaming`
from the generated JS runtime to compile dart2wasm-generated modules
with the `wasm:js-string` built-in, polyfilling it when not available.
Update Wasm compilation code in Flutter to use `compileStreaming` from
the JS runtime, enabling fast `jwasm:js-string` module when available.
[1]: 44c2e17600
[2]: 4cd6096da4
After using `testing/run_tests.py`, these artifacts are left in the source tree.
It is probably better _not_ to do that (i.e. use sandboxing), but we don't sandbox across the engine today.
```txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
tools/const_finder/test/fixtures/box_web.dill.deps
tools/const_finder/test/fixtures/consts_and_non_web.dill.deps
tools/const_finder/test/fixtures/consts_web.dill.deps
tools/const_finder/test/fixtures/static_icon_provider_web.dill.deps
```
For very thin stroked text we switch to skia font rasterization for higher fidelity. However and very large stroke widths, the fidelity loss doesn't matter and may be much slower due to software rasterization.
As several users have noticed, there is a maximum size limit of skia stroked text that we hit as well. This only seems to happen on large stroke widths.
Fixes https://github.com/flutter/flutter/issues/153784
It seems like on some ANdroid devices we can actually get 4 pending frames even with the 3 frame wait. I thought about this a lot but too hard. Lets bump it up one.
Also minor comment fixes in ahb swapchain.
Experimental Canvas was getting depth assertion errors while trying to use the depth values supplied by DisplayList. This was mainly due to a difference in understanding as to how many depth values to allocate to a drawImageNine operation.
n case there are additional discrepancies, debugging code is added to assert the understanding of how many depth values the experimental canvas uses on each rendering operation. The depth debugging can be turned on and off with a #define
This overrides the documented behavior silently but only in unopt. Make opt and unopt modes behave the same. Disabling validation is frequently necessary to test behavior on simulators or when connecting to Renderdoc.
Bumps [google/osv-scanner-action](https://github.com/google/osv-scanner-action) from 1.8.3 to 1.8.4.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/google/osv-scanner-action/releases">google/osv-scanner-action's releases</a>.</em></p>
<blockquote>
<h2>v1.8.4</h2>
<p>Bump OSV-Scanner version <a href="https://github.com/google/osv-scanner/releases/tag/v1.8.4">https://github.com/google/osv-scanner/releases/tag/v1.8.4</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="678a866dcb"><code>678a866</code></a> Merge pull request <a href="https://redirect.github.com/google/osv-scanner-action/issues/39">#39</a> from google/update-to-v1.8.4</li>
<li><a href="6a315dbacc"><code>6a315db</code></a> Update unified workflow example to point to v1.8.4 reusable workflows</li>
<li><a href="712a57b5f0"><code>712a57b</code></a> Update reusable workflows to point to v1.8.4 actions</li>
<li><a href="fa6b699964"><code>fa6b699</code></a> Update actions to use v1.8.4 osv-scanner image</li>
<li><a href="b756d11dcf"><code>b756d11</code></a> Merge pull request <a href="https://redirect.github.com/google/osv-scanner-action/issues/30">#30</a> from google/update-script</li>
<li><a href="c63eeb74bc"><code>c63eeb7</code></a> Big multiline string</li>
<li><a href="dd8ff8fe0e"><code>dd8ff8f</code></a> Fix string format</li>
<li><a href="336764a25a"><code>336764a</code></a> Merge pull request <a href="https://redirect.github.com/google/osv-scanner-action/issues/38">#38</a> from google/renovate_ignore</li>
<li><a href="ff89c57971"><code>ff89c57</code></a> Update package name</li>
<li><a href="12abe438b3"><code>12abe43</code></a> chore: disable renovate bot updating osv-scanner-action package.</li>
<li>Additional commits viewable in <a href="https://github.com/google/osv-scanner-action/compare/v1.8.3...v1.8.4">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>
This task is consistently failing (with 3 retries for every engine commit). There is an issue to fix the problem, but until that issue is addressed, the task is primarily wasting CI resources.
Use default mouse event handling behaviour on macOS 13.3.1 onwards. This has two positive effects:
* Avoids the workaround on newer macOS versions where it's unnecessary, thereby giving us confidence that the underlying AppKit issue is fixed and the whole method can later be removed.
* Will be caught by tooling when we drop support for versions of macOS prior to the fixed version.
Issue: https://github.com/flutter/flutter/issues/154063
Issue: https://github.com/flutter/flutter/issues/115015
No tests modified since there is no semantic change, either on versions of macOS where the issue is fixed (and thus the default event handler is correct) or on versions where it is not (and we still use the workaround).
Re-tested manually with the reduced transparency setting on macOS 14.6.1.
[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
As of the following patches, we now bundle FlutterMacOS.framework.dSYM as part of FlutterMacOS.xcframework. The dSYM is automatically copied into the release build products directory, and bundled in the .xcarchive produced by Xcode's *Product > Archive* feature which produces bundles for upload to the App Store.
* https://github.com/flutter/engine/pull/54696
* https://github.com/flutter/flutter/pull/153975
The .dSYM bundle is now available both in the uploaded .xcarchive and in the xcframework in Flutter's internal artifact cache. For developers with CI toolchains that do additional manual handling or local archiving of .dSYMs, the dSYMs no longer need to be downloaded from cloud storage as previously detailed in `docs/Crashes.md`, but can instead be copied up from the appropriate dSYM subdirectory in the framework cache:
* `flutter/bin/cache/artifacts/engine/darwin-x64-release/FlutterMacOS.xcframework`
Also adds documentation for crash symbolication on macOS.
Issue: https://github.com/flutter/flutter/issues/153879
[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
Fixes https://github.com/flutter/flutter/issues/153964
Changing the origin of the rect used to render a shader could break shaders that expect to render at particular coordinates based on the input vertices. The snapshot functionality correctly handles translating a texture, so the translation was never necessary to begin with.
Closes https://github.com/flutter/flutter/issues/152636.
As of this PR, we no longer cherry-pick specific directories to run `dart analyze` on.
A few trailing errors across the repo had to be fixed in this PR.
Fixes text input edit rotor accessibility missing edit actions.
It also fixes a few edit items that is displayed where it's not supposed to. (e.g. displaying select item while nothing to select).
*List which issues are fixed by this PR. You must list at least one issue.*
Fixes https://github.com/flutter/flutter/issues/151029
*If you had to change anything in the [flutter/tests] repo, include a link to the migration guide as per the [breaking change policy].*
[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
A recent Dart SDK change causes some customer repos tested in the framework to get "uninitialized field" errors. Backing off the SDK to before this happened so we can get the repos fixed.
Previously the "dialog" ARIA role was only set if the route or any of its descendants had the `namesRoute` flag. This PR sets the ARIA role unconditionally. Although it's always a good idea to have a label on the route, a missing label doesn't change the fact that the route is a route, so the ARIA role should still be set.
Fixes https://github.com/flutter/flutter/issues/153791