30243 Commits

Author SHA1 Message Date
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
engine-flutter-autoroll
c45cead566
Roll Dart SDK from 4293d50dd30d to 87965ab4864e (3 revisions) (#166571)
https://dart.googlesource.com/sdk.git/+log/4293d50dd30d..87965ab4864e

2025-04-04 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-265.0.dev
2025-04-04 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-264.0.dev
2025-04-03 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-263.0.dev

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/dart-sdk-flutter
Please CC aaclarke@google.com,dart-vm-team@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-04 18:12:55 +00:00
Jackson Gardner
4a8d42a9b1
Disable firefox image_to_byte_data_test as a group. (#166559)
Grouping allows us to avoid running the setup function when the tests
are skipped, and the setup function is where it was actually stalling.
Skipping as a group seems to avoid this problem.

We can turn `bringup: true` off of the web unit tests now.
2025-04-04 18:12:55 +00:00
Jia Hao
97f53167b3
Add x64 ddm variants (#166511)
As a follow up to https://github.com/flutter/flutter/pull/162855. Adding
x64 allows us to add tests internally.

Towards b/393719931

Tested:

```
$ bin/et build --config ci/android_release_arm64_ddm
$ bin/et build --config ci/android_release_x64_ddm
```

cc @sigmundch 

## 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.
- [ ] I updated/added relevant documentation (doc comments with `///`).
- [ ] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [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-04 18:11:21 +00:00
engine-flutter-autoroll
485d6b8ae3
Roll Skia from af7ff0e98c4e to a7da13848085 (3 revisions) (#166560)
https://skia.googlesource.com/skia.git/+log/af7ff0e98c4e..a7da13848085

2025-04-03 danieldilan@google.com Add correct type to SkStringPrintf in
EncodeTest
2025-04-03 nicolettep@google.com [graphite] Formatting fixes
2025-04-03 bungeman@google.com Mark SkScalerContext::fRec const

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 18:11:21 +00:00
auto-submit[bot]
b1c08092d0
Reverts "[Impeller] Render conics without conversion from Flutter apps (#166305)" (#166591)
<!-- start_original_pr_link -->
Reverts: flutter/flutter#166305
<!-- end_original_pr_link -->
<!-- start_initiating_author -->
Initiated by: gaaclarke
<!-- end_initiating_author -->
<!-- start_revert_reason -->
Reason for reverting: Integration golden test failures. Please reland it
this and address golden diffs.
<!-- end_revert_reason -->
<!-- start_original_pr_author -->
Original PR Author: flar
<!-- end_original_pr_author -->

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

<!-- start_revert_body -->
This change reverts the following previous change:
Now that Impeller performs high fidelity tessellation of Conic curves we
will no longer convert Flutter app's conic curves into approximated
quadratic curves.
<!-- end_revert_body -->

Co-authored-by: auto-submit[bot] <flutter-engprod-team@google.com>
2025-04-04 17:10:47 +00:00
engine-flutter-autoroll
2615ab6c19
Roll Dart SDK from d174ec16c3ea to 4293d50dd30d (1 revision) (#166557)
https://dart.googlesource.com/sdk.git/+log/d174ec16c3ea..4293d50dd30d

2025-04-03 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-262.0.dev

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/dart-sdk-flutter
Please CC aaclarke@google.com,dart-vm-team@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-03 21:25:07 +00:00
engine-flutter-autoroll
dafbc0e1c0
Roll Skia from 5f65df75febd to af7ff0e98c4e (7 revisions) (#166551)
https://skia.googlesource.com/skia.git/+log/5f65df75febd..af7ff0e98c4e

2025-04-03 danieldilan@google.com Implement ConvertPixels in
SkPngEncoder with guard for Chrome
2025-04-03 kjlubick@google.com Decouple SkEdge and SkAnalyticEdge
2025-04-03 kjlubick@google.com Clean up SkPathEdgeIter::Edge enum
2025-04-03 borenet@google.com [infra] Fix OS dimension for migrated
GalaxyS7_G930FD, Mokey, and Nexus7
2025-04-03 egdaniel@google.com Check angle driverVersion for Ganesh
powerVR workaround.
2025-04-03 michaelludwig@google.com [graphite] Add
RecorderOptions.fRequireOrderedRecordings
2025-04-03 bungeman@google.com Remove forceOffGenerateImageFromPath

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-03 20:12:37 +00:00
Jim Graham
cb0e649e78
[Impeller] Render conics without conversion from Flutter apps (#166305)
Now that Impeller performs high fidelity tessellation of Conic curves we
will no longer convert Flutter app's conic curves into approximated
quadratic curves.
2025-04-03 20:06:23 +00:00
engine-flutter-autoroll
ceec33f16b
Roll Skia from b67e53719e78 to 5f65df75febd (2 revisions) (#166538)
https://skia.googlesource.com/skia.git/+log/b67e53719e78..5f65df75febd

2025-04-03 robertphillips@google.com [graphite] Fix PipelineUsesInEpoch
UMA stat
2025-04-03 nicolettep@google.com [graphite] Fix ordering of image layout
transition call

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-03 17:28:13 +00:00
Jenn Magder
73590fb0d2
Update docs to debug the Android embedder (#166170)
Update Android embedder debugging instructions.

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

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-03 17:23:05 +00:00
engine-flutter-autoroll
269d544a9b
Roll Dart SDK from 72562ca93bb5 to d174ec16c3ea (1 revision) (#166525)
https://dart.googlesource.com/sdk.git/+log/72562ca93bb5..d174ec16c3ea

2025-04-03 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-261.0.dev

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/dart-sdk-flutter
Please CC aaclarke@google.com,dart-vm-team@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-03 15:47:27 +00:00
Matej Knopp
3237222b62
[macOS] Implement merged UI and platform thread (#162883)
Original issue: https://github.com/flutter/flutter/issues/150525

This PR lets the macOS embedder run both with and without UI and
platform thread merged.

Thread merging is controlled through `FLTEnableMergedPlatformUIThread`
`info.plist` option similar to iOS embedder, though the default value is
currently `false`.

Changes in the resize / vsync synchronization:

- Added `FlutterRunLoop` class to schedule Flutter tasks on main thread
in a way where it is possible to only process these (Flutter posted)
tasks while waiting for correct frame size during resizing. This
significantly simplifies the resize synchronization and makes the same
code work both with separate UI thread and with UI and platform thread
merged.
- `FlutterThreadSynchronizer` has been renamed to
`FlutterResizeSynchronizer` vastly simplified, mutex and conditions are
removed and the blocking is now done by only processing Flutter messages
while waiting for resizing. It is now per view (instead of storing a
viewId->Size map internally) and owned by the view itself, instead of
engine.
- This approach to resize synchronization will work for Windows and
Linux as well. This will allow us to conceptually consolidate the way we
do threading and resize synchronization on all three desktop embedders.

## 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-03 15:25:17 +00:00
engine-flutter-autoroll
9a363420db
Roll Dart SDK from 2a1a13cc3a91 to 72562ca93bb5 (2 revisions) (#166514)
https://dart.googlesource.com/sdk.git/+log/2a1a13cc3a91..72562ca93bb5

2025-04-03 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-260.0.dev
2025-04-03 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-259.0.dev

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/dart-sdk-flutter
Please CC aaclarke@google.com,dart-vm-team@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-03 07:44:26 +00:00
engine-flutter-autoroll
5f33d1800b
Roll Fuchsia Linux SDK from v7PGvypiiWLO8PbsZ... to vYisSsIgqw0mqFRVJ... (#166508)
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 aaclarke@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-03 03:22:28 +00:00
engine-flutter-autoroll
ef084c83ee
Roll Dart SDK from b8b4076b1237 to 2a1a13cc3a91 (1 revision) (#166504)
https://dart.googlesource.com/sdk.git/+log/b8b4076b1237..2a1a13cc3a91

2025-04-02 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-258.0.dev

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/dart-sdk-flutter
Please CC aaclarke@google.com,dart-vm-team@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-03 02:08:07 +00:00
engine-flutter-autoroll
51aabac708
Roll Skia from 75a0ec473181 to c106d7831592 (1 revision) (#166499)
https://skia.googlesource.com/skia.git/+log/75a0ec473181..c106d7831592

2025-04-02 jvanverth@google.com [graphite] Limit plot invalidation in
DrawAtlas::compact().

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-03 01:04:26 +00:00
Matan Lurey
997f742ac5
Fix ISSUE_TEMPLATE Ordering: 10 < 9, but 10 > 09 (#166455)
Unfortunately `10_google3_bug.yml` comes before `2_bug.yml`.

This changes the name (slightly) of the issue templates based on the
instructions from GitHub on what to do when you have 10+ issue templates
(as a side-note: I wonder if we need/still use umbrella bugs for the
feature tracker, or two types of performance bugs)
2025-04-03 00:24:34 +00:00
Yegor
fbbe0f9e7a
[a11y] add SemanticsValidationResult (#165935)
Add `SemanticsValidationResult` to semantics that maps onto
`aria-invalid`.

Fixes https://github.com/flutter/flutter/issues/162142
2025-04-02 22:00:19 +00:00
engine-flutter-autoroll
a22e3fec6e
Roll Skia from 52cbb917fffd to 75a0ec473181 (21 revisions) (#166484)
https://skia.googlesource.com/skia.git/+log/52cbb917fffd..75a0ec473181

2025-04-02 thomsmit@google.com [graphite] Align the new pendingBase to
the stride of incoming elements.
2025-04-02 nicolettep@google.com [graphite] Add Vulkan render pass and
texture changes to support reading from the dst texture
2025-04-02 nicolettep@google.com [graphite] Align DrawPass and
RenderPassDesc dst read strategy
2025-04-02 drott@chromium.org [Fontations] Path not modified for
advanced metrics, PostScript name
2025-04-02 bungeman@google.com [fontations] Set font format in
onGetAdvancedMetrics
2025-04-02 jvanverth@google.com Make VertexFiller backend independent.
2025-04-02 skia-autoroll@skia-public.iam.gserviceaccount.com Roll
vulkan-deps from 5b6a0bdc7c48 to b0afd1a16c52 (2 revisions)
2025-04-02 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE
from bbf92d12266d to c9956ce0c4be (9 revisions)
2025-04-02 skia-autoroll@skia-public.iam.gserviceaccount.com Roll Dawn
from 1411699ba4cd to bd7a6d4fe2b1 (27 revisions)
2025-04-01 danieldilan@google.com Implement asImageFilter for
SkShaderMaskFilter
2025-04-01 robertphillips@google.com [graphite] Expand
PrecompileContext::reportPipelineStats
2025-04-01 skia-autoroll@skia-public.iam.gserviceaccount.com Roll
vulkan-deps from 12ef946decd5 to 5b6a0bdc7c48 (3 revisions)
2025-04-01 skia-autoroll@skia-public.iam.gserviceaccount.com Roll skcms
from 1e365691d01a to 374c10637d4a (1 revision)
2025-04-01 bungeman@google.com Fix gn side fontations sources
2025-04-01 robertphillips@google.com Add
SK_HISTOGRAM_CUSTOM_EXACT_LINEAR
2025-04-01 sharaks@google.com Merge 2 release notes into
RELEASE_NOTES.md
2025-04-01 sharaks@google.com Update Skia milestone to 137
2025-04-01 egdaniel@google.com Plumb SurfaceDrawContext through
asFragmentProcessor calls.
2025-04-01 borenet@google.com [infra] Older versions of setarch require
a parameter
2025-04-01 robertphillips@google.com Address TSAN issue in
GrSurfaceProxy::backingStoreDimensions
2025-04-01 jamesgk@google.com [ganesh] Fix blank screen when creating
offscreen surface

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-02 21:29:46 +00:00