Commit Graph

28411 Commits

Author SHA1 Message Date
htoor3
438394f01e [web] Move text editing nodes outside of shadowDOM - reopened (flutter/engine#40904)
[web] Move text editing nodes outside of shadowDOM - reopened
2023-04-05 23:42:21 +00:00
gaaclarke
1e5a5f1935 [Impeller] adjusted the rotated text test to have an opaque background and account for screen scale (flutter/engine#40954)
[Impeller] adjusted the rotated text test to have an opaque background and account for screen scale
2023-04-05 23:36:03 +00:00
Jackson Gardner
911b85dc77 Copy canvaskit files directly into flutter_web_sdk (flutter/engine#40951)
Copy canvaskit files directly into `flutter_web_sdk`
2023-04-05 22:55:41 +00:00
Camille Simon
c109f78ae5 [Android] Make temporary fix for Samsung spell checker giving blank results for all words (flutter/engine#40924)
Temporarily filters out invalid spell check results (""/ " ") received
from the Samsung spell checker, since this is the result that may be
returned by all words (correctly spelled and misspelled) from
observation.

Temporary fix for
[#120608](https://github.com/flutter/flutter/issues/120608).

## 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] and the [C++,
Objective-C, Java style guides].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I added new tests to check the change I am making or feature I am
adding, or Hixie said the PR is test-exempt. See [testing the engine]
for instructions on writing and running engine tests.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I signed the [CLA].
- [ ] All existing and new tests are passing.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#overview
[Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene
[Flutter Style Guide]:
https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo
[C++, Objective-C, Java style guides]:
https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
[testing the engine]:
https://github.com/flutter/flutter/wiki/Testing-the-engine
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes
[Discord]: https://github.com/flutter/flutter/wiki/Chat
2023-04-05 15:16:37 -07:00
Emircan Uysaler
647ad5e49e [fuchsia] Rename params and add comments to FlatlandConnection (flutter/engine#40941)
This CL renames params and adds comments to FlatlandConnection to
clarify behavior.

Bug: fxb/123838
2023-04-05 18:03:22 -04:00
Dan Field
f54a6ed879 [Impeller] Fix coverage values when a stroked path is rotated (flutter/engine#40917)
[Impeller] Fix coverage values when a stroked path is rotated
2023-04-05 21:18:07 +00:00
skia-flutter-autoroll
6c22841508 Roll Fuchsia Linux SDK from wylduTqeHd3pLUo0V... to XMKD7xno4MYCkCYzS... (flutter/engine#40947)
Roll Fuchsia Linux SDK from wylduTqeHd3pLUo0V... to XMKD7xno4MYCkCYzS...
2023-04-05 21:14:23 +00:00
Zachary Anderson
1c8046db69 Revert "Roll Skia from dfc65350a1fd to 1d1783aa55c3 (3 revisions)" (flutter/engine#40950)
Reverts flutter/engine#40943

Reverting for gold diffs on
https://github.com/flutter/flutter/pull/124261
2023-04-05 13:56:01 -07:00
fzyzcjy
047e7d61f5 Fix super tiny typo (flutter/engine#40932)
Fix super tiny typo
2023-04-05 18:31:48 +00:00
Yegor
7231a4d15c [web] fix SkFinalizationRegistry for dart2js (attempt 4) (flutter/engine#40938)
(this is attempt 4; details below)

Remove obsolete object caches and introduce a simpler way to manage
native objects:

* Remove the unused `SynchronousSkiaObjectCache`.
* Introduce new library `native_memory.dart` that's smaller and simpler
than `skia_object_cache.dart`.
* Introduce two types of native object references:
  * `UniqueRef` a reference with a unique Dart object owner.
* `CountedRef` a ref-counted reference with multiple Dart object owners.
* All native references use GC (via `FinalizationRegistry`) as a
back-up.
* The new library removes everything related to object resurrection that
was needed only in browsers that didn't support `FinalizationRegistry`.
All browsers support it now.
* Remove the ad hoc `SkParagraph` cache that predates the introduction
of `Paragraph.dispose`.
* Rewrite `CkParagraph` in terms of `UniqueRef`.
* Rewrite `CkImage` in terms of `CountedRef`; delete `SkiaObjectBox`.

This PR does not migrate all objects from the old
`skia_object_cache.dart` to `native_memory.dart`. That would be too big
of a change. The migration can be done in multiple smaller PRs.

This also removes a few unnecessary relayouts observed in
https://github.com/flutter/flutter/issues/120921, but not all of them
(more details in
https://github.com/flutter/flutter/issues/120921#issuecomment-1481958762)

## About attempt 4

More info about the revert of attempt 3 in
https://github.com/flutter/engine/pull/40937.

In this attempt I check that the browser supports `FinalizationRegistry`
before registering the object. This will allow the code to run in older
browsers, but there will be no protection from memory leaks when the app
fails to dispose of the respective objects.

## Benchmarks

Now that this landed in flutter/flutter I have some benchmark numbers
from the devicelab. The `text_out_of_picture_bounds` benchmark dropped
by 3-4x (lower is better):

<img width="358" alt="Screenshot 2023-04-04 at 6 13 06 PM"
src="https://user-images.githubusercontent.com/211513/229956170-a5399ed3-c779-4af0-babb-ea40440f96ff.png">

The repro provided in https://github.com/flutter/flutter/issues/123204
dropped from 110ms/frame to 10ms/frame.
2023-04-05 11:08:00 -07:00
skia-flutter-autoroll
5c268ac1ca Roll Skia from dfc65350a1fd to 1d1783aa55c3 (3 revisions) (flutter/engine#40943)
Roll Skia from dfc65350a1fd to 1d1783aa55c3 (3 revisions)
2023-04-05 17:55:53 +00:00
Chris Bracken
35cb38e820 [macOS] Remove FlutterApplication class (flutter/engine#40939)
The need for the FlutterApplication NSApplication subclass was
eliminated in eef10ab310. The relevant app
termination logic was moved into FlutterAppDelegate in that patch.
Removing FlutterApplication needs to be done in three stages:
1. Migrate logic to FlutterAppDelegate (done in above patch)
2. Update Flutter tool template. Update migrator to migrate all apps
using FlutterApplication back to NSApplication. This is done in
https://github.com/flutter/flutter/pull/124173.
3. Eliminate FlutterApplication.h header since all references to it have
now been removed.

No tests since, as described above, this is the removal of unused (as of
step 2 above) code.

Issue: https://github.com/flutter/flutter/issues/30735

## 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] and the [C++,
Objective-C, Java style guides].
- [X] I listed at least one issue that this PR fixes in the description
above.
- [ ] I added new tests to check the change I am making or feature I am
adding, or Hixie said the PR is test-exempt. See [testing the engine]
for instructions on writing and running engine tests.
- [X] I updated/added relevant documentation (doc comments with `///`).
- [X] I signed the [CLA].
- [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/wiki/Tree-hygiene#overview
[Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene
[Flutter Style Guide]:
https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo
[C++, Objective-C, Java style guides]:
https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
[testing the engine]:
https://github.com/flutter/flutter/wiki/Testing-the-engine
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes
[Discord]: https://github.com/flutter/flutter/wiki/Chat
2023-04-05 09:07:00 -07:00
godofredoc
aa08e3ed32 Migrate mac_unopt to engine_v2. (flutter/engine#40860)
Migrate mac_unopt to engine_v2.
2023-04-05 15:53:14 +00:00
skia-flutter-autoroll
c026892218 Manual roll Dart SDK from beff36793081 to 36ace2c92e0a (2 revisions) (flutter/engine#40942)
Manual roll Dart SDK from beff36793081 to 36ace2c92e0a (2 revisions)
2023-04-05 15:53:13 +00:00
skia-flutter-autoroll
ec2a481035 Roll Skia from c162dae2b297 to dfc65350a1fd (16 revisions) (flutter/engine#40940)
Roll Skia from c162dae2b297 to dfc65350a1fd (16 revisions)
2023-04-05 15:18:09 +00:00
Brandon DeRosier
6142206a83 [Impeller] Snap glyph positions to screen space pixels and map UVs correctly (flutter/engine#40912) 2023-04-04 23:00:34 -07:00
Chris Bracken
eef10ab310 [macOS] Handle termination in FlutterAppDelegate (flutter/engine#40929)
Moves application termination handling to FlutterAppDelegate.
Previously, we required macOS applications using Flutter to ensure their
main application class was FlutterApplication. Instead, we now do all
handling in FlutterAppDelegate and FlutterEngine.

There are two termination workflows to consider:
* Termination requested from framework side: In this case, then engine
receives a `System.exitApplication` method call, and starts the app
termination workflow via `[FlutterEngine
requestApplicationTermination:exitType:result]`.
* Termination requested from macOS (e.g. Cmd-Q): In this case,
`FlutterAppDelegate`'s `applicationShouldTerminate:` handler is invoked
by AppKit, and the delegate starts the app termination workflow via
`[FlutterEngine requestApplicationTermination:exitType:result]`.

In either case, at this point, if the request is not cancellable, the
app immediately exits. If it is cancellable, the embedder sends a
`System.requestAppExit` method channel invocation to the framework,
which responds with either `exit` or `cancel`. In the case of `exit` we
immediately exit, otherwise we do nothing and the app continues running.

This is a minor refactoring of the original approach we took in:
https://github.com/flutter/engine/pull/39836

This does not remove the FlutterApplication class, since the framework
migration from NSApplication to FlutterApplication still depends on it.
A followup patch with replace the migration with a reverse migration
will land, then FlutterApplication will be removed.

Issue: https://github.com/flutter/flutter/issues/30735

No new tests since this refactors existing behaviour while retaining the
same app semantics as before.
2023-04-04 22:19:18 -07:00
skia-flutter-autoroll
89d0e52d90 Manual roll Dart SDK from f97b9d9b2f64 to beff36793081 (1 revision) (flutter/engine#40934)
Manual roll requested by asiva@google.com

https://dart.googlesource.com/sdk.git/+log/f97b9d9b2f64..beff36793081

2023-04-04 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.0.0-409.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-engine
Please CC
aam@google.com,asiva@google.com,dart-vm-team@google.com,jonahwilliams@google.com,rmistry@google.com
on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter Engine:
https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
2023-04-04 22:13:47 -07:00
Casey Hillers
8a7ac5f702 Revert "[web] remove obsolete object caches; simplify native object management" (flutter/engine#40937)
Reverts flutter/engine#40894

This is breaking Google Testing. See b/277004090
2023-04-04 21:49:35 -07:00
godofredoc
7b7de6bb5d Reland "Sync Mac Host Engine with its engine v2 counterpart."" (flutter/engine#40906)
Reland "Sync Mac Host Engine with its engine v2 counterpart.""
2023-04-05 03:46:56 +00:00
Jackson Gardner
28005d57f6 The dart:wasm library is no longer used directly by user code. (flutter/engine#40920)
The `dart:wasm` library is no longer used directly by user code.
2023-04-04 22:33:25 +00:00
Chinmay Garde
f79930b74c [Impeller] Update API name to indicate descriptor set registrations. (flutter/engine#40922)
[Impeller] Update API name to indicate descriptor set registrations.
2023-04-04 22:32:49 +00:00
Chinmay Garde
e30a98acbc [Impeller] Clarify validation log behavior. (flutter/engine#40921)
[Impeller] Clarify validation log behavior.
2023-04-04 22:24:58 +00:00
skia-flutter-autoroll
13bec2b02e Roll Dart SDK from 73127306ac6b to f97b9d9b2f64 (2 revisions) (flutter/engine#40923)
Roll Dart SDK from 73127306ac6b to f97b9d9b2f64 (2 revisions)
2023-04-04 22:24:56 +00:00
skia-flutter-autoroll
5a9470ab3c Roll Skia from 827013b3dbef to c162dae2b297 (6 revisions) (flutter/engine#40919)
Roll Skia from 827013b3dbef to c162dae2b297 (6 revisions)
2023-04-04 22:01:37 +00:00
Yegor
ebfd37a6f7 [web] remove obsolete object caches; simplify native object management (flutter/engine#40894)
(this is attempt 3; details below)

Remove obsolete object caches and introduce a simpler way to manage
native objects:

* Remove the unused `SynchronousSkiaObjectCache`.
* Introduce new library `native_memory.dart` that's smaller and simpler
than `skia_object_cache.dart`.
* Introduce two types of native object references:
  * `UniqueRef` a reference with a unique Dart object owner.
* `CountedRef` a ref-counted reference with multiple Dart object owners.
* All native references use GC (via `FinalizationRegistry`) as a
back-up.
* The new library removes everything related to object resurrection that
was needed only in browsers that didn't support `FinalizationRegistry`.
All browsers support it now.
* Remove the ad hoc `SkParagraph` cache that predates the introduction
of `Paragraph.dispose`.
* Rewrite `CkParagraph` in terms of `UniqueRef`.
* Rewrite `CkImage` in terms of `CountedRef`; delete `SkiaObjectBox`.

This PR does not migrate all objects from the old
`skia_object_cache.dart` to `native_memory.dart`. That would be too big
of a change. The migration can be done in multiple smaller PRs.

This also removes a few unnecessary relayouts observed in
https://github.com/flutter/flutter/issues/120921, but not all of them
(more details in
https://github.com/flutter/flutter/issues/120921#issuecomment-1481958762)

## About attempt 3

More about [attempt 2
here](https://github.com/flutter/engine/pull/40862).

In this attempt 3 I'm replacing the `factory` with a top-level function.
2023-04-04 12:43:31 -07:00
Jonah Williams
b0d4533ab9 Revert "[Impeller] reduce advanced blend subpass count for single input with foreground color" (flutter/engine#40914)
Reverts flutter/engine#40886

This renders incorrectly when applied directly to contents instead of as
a filter, essentially due to some transform mis handling.

The code only works when the snapshot has an identity transform, which
is only true as a subpass
2023-04-04 12:12:49 -07:00
skia-flutter-autoroll
5ded9d978a Roll Skia from 548bef69d1ae to 827013b3dbef (8 revisions) (flutter/engine#40913)
Roll Skia from 548bef69d1ae to 827013b3dbef (8 revisions)
2023-04-04 17:46:31 +00:00
joshualitt
bee9f91790 [web] Migrate EventListener's to JS types. (flutter/engine#40566) 2023-04-04 09:53:13 -07:00
skia-flutter-autoroll
cfb2ed4e06 Roll Skia from ad459a5b8df4 to 548bef69d1ae (1 revision) (flutter/engine#40905)
Roll Skia from ad459a5b8df4 to 548bef69d1ae (1 revision)
2023-04-04 15:21:02 +00:00
Jason Simmons
ae08695e6d [Impeller] Emulate Skia's SK_LEGACY_IGNORE_DRAW_VERTICES_BLEND_WITH_NO_SHADER in drawVertices (flutter/engine#40893)
[Impeller] Emulate Skia's SK_LEGACY_IGNORE_DRAW_VERTICES_BLEND_WITH_NO_SHADER in drawVertices
2023-04-04 14:32:18 +00:00
skia-flutter-autoroll
c34b9d9a73 Roll Dart SDK from 1f98bd4cf916 to 73127306ac6b (1 revision) (flutter/engine#40911)
Roll Dart SDK from 1f98bd4cf916 to 73127306ac6b (1 revision)
2023-04-04 14:30:19 +00:00
Tim Maffett
52b55a57b7 [Impeller] Fix variable name spelling/typos in several comments. (flutter/engine#40909)
[Impeller] Fix variable name spelling/typos in several comments.
2023-04-04 08:24:53 +00:00
skia-flutter-autoroll
d760d36cbc Roll Dart SDK from f08901c71710 to 1f98bd4cf916 (2 revisions) (flutter/engine#40910)
Roll Dart SDK from f08901c71710 to 1f98bd4cf916 (2 revisions)
2023-04-04 07:43:34 +00:00
Chinmay Garde
219d65bb51 [Impeller] Enable SSBOs in the Vulkan backend. (flutter/engine#40908)
[Impeller] Enable SSBOs in the Vulkan backend.
2023-04-04 03:24:26 +00:00
Jonah Williams
b24bdc96b7 [Impeller] convert blend shaders to half precision (flutter/engine#40897)
[Impeller] convert blend shaders to half precision
2023-04-04 01:53:17 +00:00
Dan Field
567701279a Exit early on invalid gn CPU argument combos for simulators (flutter/engine#40903)
Exit early on invalid gn CPU argument combos for simulators
2023-04-04 01:38:04 +00:00
gaaclarke
4806e7d6e1 [Impeller] More impeller goldens from aiks_unittests (flutter/engine#40901)
This brings over the last of the tests mentioned in
https://github.com/flutter/engine/pull/40804#issuecomment-1492516301

## 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] and the [C++,
Objective-C, Java style guides].
- [ ] I listed at least one issue that this PR fixes in the description
above.
- [x] I added new tests to check the change I am making or feature I am
adding, or Hixie said the PR is test-exempt. See [testing the engine]
for instructions on writing and running engine tests.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I signed the [CLA].
- [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/wiki/Tree-hygiene#overview
[Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene
[Flutter Style Guide]:
https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo
[C++, Objective-C, Java style guides]:
https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
[testing the engine]:
https://github.com/flutter/flutter/wiki/Testing-the-engine
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes
[Discord]: https://github.com/flutter/flutter/wiki/Chat
2023-04-03 18:07:19 -07:00
Jackson Gardner
1f7f52ffac Fail the run_suite_step if any test failures are detected. (flutter/engine#40834)
We need to throw if the `run_suite_step` encounters any test failures.
2023-04-03 18:02:31 -07:00
Robert Ancell
2ff5380c01 Change back to using the memory address of a texture as its ID. (flutter/engine#40899)
Change back to using the memory address of a texture as its ID.
2023-04-04 00:43:49 +00:00
Dan Field
668566b8fa [Impeller] Respect enable-impeller command line setting over info.plist setting (flutter/engine#40902)
[Impeller] Respect enable-impeller command line setting over info.plist setting
2023-04-04 00:34:58 +00:00
Jonah Williams
234decefd7 [Impeller] reduce gaussian sampling by 2x (flutter/engine#40871)
[Impeller] reduce gaussian sampling by 2x
2023-04-04 00:28:04 +00:00
Jonah Williams
f82dc83970 Disable partial repaint on Android (flutter/engine#40898)
Disable partial repaint on Android
2023-04-03 23:36:58 +00:00
skia-flutter-autoroll
8135972f97 Roll Skia from 57aa7f9475de to ad459a5b8df4 (2 revisions) (flutter/engine#40900)
Roll Skia from 57aa7f9475de to ad459a5b8df4 (2 revisions)
2023-04-03 23:29:01 +00:00
Jonah Williams
d56b15d1a3 [Impeller] reduce advanced blend subpass count for single input with foreground color (flutter/engine#40886)
[Impeller] reduce advanced blend subpass count for single input with foreground color
2023-04-03 23:04:03 +00:00
gaaclarke
6cf914a15b [Impeller] Adds the ability to specify a golden threshold (flutter/engine#40824)
[Impeller] Adds the ability to specify a golden threshold
2023-04-03 22:50:12 +00:00
skia-flutter-autoroll
4c1e7e9090 Roll Skia from 1670c7c18c63 to 57aa7f9475de (1 revision) (flutter/engine#40896)
Roll Skia from 1670c7c18c63 to 57aa7f9475de (1 revision)
2023-04-03 22:29:29 +00:00
Brandon DeRosier
869f90866e [Impeller] Add subpass blend goldens (flutter/engine#40879) 2023-04-03 15:28:20 -07:00
Jonah Williams
ed0d748688 Revert "[Impeller] iOS/macOS: Only wait for command scheduling prior to present" (flutter/engine#40895)
Reverts flutter/engine#40781

Fixes https://github.com/flutter/flutter/issues/124056

When unmerging threads we appear to get stuck for multiple seconds.
Haven't debugged further, but bisected to this commit.
2023-04-03 14:50:27 -07:00
Jason Simmons
cf25261c4a [Impeller] Skip the color blend in drawVertices when using the destination blend mode (flutter/engine#40891)
[Impeller] Skip the color blend in drawVertices when using the destination blend mode
2023-04-03 20:50:04 +00:00