30262 Commits

Author SHA1 Message Date
Ryan Macnak
ca758ac49b
Add buildroot compatibility for HWASAN. (#167133)
Needed to roll https://dart-review.googlesource.com/c/sdk/+/421180.
2025-04-15 00:56:07 +00:00
engine-flutter-autoroll
ddb8116210
Roll Skia from e7aa93f33a20 to 76cb5d4fba27 (13 revisions) (#167132)
https://skia.googlesource.com/skia.git/+log/e7aa93f33a20..76cb5d4fba27

2025-04-14 borenet@google.com [infra] Update os dimension for devonf
2025-04-14 borenet@google.com [infra] Fix dimensions and add jobs for
several migrated devices
2025-04-14 robertphillips@google.com Improve PrecompileYUVImageShader
2025-04-14 skia-autoroll@skia-public.iam.gserviceaccount.com Roll
vulkan-deps from ccbdbbedfc26 to a24af46b3d3b (2 revisions)
2025-04-13 skia-autoroll@skia-public.iam.gserviceaccount.com Roll
vulkan-deps from 9bca40f4243f to ccbdbbedfc26 (1 revision)
2025-04-13 skia-recreate-skps@skia-swarming-bots.iam.gserviceaccount.com
Update SKP version
2025-04-13 skia-autoroll@skia-public.iam.gserviceaccount.com Roll
vulkan-deps from 18aada14d26d to 9bca40f4243f (2 revisions)
2025-04-12 skia-autoroll@skia-public.iam.gserviceaccount.com Roll
vulkan-deps from 30455461e798 to 18aada14d26d (3 revisions)
2025-04-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll
vulkan-deps from 5ec40ef70a52 to 30455461e798 (6 revisions)
2025-04-11 thomsmit@google.com [graphite] AnalyticRRect and
PerEdgeAAQuad render steps now upload corner ID's as vertex data instead
of inferring the corner through sk_vertexID.
2025-04-11 michaelludwig@google.com [graphite] Fail
DrawPass::prepareResources if sampled textures are uninstantiated
2025-04-11 jvanverth@google.com Revert "[graphite] Add ProxyCache
support to RasterPathAtlas."
2025-04-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll
vulkan-deps from 5c8010f3b85e to 5ec40ef70a52 (2 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 bwils@google.com,jonahwilliams@google.com,kjlubick@google.com
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
2025-04-14 21:40:26 +00:00
zijiehe@
296df33be8
[fuchsia] Uprev test-scripts with FUCHSIA_READELF env (#166929)
Copied from https://github.com/flutter/flutter/pull/166901 with the
essential fix to make it work.

Bug: b/407890258, b/338009514

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

<!-- 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
2025-04-14 19:38:02 +00:00
Bogdan Lukin
c251366036
Cleanup links to flutter/engine in ci/builders docs (#166916)
update outdated links to flutter/engine before fusion

## 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].
- [ ] 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
[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
2025-04-14 18:33:08 +00:00
Jackson Gardner
2f6cdc3fe1
[skwasm] Use queueMicrotask instead of postMessage when single-threaded (#166997)
It turns out `postMessage` is quite a bit more expensive than
`queueMicrotask`. Before dynamic threading, this is what we actually
did, and perf regressed when we started using `postMessage` instead.

This fixes https://github.com/flutter/flutter/issues/166905
2025-04-14 17:59:10 +00:00
Jason Simmons
0aca715089
Remove some unused third party library build scripts (#166960) 2025-04-14 17:50:21 +00:00
Jonah Williams
a7f820163c
[Impeller] various iOS cleanups. (#166859)
* delete lazy drawable holder which is unused.
* Add some docs/test to PassBindingsCache
* Add StencilRef to PassBindingsCache - mostly to reduce redundant ops
in the debugger.
2025-04-12 01:24:16 +00:00
Jonah Williams
7c8730ee40
[Impeller] reland: defer vulkan context initialization as long as possible. (#167000)
Removes "quiet: true" which stopped us from printing out "using the
vulkan rendering backend" which we read in tests.
2025-04-11 23:10:13 +00:00
Jonah Williams
2a1b863663
[Impeller] fix vulkan/gl color space decode. (#166957)
Fixes https://github.com/flutter/flutter/issues/166954
Improves https://github.com/flutter/flutter/issues/164452

We need to force conversion to an SRGB color space otherwise images look
wrong if they happen to have things like a color profile. I believe this
is the correct change, as it matches the wide gamut decode above.
2025-04-11 19:40:12 +00:00
auto-submit[bot]
c710c160bd
Reverts "[Impeller] defer vulkan context initialization as long as possible. (#166941)" (#166990)
<!-- start_original_pr_link -->
Reverts: flutter/flutter#166941
<!-- end_original_pr_link -->
<!-- start_initiating_author -->
Initiated by: jonahwilliams
<!-- end_initiating_author -->
<!-- start_revert_reason -->
Reason for reverting: failing hello world test on post submit.
<!-- end_revert_reason -->
<!-- start_original_pr_author -->
Original PR Author: jonahwilliams
<!-- end_original_pr_author -->

<!-- start_reviewers -->
Reviewed By: {matanlurey}
<!-- end_reviewers -->

<!-- start_revert_body -->
This change reverts the following previous change:
In service of a faster startup for customer money, go back to defering
vulkan context initialization until the surface itself is created.
<!-- end_revert_body -->

Co-authored-by: auto-submit[bot] <flutter-engprod-team@google.com>
2025-04-11 17:24:28 +00:00
Jonah Williams
ff75f640de
[Impeller] defer vulkan context initialization as long as possible. (#166941)
In service of a faster startup for customer money, go back to defering
vulkan context initialization until the surface itself is created.
2025-04-11 15:38:21 +00:00
engine-flutter-autoroll
0642b152b6
Roll Fuchsia Linux SDK from vYisSsIgqw0mqFRVJ... to 91RIHvX0YC3wzD7qj... (#166963)
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 jonahwilliams@google.com,zra@google.com 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
2025-04-11 07:08:26 +00:00
Jonah Williams
94480b0329
[Impeller] correct render pass bariers when resolve has mips. (#166892)
The other mip levels must be initialized to the correct state. This
would trigger validation errors in the test case that was previously
skipped for non-GL.
2025-04-11 03:29:21 +00:00
Jonah Williams
5ea45c6378
[Impeller] re-make AHB swapchain lazy and allow usage on < 34 (#166943)
In service of faster customer money startup
2025-04-11 03:29:20 +00:00
Renzo Olivares
fc12bec5ec
Reland "SliverEnsureSemantics (#165589)" (#166889)
This reverts commit 2fc716d, and updates the cross-axis size of the
`_scrollOverflowElement` to be 1px (non-zero), so it is taken into
account by the scrollable elements scrollHeight.

Fixes #160217

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

---------

Co-authored-by: Renzo Olivares <roliv@google.com>
2025-04-11 00:51:26 +00:00
engine-flutter-autoroll
6acc8d332b
Roll Skia from 171b2bf1e496 to 98deb838d3b8 (2 revisions) (#166955)
https://skia.googlesource.com/skia.git/+log/171b2bf1e496..98deb838d3b8

2025-04-10 jvanverth@google.com Revert "[graphite] Free backing data for
Plots when we no longer need it."
2025-04-10 jvanverth@google.com Revert "[graphite] Add allocation checks
to BasicDrawAtlas test."

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
jlavrova@google.com,jonahwilliams@google.com,kjlubick@google.com 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
2025-04-11 00:33:41 +00:00
auto-submit[bot]
43e8a93e8e
Reverts "[Impeller] Speed up vulkan startup time by re-using existing vulkan context. (#166784)" (#166938)
<!-- start_original_pr_link -->
Reverts: flutter/flutter#166784
<!-- end_original_pr_link -->
<!-- start_initiating_author -->
Initiated by: jonahwilliams
<!-- end_initiating_author -->
<!-- start_revert_reason -->
Reason for reverting: didn't do enough, going to try something
different.
<!-- end_revert_reason -->
<!-- start_original_pr_author -->
Original PR Author: jonahwilliams
<!-- end_original_pr_author -->

<!-- start_reviewers -->
Reviewed By: {matanlurey}
<!-- end_reviewers -->

<!-- start_revert_body -->
This change reverts the following previous change:
Once we've created the Vulkan context, lets just use it - creating it
isn't free. See numbers. Also change AHB swapchain to lazily create
images, which will also improve startup and will be added to an opt in
list to test startup performance.

```
════════════════════════════╡ ••• Raw results ••• ╞═════════════════════════════

timeToFirstFrameMicros:
  A:	371525.00	225155.00	
  B:	254054.00	254668.00	
timeToFirstFrameRasterizedMicros:
  A:	781015.00	555791.00	
  B:	527163.00	526827.00	



═════════════════════════╡ ••• Final A/B results ••• ╞══════════════════════════

Score	            Average A (noise)	Average B (noise)	Speed-up
timeToFirstFrameMicros	298340.00 (24.53%)	254361.00 (0.12%)	1.17x	
timeToFirstFrameRasterizedMicros	668403.00 (16.85%)	526995.00 (0.03%)	1.27x	
```
<!-- end_revert_body -->

Co-authored-by: auto-submit[bot] <flutter-engprod-team@google.com>
2025-04-10 19:36:19 +00:00
engine-flutter-autoroll
430c52648d
Roll Skia from 5ef1b00ac320 to 171b2bf1e496 (4 revisions) (#166931)
https://skia.googlesource.com/skia.git/+log/5ef1b00ac320..171b2bf1e496

2025-04-10 kjlubick@google.com Replace addPolyLine with addLine in
SkBasicEdgeBuilder
2025-04-10 skia-autoroll@skia-public.iam.gserviceaccount.com Roll
vulkan-deps from 1e366225664f to 5c8010f3b85e (3 revisions)
2025-04-10 bungeman@google.com Remove
SkScalerContext::forceGenerateImageFromPath
2025-04-10 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE
from f680e1074ba5 to 02fb04a81e75 (13 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
jlavrova@google.com,jonahwilliams@google.com,kjlubick@google.com 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
2025-04-10 18:52:26 +00:00
Jonah Williams
5f48a17123
[Impeller] Use device property uniform aligment instead of conservative value of 256. (#166884)
Fixes https://github.com/flutter/flutter/issues/132178

Rather than 256, use the device limits which may be substantially less.
Metal uses existing values and GLES still uses 256.
2025-04-10 18:00:17 +00:00
Yegor
ac1d8613fc
[web:skwasm] be consistent about handling imbalanced layer push/pop sequence (#166887)
Skwasm was the only renderer that enforced that the root layer cannot be
popped. However, canvaskit and the native engines all allow popping the
root layer. It's just a noop.

Also, `EngineSceneBuilder` called `currentBuilder.build()` before
checking if the layer that's being popped is a root layer. This means
skwasm would call `rootLayer.build()` twice when push/pop are
unbalanced. It is called once on the last `pop()` on the root layer.
Then it is called again in `EngineSceneBuilder.build`.

Not a guarantee, but this may help reduce the skwasm error rates from
DevTools that look like this:

```
org-dartlang-sdk:///dart-sdk/lib/_internal/wasm/lib/error_utils.dart 130:15 | _throwIndexError
org-dartlang-sdk:///dart-sdk/lib/_internal/wasm/lib/error_utils.dart 24:7 | checkIndexBCE
org-dartlang-sdk:///lib/_engine/engine/scene_builder.dart 458:53 | pop
file:///b/s/w/ir/x/w/rc/flutter/packages/flutter/lib/src/rendering/layer.dart 1520:13 | addToScene
file:///b/s/w/ir/x/w/rc/flutter/packages/flutter/lib/src/rendering/layer.dart 721:5 | _addToSceneWithRetainedRendering
file:///b/s/w/ir/x/w/rc/flutter/packages/flutter/lib/src/rendering/layer.dart 1519:5 | addToScene
file:///b/s/w/ir/x/w/rc/flutter/packages/flutter/lib/src/rendering/layer.dart 721:5 | _addToSceneWithRetainedRendering
```
2025-04-10 17:09:07 +00:00
Tong Mu
97b5264fcc
Migrate in-comment links of the flutter/engine repository to the flutter/flutter repository (#166790)
This PR migrates almost all in-comment links that points to the main
branch of flutter/engine repository to the flutter/flutter repository,
ensuring that such links are always up to date.

I've manually verified that all links are valid. There are a few cases
where the migration is not so trivial and I had to look up for the
updated location or line number, but I'm pretty sure the new value is
correct.

The only place that I don't know how to migrate is two links in
[Upgrading-pre-1.12-Android-projects.md](https://github.com/flutter/flutter/blob/master/docs/platforms/android/Upgrading-pre-1.12-Android-projects.md)
pointing to
`https://github.com/flutter/engine/blob/main/shell/platform/android/io/flutter/app/FlutterActivity.java`,
which I guess no longer exists.

There are still many links that point to a specific branch or revision
of the engine repo. I don't think we need to migrate these links, since
they're probably not meant to be kept up to date.

## Pre-launch Checklist

- [ ] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [ ] 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].

<!-- 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
2025-04-10 15:58:23 +00:00
Jonah Williams
fe64cf4216
[engine] disable Skia resource manager warning when using Impeller. (#166882)
Fixes https://github.com/flutter/flutter/issues/135522

This is a skia warning. If there is an impeller context we shouldn't
print it.
2025-04-10 00:11:26 +00:00
engine-flutter-autoroll
c0f25df6c0
Roll Skia from ac01f9306a0c to 6552940886b8 (15 revisions) (#166883)
https://skia.googlesource.com/skia.git/+log/ac01f9306a0c..6552940886b8

2025-04-09 borenet@google.com [infra] Use new Windows 11 VMs from GCE
Provider
2025-04-09 jvanverth@google.com Remove last remnant of
SK_USE_LEGACY_GANESH_TEXT_APIS
2025-04-09 kjlubick@google.com Refactor calculations in SkEdge to be
more understandable
2025-04-09 kjlubick@google.com Add tests and visualization slide for
aliased scan converter
2025-04-09 kjlubick@google.com Use polymorphism to clean up SkEdge
2025-04-09 kjlubick@google.com Remove shiftUp parameter from aliased
scan converter
2025-04-09 kjlubick@google.com Add docs to SkEdge and rename fields for
clarity
2025-04-09 skia-autoroll@skia-public.iam.gserviceaccount.com Roll
vulkan-deps from c18348e6dc1d to c8554b0ea83f (1 revision)
2025-04-09 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE
from cbd6cdc90c3a to f680e1074ba5 (11 revisions)
2025-04-09 robertphillips@google.com Revert "Address TSAN issue in
GrSurfaceProxy::backingStoreDimensions"
2025-04-08 skia-autoroll@skia-public.iam.gserviceaccount.com Roll
vulkan-deps from ddb9ba0fdcc3 to c18348e6dc1d (13 revisions)
2025-04-08 robertphillips@google.com Revert "Add debugging info for
Assert firing in Chrome"
2025-04-08 michaelludwig@google.com [graphite] Refactor VulkanRenderPass
metadata in prep for AttachmentDesc update
2025-04-08 jvanverth@google.com [graphite] Disable use of ProxyCache for
Raster and Clip atlases.
2025-04-08 jvanverth@google.com Remove Ganesh dependencies from
AtlasSubRun types.

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
jlavrova@google.com,jonahwilliams@google.com,kjlubick@google.com 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
2025-04-10 00:04:26 +00:00
Jonah Williams
e143c3f37a
[Impeller] set correct depth for emulated advanced blend restore. (#166501)
For emulated advanced blends, the depth value is off by one. When use
flip backdrop for saveLayers, we call it before we increment the depth.
When we call it for draws (to do an emulated advanced blend), we call it
after we've incremented the depth. Correct this with a bool parameter.
2025-04-09 23:55:00 +00:00
Jonah Williams
3ef252e5b5
Add runtime flag for enable flutter_gpu, off by default. (#165337)
Flag flutter_gpu off by default.
2025-04-09 23:43:12 +00:00
Jonah Williams
b0571076de
[Impeller] correctly invalidate program objects when performing a hotreload on GLES> (#166881)
We invalidated the pipeline but not the program, causing hot reloads to
keep reuseing the old program handle.

Fixes https://github.com/flutter/flutter/issues/165876
2025-04-09 23:37:54 +00:00
Jonah Williams
b55ffbff8e
[Impeller] Speed up vulkan startup time by re-using existing vulkan context. (#166784)
Once we've created the Vulkan context, lets just use it - creating it
isn't free. See numbers. Also change AHB swapchain to lazily create
images, which will also improve startup and will be added to an opt in
list to test startup performance.

```
════════════════════════════╡ ••• Raw results ••• ╞═════════════════════════════

timeToFirstFrameMicros:
  A:	371525.00	225155.00	
  B:	254054.00	254668.00	
timeToFirstFrameRasterizedMicros:
  A:	781015.00	555791.00	
  B:	527163.00	526827.00	



═════════════════════════╡ ••• Final A/B results ••• ╞══════════════════════════

Score	            Average A (noise)	Average B (noise)	Speed-up
timeToFirstFrameMicros	298340.00 (24.53%)	254361.00 (0.12%)	1.17x	
timeToFirstFrameRasterizedMicros	668403.00 (16.85%)	526995.00 (0.03%)	1.27x	
```
2025-04-09 22:43:34 +00:00
Jonah Williams
cbc8ee416c
[Impeller] prefer 24 bit depth buffer format on vulkan backend. (#166854)
We really only need 24 bits of depth. 32 can be used as a fallback
instead of the other way around.
2025-04-09 22:42:50 +00:00
Jonah Williams
f6c2b1dd78
bump max tasks to a huge number. (#166876)
64 isn't a big enough number, go higher!
2025-04-09 22:42:50 +00:00
Jim Graham
06c572c730
[Impeller] Tessellate paths directly using PathReceiver (#166759)
Currently Impeller asks incoming paths to convert themselves into the
impeller::Path class before tessellating their outlines. This wastes
conversion time when the path is only needed to iterate the path
segments. We now tessellate them directly from a path segment dispatcher
saving the conversion cost.
2025-04-09 22:11:16 +00:00
auto-submit[bot]
2fc716dbeb
Reverts "SliverEnsureSemantics (#165589)" (#166870)
<!-- start_original_pr_link -->
Reverts: flutter/flutter#165589
<!-- end_original_pr_link -->
<!-- start_initiating_author -->
Initiated by: Renzo-Olivares
<!-- end_initiating_author -->
<!-- start_revert_reason -->
Reason for reverting: breaking internal tests
<!-- end_revert_reason -->
<!-- start_original_pr_author -->
Original PR Author: Renzo-Olivares
<!-- end_original_pr_author -->

<!-- start_reviewers -->
Reviewed By: {Piinks}
<!-- end_reviewers -->

<!-- start_revert_body -->
This change reverts the following previous change:
Currently when using a `CustomScrollView`, screen readers cannot list or
move focus to elements that are outside the current Viewport and cache
extent because we do not create semantic nodes for these elements.

This change introduces `SliverEnsureSemantics` which ensures its sliver
child is included in the semantics tree, whether or not it is currently
visible on the screen or within the cache extent. This way screen
readers are aware the elements are there and can navigate to them /
create accessibility traversal menus with this information.
* Under the hood a new flag has been added to `RenderSliver` called
`ensureSemantics`. `RenderViewportBase` uses this in its
`visitChildrenForSemantics` to ensure a sliver is visited when creating
the semantics tree. Previously a sliver was not visited if it was not
visible or within the cache extent. `RenderViewportBase` also uses this
in `describeSemanticsClip` and `describeApproximatePaintClip` to ensure
a sliver child that wants to "ensure semantics" is not clipped out if it
is not currently visible in the viewport or outside the cache extent.
* `RenderSliverMultiBoxAdaptor.semanticBounds` now leverages its first
child as an anchor for assistive technologies to be able to reach it if
the Sliver is a child of `SliverEnsureSemantics`. If not it will still
be dropped from the semantics tree.
* `RenderProxySliver` now considers child overrides of `semanticBounds`.

On the engine side we move from using a joystick method to scroll with
`SemanticsAction.scrollUp` and `SemanticsAction.scrollDown` to using
`SemanticsAction.scrollToOffset` completely letting the browser drive
the scrolling with its current dom scroll position "scrollTop" or
"scrollLeft". This is possible by calculating the total quantity of
content under the scrollable and sizing the scroll element based on
that.

<details open><summary>Code sample</summary>

```dart
// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';

/// Flutter code sample for [SliverEnsureSemantics].

void main() => runApp(const SliverEnsureSemanticsExampleApp());

class SliverEnsureSemanticsExampleApp extends StatelessWidget {
  const SliverEnsureSemanticsExampleApp({super.key});

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(home: SliverEnsureSemanticsExample());
  }
}

class SliverEnsureSemanticsExample extends StatefulWidget {
  const SliverEnsureSemanticsExample({super.key});

  @override
  State<SliverEnsureSemanticsExample> createState() =>
      _SliverEnsureSemanticsExampleState();
}

class _SliverEnsureSemanticsExampleState
    extends State<SliverEnsureSemanticsExample> {
  @override
  Widget build(BuildContext context) {
    final ThemeData theme = Theme.of(context);
    return Scaffold(
      appBar: AppBar(
        backgroundColor: theme.colorScheme.inversePrimary,
        title: const Text('SliverEnsureSemantics Demo'),
      ),
      body: Center(
        child: CustomScrollView(
          semanticChildCount: 106,
          slivers: <Widget>[
            SliverEnsureSemantics(
              sliver: SliverToBoxAdapter(
                child: IndexedSemantics(
                  index: 0,
                  child: Card(
                    child: Padding(
                      padding: const EdgeInsets.all(8.0),
                      child: Column(
                        crossAxisAlignment: CrossAxisAlignment.start,
                        children: <Widget>[
                          Semantics(
                            header: true,
                            headingLevel: 3,
                            child: Text(
                              'Steps to reproduce',
                              style: theme.textTheme.headlineSmall,
                            ),
                          ),
                          const Text('Issue description'),
                          Semantics(
                            header: true,
                            headingLevel: 3,
                            child: Text(
                              'Expected Results',
                              style: theme.textTheme.headlineSmall,
                            ),
                          ),
                          Semantics(
                            header: true,
                            headingLevel: 3,
                            child: Text(
                              'Actual Results',
                              style: theme.textTheme.headlineSmall,
                            ),
                          ),
                          Semantics(
                            header: true,
                            headingLevel: 3,
                            child: Text(
                              'Code Sample',
                              style: theme.textTheme.headlineSmall,
                            ),
                          ),
                          Semantics(
                            header: true,
                            headingLevel: 3,
                            child: Text(
                              'Screenshots',
                              style: theme.textTheme.headlineSmall,
                            ),
                          ),
                          Semantics(
                            header: true,
                            headingLevel: 3,
                            child: Text(
                              'Logs',
                              style: theme.textTheme.headlineSmall,
                            ),
                          ),
                        ],
                      ),
                    ),
                  ),
                ),
              ),
            ),
            SliverFixedExtentList(
              itemExtent: 44.0,
              delegate: SliverChildBuilderDelegate(
                (BuildContext context, int index) {
                  return Card(
                    child: Padding(
                      padding: const EdgeInsets.all(8.0),
                      child: Text('Item $index'),
                    ),
                  );
                },
                childCount: 50,
                semanticIndexOffset: 1,
              ),
            ),
            SliverEnsureSemantics(
              sliver: SliverToBoxAdapter(
                child: IndexedSemantics(
                  index: 51,
                  child: Card(
                    child: Padding(
                      padding: const EdgeInsets.all(8.0),
                      child: Semantics(
                        header: true,
                        child: const Text('Footer 1'),
                      ),
                    ),
                  ),
                ),
              ),
            ),
            SliverEnsureSemantics(
              sliver: SliverToBoxAdapter(
                child: IndexedSemantics(
                  index: 52,
                  child: Card(
                    child: Padding(
                      padding: const EdgeInsets.all(8.0),
                      child: Semantics(
                        header: true,
                        child: const Text('Footer 2'),
                      ),
                    ),
                  ),
                ),
              ),
            ),
            SliverEnsureSemantics(
              sliver: SliverToBoxAdapter(
                child: IndexedSemantics(
                  index: 53,
                  child: Semantics(link: true, child: const Text('Link #1')),
                ),
              ),
            ),
            SliverEnsureSemantics(
              sliver: SliverToBoxAdapter(
                child: IndexedSemantics(
                  index: 54,
                  child: OverflowBar(
                    children: <Widget>[
                      TextButton(
                        onPressed: () {},
                        child: const Text('Button 1'),
                      ),
                      TextButton(
                        onPressed: () {},
                        child: const Text('Button 2'),
                      ),
                    ],
                  ),
                ),
              ),
            ),
            SliverEnsureSemantics(
              sliver: SliverToBoxAdapter(
                child: IndexedSemantics(
                  index: 55,
                  child: Semantics(link: true, child: const Text('Link #2')),
                ),
              ),
            ),
            SliverEnsureSemantics(
              sliver: SliverSemanticsList(
                sliver: SliverFixedExtentList(
                  itemExtent: 44.0,
                  delegate: SliverChildBuilderDelegate(
                    (BuildContext context, int index) {
                      return Semantics(
                        role: SemanticsRole.listItem,
                        child: Card(
                          child: Padding(
                            padding: const EdgeInsets.all(8.0),
                            child: Text('Second List Item $index'),
                          ),
                        ),
                      );
                    },
                    childCount: 50,
                    semanticIndexOffset: 56,
                  ),
                ),
              ),
            ),
            SliverEnsureSemantics(
              sliver: SliverToBoxAdapter(
                child: IndexedSemantics(
                  index: 107,
                  child: Semantics(link: true, child: const Text('Link #3')),
                ),
              ),
            ),
          ],
        ),
      ),
    );
  }
}

// A sliver that assigns the role of SemanticsRole.list to its sliver child.
class SliverSemanticsList extends SingleChildRenderObjectWidget {
  const SliverSemanticsList({super.key, required Widget sliver})
    : super(child: sliver);

  @override
  RenderSliverSemanticsList createRenderObject(BuildContext context) =>
      RenderSliverSemanticsList();
}

class RenderSliverSemanticsList extends RenderProxySliver {
  @override
  void describeSemanticsConfiguration(SemanticsConfiguration config) {
    super.describeSemanticsConfiguration(config);
    config.role = SemanticsRole.list;
  }
}
```
</details>

Fixes: #160217

## 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.
<!-- end_revert_body -->

Co-authored-by: auto-submit[bot] <flutter-engprod-team@google.com>
2025-04-09 18:27:48 +00:00
Jonah Williams
7ab8ce9638
[Impeller] fix image shader matrix to 3x3. (#166612)
Fixes https://github.com/flutter/flutter/issues/165205

Our users expect image shader matrices to be converted to 3x3
2025-04-09 03:37:25 +00:00
Renzo Olivares
3fa9b38705
SliverEnsureSemantics (#165589)
Currently when using a `CustomScrollView`, screen readers cannot list or
move focus to elements that are outside the current Viewport and cache
extent because we do not create semantic nodes for these elements.

This change introduces `SliverEnsureSemantics` which ensures its sliver
child is included in the semantics tree, whether or not it is currently
visible on the screen or within the cache extent. This way screen
readers are aware the elements are there and can navigate to them /
create accessibility traversal menus with this information.
* Under the hood a new flag has been added to `RenderSliver` called
`ensureSemantics`. `RenderViewportBase` uses this in its
`visitChildrenForSemantics` to ensure a sliver is visited when creating
the semantics tree. Previously a sliver was not visited if it was not
visible or within the cache extent. `RenderViewportBase` also uses this
in `describeSemanticsClip` and `describeApproximatePaintClip` to ensure
a sliver child that wants to "ensure semantics" is not clipped out if it
is not currently visible in the viewport or outside the cache extent.
* `RenderSliverMultiBoxAdaptor.semanticBounds` now leverages its first
child as an anchor for assistive technologies to be able to reach it if
the Sliver is a child of `SliverEnsureSemantics`. If not it will still
be dropped from the semantics tree.
* `RenderProxySliver` now considers child overrides of `semanticBounds`.

On the engine side we move from using a joystick method to scroll with
`SemanticsAction.scrollUp` and `SemanticsAction.scrollDown` to using
`SemanticsAction.scrollToOffset` completely letting the browser drive
the scrolling with its current dom scroll position "scrollTop" or
"scrollLeft". This is possible by calculating the total quantity of
content under the scrollable and sizing the scroll element based on
that.

<details open><summary>Code sample</summary>

```dart
// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';

/// Flutter code sample for [SliverEnsureSemantics].

void main() => runApp(const SliverEnsureSemanticsExampleApp());

class SliverEnsureSemanticsExampleApp extends StatelessWidget {
  const SliverEnsureSemanticsExampleApp({super.key});

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(home: SliverEnsureSemanticsExample());
  }
}

class SliverEnsureSemanticsExample extends StatefulWidget {
  const SliverEnsureSemanticsExample({super.key});

  @override
  State<SliverEnsureSemanticsExample> createState() =>
      _SliverEnsureSemanticsExampleState();
}

class _SliverEnsureSemanticsExampleState
    extends State<SliverEnsureSemanticsExample> {
  @override
  Widget build(BuildContext context) {
    final ThemeData theme = Theme.of(context);
    return Scaffold(
      appBar: AppBar(
        backgroundColor: theme.colorScheme.inversePrimary,
        title: const Text('SliverEnsureSemantics Demo'),
      ),
      body: Center(
        child: CustomScrollView(
          semanticChildCount: 106,
          slivers: <Widget>[
            SliverEnsureSemantics(
              sliver: SliverToBoxAdapter(
                child: IndexedSemantics(
                  index: 0,
                  child: Card(
                    child: Padding(
                      padding: const EdgeInsets.all(8.0),
                      child: Column(
                        crossAxisAlignment: CrossAxisAlignment.start,
                        children: <Widget>[
                          Semantics(
                            header: true,
                            headingLevel: 3,
                            child: Text(
                              'Steps to reproduce',
                              style: theme.textTheme.headlineSmall,
                            ),
                          ),
                          const Text('Issue description'),
                          Semantics(
                            header: true,
                            headingLevel: 3,
                            child: Text(
                              'Expected Results',
                              style: theme.textTheme.headlineSmall,
                            ),
                          ),
                          Semantics(
                            header: true,
                            headingLevel: 3,
                            child: Text(
                              'Actual Results',
                              style: theme.textTheme.headlineSmall,
                            ),
                          ),
                          Semantics(
                            header: true,
                            headingLevel: 3,
                            child: Text(
                              'Code Sample',
                              style: theme.textTheme.headlineSmall,
                            ),
                          ),
                          Semantics(
                            header: true,
                            headingLevel: 3,
                            child: Text(
                              'Screenshots',
                              style: theme.textTheme.headlineSmall,
                            ),
                          ),
                          Semantics(
                            header: true,
                            headingLevel: 3,
                            child: Text(
                              'Logs',
                              style: theme.textTheme.headlineSmall,
                            ),
                          ),
                        ],
                      ),
                    ),
                  ),
                ),
              ),
            ),
            SliverFixedExtentList(
              itemExtent: 44.0,
              delegate: SliverChildBuilderDelegate(
                (BuildContext context, int index) {
                  return Card(
                    child: Padding(
                      padding: const EdgeInsets.all(8.0),
                      child: Text('Item $index'),
                    ),
                  );
                },
                childCount: 50,
                semanticIndexOffset: 1,
              ),
            ),
            SliverEnsureSemantics(
              sliver: SliverToBoxAdapter(
                child: IndexedSemantics(
                  index: 51,
                  child: Card(
                    child: Padding(
                      padding: const EdgeInsets.all(8.0),
                      child: Semantics(
                        header: true,
                        child: const Text('Footer 1'),
                      ),
                    ),
                  ),
                ),
              ),
            ),
            SliverEnsureSemantics(
              sliver: SliverToBoxAdapter(
                child: IndexedSemantics(
                  index: 52,
                  child: Card(
                    child: Padding(
                      padding: const EdgeInsets.all(8.0),
                      child: Semantics(
                        header: true,
                        child: const Text('Footer 2'),
                      ),
                    ),
                  ),
                ),
              ),
            ),
            SliverEnsureSemantics(
              sliver: SliverToBoxAdapter(
                child: IndexedSemantics(
                  index: 53,
                  child: Semantics(link: true, child: const Text('Link #1')),
                ),
              ),
            ),
            SliverEnsureSemantics(
              sliver: SliverToBoxAdapter(
                child: IndexedSemantics(
                  index: 54,
                  child: OverflowBar(
                    children: <Widget>[
                      TextButton(
                        onPressed: () {},
                        child: const Text('Button 1'),
                      ),
                      TextButton(
                        onPressed: () {},
                        child: const Text('Button 2'),
                      ),
                    ],
                  ),
                ),
              ),
            ),
            SliverEnsureSemantics(
              sliver: SliverToBoxAdapter(
                child: IndexedSemantics(
                  index: 55,
                  child: Semantics(link: true, child: const Text('Link #2')),
                ),
              ),
            ),
            SliverEnsureSemantics(
              sliver: SliverSemanticsList(
                sliver: SliverFixedExtentList(
                  itemExtent: 44.0,
                  delegate: SliverChildBuilderDelegate(
                    (BuildContext context, int index) {
                      return Semantics(
                        role: SemanticsRole.listItem,
                        child: Card(
                          child: Padding(
                            padding: const EdgeInsets.all(8.0),
                            child: Text('Second List Item $index'),
                          ),
                        ),
                      );
                    },
                    childCount: 50,
                    semanticIndexOffset: 56,
                  ),
                ),
              ),
            ),
            SliverEnsureSemantics(
              sliver: SliverToBoxAdapter(
                child: IndexedSemantics(
                  index: 107,
                  child: Semantics(link: true, child: const Text('Link #3')),
                ),
              ),
            ),
          ],
        ),
      ),
    );
  }
}

// A sliver that assigns the role of SemanticsRole.list to its sliver child.
class SliverSemanticsList extends SingleChildRenderObjectWidget {
  const SliverSemanticsList({super.key, required Widget sliver})
    : super(child: sliver);

  @override
  RenderSliverSemanticsList createRenderObject(BuildContext context) =>
      RenderSliverSemanticsList();
}

class RenderSliverSemanticsList extends RenderProxySliver {
  @override
  void describeSemanticsConfiguration(SemanticsConfiguration config) {
    super.describeSemanticsConfiguration(config);
    config.role = SemanticsRole.list;
  }
}
```
</details>

Fixes: #160217

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

---------

Co-authored-by: Renzo Olivares <roliv@google.com>
2025-04-09 01:58:11 +00:00
engine-flutter-autoroll
6353a00fb7
Roll Skia from 7b929584566c to ac01f9306a0c (3 revisions) (#166776)
https://skia.googlesource.com/skia.git/+log/7b929584566c..ac01f9306a0c

2025-04-08 jlavrova@google.com Small fix in Bidi API
2025-04-08 zengyonghust@gmail.com Delete the dead code in
GrGeometryProcessor.cpp
2025-04-08 jamesgk@google.com [graphite] Support lifting expressions to
vertex shader

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
jlavrova@google.com,jonahwilliams@google.com,kjlubick@google.com 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
2025-04-09 01:58:11 +00:00
Jonah Williams
b013e41803
[Impeller] keep device holder and allocator alive until last vk image is destroyed. (#166725)
Fixes https://github.com/flutter/flutter/issues/166410

keep the potentially shutdown context alive until the last texture is
reclaimed, to work around issues where pending UI tasks aren't flushed
during platform view shutdown.
2025-04-09 01:55:09 +00:00
Jonah Williams
fda7ffbd9a
[Impeller] disable no decal metal test. (#166771)
Fixes https://github.com/flutter/flutter/issues/166020

This test is invalid because the renderer assumes metal/vulkan will
always have decal support (they do, its in base 1.0 for both). DIsabling
decal causes this test to attempt to use a GLES only shader that is not
available on the metal backend.
2025-04-09 01:49:07 +00:00
Alexander Markov
41c32eb57a
Remove package:macros and package:_macros from pubspec.yaml (#166749)
Update Flutter for the upcoming removal of pkg/_macros and pkg/macros
from Dart SDK: https://dart-review.googlesource.com/c/sdk/+/420680.
2025-04-09 01:49:07 +00:00
engine-flutter-autoroll
c827c535bb
Roll Skia from 57a1644f0f8f to 7b929584566c (1 revision) (#166760)
https://skia.googlesource.com/skia.git/+log/57a1644f0f8f..7b929584566c

2025-04-08 bungeman@google.com [fontations] Flat pixel geometry only
when requested

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
jlavrova@google.com,jonahwilliams@google.com,kjlubick@google.com 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
2025-04-08 17:20:08 +00:00
engine-flutter-autoroll
ca37883165
Roll Skia from 515eb6238867 to 57a1644f0f8f (1 revision) (#166748)
https://skia.googlesource.com/skia.git/+log/515eb6238867..57a1644f0f8f

2025-04-08 danieldilan@google.com Define flag again for PNG encoding

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
jlavrova@google.com,jonahwilliams@google.com,kjlubick@google.com 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
2025-04-08 14:58:32 +00:00
engine-flutter-autoroll
242f413f6e
Roll Skia from f493d403c01b to 245d2b8fb042 (3 revisions) (#166720)
https://skia.googlesource.com/skia.git/+log/f493d403c01b..245d2b8fb042

2025-04-07 robertphillips@google.com Add debugging info for Assert
firing in Chrome
2025-04-07 jvanverth@google.com [graphite] Store ref to textureProxy in
CoverageMaskShape.
2025-04-07 skia-autoroll@skia-public.iam.gserviceaccount.com Roll
vulkan-deps from fb4fe29989cb to 6a9ff527eade (7 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 aaclarke@google.com,jlavrova@google.com,kjlubick@google.com 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
2025-04-07 23:22:20 +00:00
Yegor
0a29c6d444
[web] reland fix text selection offset in multi-line fields (#166714)
Fixes https://github.com/flutter/flutter/issues/162698

This reland contains the original changes from
https://github.com/flutter/flutter/pull/166565, plus Safari-specific
test fixes.
2025-04-07 22:37:08 +00:00
engine-flutter-autoroll
110b07835a
Roll Skia from 5f0f9b76b975 to f493d403c01b (3 revisions) (#166710)
https://skia.googlesource.com/skia.git/+log/5f0f9b76b975..f493d403c01b

2025-04-07 jvanverth@google.com De-virtualize some of AtlasSubRun.
2025-04-07 bungeman@google.com Do not add nullptr typeface to cache
2025-04-07 bungeman@google.com [fci] Do not add nullptr typeface to
cache

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 aaclarke@google.com,jlavrova@google.com,kjlubick@google.com 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
2025-04-07 20:27:13 +00:00
Jason Simmons
920865d4a2
Roll HarfBuzz to 11.0.0 (#166596)
Fixes https://github.com/flutter/flutter/issues/162819
2025-04-07 20:25:34 +00:00
auto-submit[bot]
778ed9e8b6
Reverts "[web] fix text selection offset in multi-line fields (#166565)" (#166644)
<!-- start_original_pr_link -->
Reverts: flutter/flutter#166565
<!-- end_original_pr_link -->
<!-- start_initiating_author -->
Initiated by: jtmcdole
<!-- end_initiating_author -->
<!-- start_revert_reason -->
Reason for reverting: Tree is broken
https://ci.chromium.org/ui/p/flutter/builders/prod/Linux%20linux_web_engine_tests/1240/overview
<!-- end_revert_reason -->
<!-- start_original_pr_author -->
Original PR Author: yjbanov
<!-- end_original_pr_author -->

<!-- start_reviewers -->
Reviewed By: {justinmc}
<!-- end_reviewers -->

<!-- start_revert_body -->
This change reverts the following previous change:
Fixes https://github.com/flutter/flutter/issues/162698
<!-- end_revert_body -->

Co-authored-by: auto-submit[bot] <flutter-engprod-team@google.com>
2025-04-05 17:14:19 +00:00
engine-flutter-autoroll
31dfefc79e
Roll Skia from a7da13848085 to 943df306bc3a (8 revisions) (#166609)
https://skia.googlesource.com/skia.git/+log/a7da13848085..943df306bc3a

2025-04-04 skia-autoroll@skia-public.iam.gserviceaccount.com Roll skcms
from 374c10637d4a to 8faeb7707de8 (1 revision)
2025-04-04 kjlubick@google.com Minor cleanups
2025-04-04 skia-autoroll@skia-public.iam.gserviceaccount.com Roll
vulkan-deps from e615014fb3e1 to 5d081c7499b4 (2 revisions)
2025-04-04 kjlubick@google.com Remove unused function in SkScan.h
2025-04-04 bungeman@google.com Simplify "font with random glyph mask
formats" gm.
2025-04-04 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE
from 0f9feb495ff9 to 127aec7e6c2c (13 revisions)
2025-04-04 skia-autoroll@skia-public.iam.gserviceaccount.com Roll Dawn
from 22e0e37fcf6e to db66eb3d2ec7 (22 revisions)
2025-04-04 skia-autoroll@skia-public.iam.gserviceaccount.com Roll
vulkan-deps from 897477bba573 to e615014fb3e1 (7 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 aaclarke@google.com,egdaniel@google.com,kjlubick@google.com 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
2025-04-04 22:00:41 +00:00
chunhtai
7afe7a5f8b
Adds semantics input type (#165925)
<!--
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 https://github.com/flutter/flutter/issues/162130

## Pre-launch Checklist

- [ ] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [ ] 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].

<!-- 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
2025-04-04 21:15:12 +00:00
Jim Graham
790d1b1d9a
Relands "[Impeller] Render conics without conversion from Flutter apps (#166305)" (#166598)
Reverts flutter/flutter#166591

Golden diffs were not discovered the first time this was submitted.
Re-submitting to double check the goldens.
2025-04-04 20:47:09 +00:00
Yegor
a56ff4890d
[web] fix text selection offset in multi-line fields (#166565)
Fixes https://github.com/flutter/flutter/issues/162698
2025-04-04 20:30:18 +00:00
Jonah Williams
f00d387cb8
[Impeller] if drawTextFrame scale is massive, convert to Path. (#166234)
Fixes https://github.com/flutter/flutter/issues/165583
Fixes https://github.com/flutter/flutter/issues/136112

If the text scale gets too big, its faster (and higher res) to switch to
path rendering than to keep using the glyph atlas cache.
2025-04-04 20:28:25 +00:00
Matej Knopp
a400e79ce6
[Embedder] Only call removeview callback when raster thread is done with the view (#164571)
Fixes
https://github.com/flutter/flutter/issues/164564#issuecomment-2698714466

This would ensure that raster thread is completely done with the view,
i.e. it won't try to use the opengl context, which might be associated
with view window. So the client can know for sure, that when the
callback returns, it is safe to destroy the view and container window.

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

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

---------

Co-authored-by: Loïc Sharma <737941+loic-sharma@users.noreply.github.com>
2025-04-04 18:38:19 +00:00