25461 Commits

Author SHA1 Message Date
gaaclarke
67c17cbb8c [Impeller] disabled misleading vulkan golden image tests (flutter/engine#49836)
issue: https://github.com/flutter/flutter/issues/141705

The MetalScreenshotter is hardcoded to make a Metal context. So even
though the tests were running the Vulkan variant, the rendering was
still happening with Metal.

It's better to disable these for now until they can be implemented
properly (either by making them render with swiftshader on mac or
rendering them on linux).

## 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.
- [ ] I added new tests to check the change I am making or feature I am
adding, or 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
[test-exempt]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#tests
[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
2024-01-17 15:33:15 -08:00
Loïc Sharma
e38b6f14f6 [Windows] Remove unnecessary statics in keyboard (flutter/engine#49834)
Windows's `KeyboardManager` has several top-level helper functions. These are already wrapped in an anonymous C++ namespace, which is the C++ equivalent of the C `static` keyword.

No tests are updated as this PR is a refactoring with no semantic changes.
  

[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
2024-01-17 23:31:33 +00:00
skia-flutter-autoroll
b37dfa5ef9 Roll Skia from 5c9e3474cf13 to 5abf9717ea92 (1 revision) (flutter/engine#49831)
https://skia.googlesource.com/skia.git/+log/5c9e3474cf13..5abf9717ea92

2024-01-17 brianosman@google.com Use tricky (NaN) values in SwizzleCopy and CopySlotsMasked

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 brianosman@google.com,jlavrova@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 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
2024-01-17 23:18:05 +00:00
godofredoc
600ecd7544 Move mac cache builder to bringup. (flutter/engine#49843)
This won't have major impact because older caches still exist but it will prevent the build from closing the tree.

https://github.com/flutter/flutter/issues/141688

[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
2024-01-17 23:12:31 +00:00
auto-submit[bot]
6582221bf1 Reverts "[Impeller] Switch from transient stencil-only to depth+stencil buffer." (flutter/engine#49832)
Reverts flutter/engine#47987
Initiated by: jonahwilliams
This change reverts the following previous change:
Original Description:
Part of https://github.com/flutter/flutter/issues/138460.

In preparation for [draw order optimization](https://github.com/flutter/flutter/issues/114402) and [StC](https://github.com/flutter/flutter/issues/123671).

Use a transient depth+stencil texture instead of a stencil-only texture. Doing this in isolation to detect/weed out any HAL bugs with handling the attachment.
2024-01-17 16:14:19 +00:00
skia-flutter-autoroll
3508761f16 Manual roll Dart SDK from d6c08fa9bb54 to 6ff69d6b7f59 (15 revisions) (flutter/engine#49825)
Manual roll requested by aam@google.com

https://dart.googlesource.com/sdk.git/+log/d6c08fa9bb54..6ff69d6b7f59

2024-01-17 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.4.0-39.0.dev
2024-01-17 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.4.0-38.0.dev
2024-01-16 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.4.0-37.0.dev
2024-01-16 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.4.0-36.0.dev
2024-01-16 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.4.0-35.0.dev
2024-01-16 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.4.0-34.0.dev
2024-01-15 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.4.0-33.0.dev
2024-01-15 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.4.0-32.0.dev
2024-01-15 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.4.0-31.0.dev
2024-01-15 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.4.0-30.0.dev
2024-01-14 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.4.0-29.0.dev
2024-01-13 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.4.0-28.0.dev
2024-01-13 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.4.0-27.0.dev
2024-01-13 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.4.0-26.0.dev
2024-01-12 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.4.0-25.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,dart-vm-team@google.com,jonahwilliams@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://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
2024-01-17 06:42:29 +00:00
Brandon DeRosier
d3951b683b Flutter GPU: Add GpuContext.createHostBuffer (flutter/engine#49822)
Just a quick fix to use the same pattern as other GpuContext derivative things.
2024-01-17 05:25:12 +00:00
skia-flutter-autoroll
5f4ecb26e0 Roll Fuchsia Linux SDK from Klxww53tA4-TG5pA9... to GuU0e5WxJCi92Scz8... (flutter/engine#49823)
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-engine
Please CC jonahwilliams@google.com,rmistry@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
2024-01-17 05:05:15 +00:00
Brandon DeRosier
04ce32908a [Impeller] Switch from transient stencil-only to depth+stencil buffer. (flutter/engine#47987)
Part of https://github.com/flutter/flutter/issues/138460.

In preparation for [draw order optimization](https://github.com/flutter/flutter/issues/114402) and [StC](https://github.com/flutter/flutter/issues/123671).

Use a transient depth+stencil texture instead of a stencil-only texture. Doing this in isolation to detect/weed out any HAL bugs with handling the attachment.
2024-01-17 05:03:29 +00:00
skia-flutter-autoroll
e05501536e Roll Skia from 31309ff09537 to 02e94b3b4d29 (43 revisions) (flutter/engine#49819)
Roll Skia from 31309ff09537 to 02e94b3b4d29 (43 revisions)

https://skia.googlesource.com/skia.git/+log/31309ff09537..02e94b3b4d29

2024-01-16 kjlubick@google.com Move SkMasks from src/codec to src/core
2024-01-16 skia-autoroll@skia-public.iam.gserviceaccount.com Roll skottie-base from 1f9ed551198c to 7c236cb7a5a2
2024-01-16 skia-autoroll@skia-public.iam.gserviceaccount.com Roll shaders-base from 3fb07eee4752 to e7695f0fdff5
2024-01-16 skia-autoroll@skia-public.iam.gserviceaccount.com Roll jsfiddle-base from eb442b364123 to f6c22747cda4
2024-01-16 skia-autoroll@skia-public.iam.gserviceaccount.com Roll debugger-app-base from c6059a8c0ee3 to 067d72e0dddf
2024-01-16 johnstiles@google.com Tweak `css_oklab_gamut_map_to_linear_srgb` for better codegen.
2024-01-16 herb@google.com Proposed cleanups
2024-01-16 olv@google.com [ganesh] Add VK_FORMAT_B5G6R5_UNORM_PACK16 / kRGB_565 combo
2024-01-16 olv@google.com [ganesh] Add GrColorType::kRGB_565
2024-01-16 michaelludwig@google.com [graphite] Update UniformManager comment to address mat2x2 layout polyfill
2024-01-16 kjlubick@google.com Revert "Remove SkFontMgr::RefDefault() and dependent APIs"
2024-01-16 brianosman@google.com Use tricky (NaN) values in many more RP tests
2024-01-16 dneto@google.com Update abseil-cpp to match Dawn
2024-01-16 kjlubick@google.com Remove SkFontMgr::RefDefault() and dependent APIs
2024-01-16 skia-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from 24bbbffbc637 to 50e74527ca9a (3 revisions)
2024-01-16 michaelludwig@google.com Update SkVx to_half to support denormals,overflow, and RTNE
2024-01-16 jvanverth@google.com GrRRectEffect: return failure if nine-patch corners are invalid
2024-01-16 johnstiles@google.com Fix fuzzer-discovered error with duplicate symbols.
2024-01-16 johnstiles@google.com Switch to unique_ptr<> for SymbolTable management.
2024-01-16 johnstiles@google.com Tidy up module code in small ways.
2024-01-16 johnstiles@google.com Simplify switch rewrite code slightly.
2024-01-16 johnstiles@google.com Remove SymbolTable::WrapIfBuiltin.
2024-01-16 johnstiles@google.com Remove InterfaceBlock::typeOwner().
2024-01-16 jvanverth@google.com Ensure that nine-patch RRects have valid radii.
2024-01-16 skia-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from c28022c905e7 to 24bbbffbc637 (1 revision)
2024-01-16 skia-autoroll@skia-public.iam.gserviceaccount.com Roll SK Tool from 68ae053047d5 to 9474c5c1c642
2024-01-16 skia-autoroll@skia-public.iam.gserviceaccount.com Roll Skia Infra from 6951208d04af to 68ae053047d5 (1 revision)
2024-01-15 skia-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from 6107aa90975e to c28022c905e7 (5 revisions)
2024-01-15 kjlubick@google.com Small changes needed to do modularization
2024-01-15 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE from 073b651053b3 to 572323ccbba5 (11 revisions)
2024-01-15 skia-autoroll@skia-public.iam.gserviceaccount.com Roll SK Tool from 6951208d04af to 68ae053047d5
2024-01-15 skia-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from c3146aa021aa to 6107aa90975e (1 revision)
2024-01-15 skia-autoroll@skia-public.iam.gserviceaccount.com Roll Skia Infra from 1de9b3d66634 to 6951208d04af (6 revisions)
2024-01-13 skia-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from 66e8bc0a47af to c3146aa021aa (2 revisions)
2024-01-13 skia-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from 698eee9385e4 to 66e8bc0a47af (3 revisions)
2024-01-13 skia-autoroll@skia-public.iam.gserviceaccount.com Roll SK Tool from 1de9b3d66634 to 6951208d04af
2024-01-12 bungeman@google.com Add channels to SkPDFIccProfileKey
2024-01-12 brianosman@google.com Handle NaN bit patterns in several RP copy stages
2024-01-12 lovisolo@google.com [bazel] BazelBenchmarkTestRunner.cpp: Add missing newline in SkDebugPrintf statement.
2024-01-12 brianosman@google.com Remove template version of if_then_else, use I32 when appropriate
2024-01-12 johnstiles@google.com Create a symbol table for braced-block of an SkSL switch statement.
2024-01-12 johnstiles@google.com Add symbol table manipulation helpers.
2024-01-12 jvanverth@google.com [Metal] Switch ObjC <-> C++ handling for GrFence.

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
...
2024-01-17 05:03:28 +00:00
auto-submit[bot]
a501e644c2 Reverts "[Impeller] Encode directly to command buffer for Vulkan." (flutter/engine#49818)
Reverts flutter/engine#49780
Initiated by: jonahwilliams
This change reverts the following previous change:
Original Description:
Part of https://github.com/flutter/flutter/issues/140804

Rather than using impeller::Command, the impeller::RenderPass records most state directly into the Vulkan command buffer. This should remove allocation/free overhead of the intermediary structures and make further improvements to the backend even easier. This required a number of other changes to the renderer:

1. The render pass holds a strong ptr to the context. This helps avoid locking continually while encoding, which is quite slow.
2. barriers need to be encoded on the _producing_ side, and not the consuming side. This is because we'll actually run the consuming code before the producing code. i.e. we transition to shader read at the end of a render pass instead of when binding.
3. I've updated the binding code to also provide the descriptor type so that we don't need to look it up from the desc. set.
4. I added a test render pass class that records commands.
2024-01-17 01:18:17 +00:00
Zachary Anderson
2f58b2fae5 Revert "Add gclient_variables back for linux_license and fix the excluded files" (flutter/engine#49817)
Reverts flutter/engine#49775

The autorollers create PRs with this flag set to true (the default). This breaks the license check on autoroller PRs since the autorollers are trying to add back the entries in the excluded files list.
2024-01-17 01:06:20 +00:00
Jenn Magder
a7e652c7d8 Remove iOS 12 availability checks (flutter/engine#49771)
iOS minimum is now 12: https://github.com/flutter/buildroot/pull/808.  Remove `@available` checks for that version.  

Part of https://github.com/flutter/flutter/issues/140474

[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
2024-01-16 23:09:58 +00:00
gaaclarke
5e407c3f36 [Impeller] generate mipmaps for imagefilters (flutter/engine#49794)
This resolves Jonah's feedback on https://github.com/flutter/engine/pull/49607 and Brandons feedback on https://github.com/flutter/engine/pull/49607 and https://github.com/flutter/engine/pull/49778.

This avoids the need to do a lookahead by storing the proper mip count value while building the drawing on the canvas.

[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
2024-01-16 22:53:10 +00:00
David Iglesias
c2b2e4b2b2 [web] Leave blob URLs untouched in TT policy. (flutter/engine#49782)
Very simple tweak to flutter.js that allows blob URLs to be used as entrypointUrls when loading flutter (this is needed by dartpad)

## Testing

I had to test this locally by spinning up a flutter app with something like:

```html
<script>
  let initSrc = `let actualMain = document.createElement("script");
document.head.appendChild(actualMain);
actualMain.id = "injected_from_a_blob";
actualMain.src = "main.dart.js";`;
  let blobInit = new Blob([...initSrc]);
  let blobUrl = URL.createObjectURL(blobInit);
</script>
<script>
  window.addEventListener('load', function(ev) {
    // Download main.dart.js
    _flutter.loader.loadEntrypoint({
      entrypointUrl: blobUrl,
      onEntrypointLoaded: function(engineInitializer) {
        engineInitializer.autoStart();
      }
    });
  });
</script>
```

## Issues

* Fixes https://github.com/flutter/flutter/issues/141329

[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
2024-01-16 22:53:08 +00:00
Jason Simmons
a1e7c05d18 [Impeller] Fix a race between SwapchainImplVK::Present and WaitForFence (flutter/engine#49777)
The previous implementation used an fml::CountDownLatch to synchronize between FrameSynchronizer::WaitForFence and the task queued by SwapchainImplVK::Present.

fml::CountDownLatch:Wait always waits, even if the count is already zero.  So the raster thread would deadlock if the present task signals the latch before FrameSynchronizer::WaitForFence enters the wait.

This PR instead uses a semaphore that is set each time SwapchainImplVK::Present is called.  FrameSynchronizer::WaitForFence will check the semaphore to determine whether a present task is pending and if so wait for its completion.
2024-01-16 22:30:57 +00:00
Loïc Sharma
9792c4bd03 Reland "[Windows] Move to FlutterCompositor for rendering" (flutter/engine#49726)
## Original pull request description

This migrates the Windows embedder to `FlutterCompositor` so that the engine renders off-screen to a framebuffer instead of directly onto the window's surface. This will allow us to support platform views and multiple views on Windows.

Addresses https://github.com/flutter/flutter/issues/128904

## Reland (again)

https://github.com/flutter/engine/pull/49262 was reverted as it regressed [`package:material_floating_search_bar_2`](https://pub.dev/packages/material_floating_search_bar_2/versions/0.5.0). See: https://github.com/flutter/flutter/issues/140828

This pull request is split into the following commits:

1. d337378a74 is the previous reland pull request, unchanged
2. e866af0229 disables the scissor test before blitting the framebuffer, allowing us to "force" copy the framebuffer's contents by ignoring scissoring values

[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
2024-01-16 22:14:02 +00:00
Jason Simmons
432682e0eb [Impeller] Add an API for sampling strictly within the bounds of the source rect in DrawImageRect (flutter/engine#49696)
Fixes https://github.com/flutter/flutter/issues/140393
2024-01-16 21:56:05 +00:00
Jonah Williams
97e3fdb511 [Impeller] Encode directly to command buffer for Vulkan. (flutter/engine#49780)
Part of https://github.com/flutter/flutter/issues/140804

Rather than using impeller::Command, the impeller::RenderPass records most state directly into the Vulkan command buffer. This should remove allocation/free overhead of the intermediary structures and make further improvements to the backend even easier. This required a number of other changes to the renderer:

1. The render pass holds a strong ptr to the context. This helps avoid locking continually while encoding, which is quite slow.
2. barriers need to be encoded on the _producing_ side, and not the consuming side. This is because we'll actually run the consuming code before the producing code. i.e. we transition to shader read at the end of a render pass instead of when binding.
3. I've updated the binding code to also provide the descriptor type so that we don't need to look it up from the desc. set.
4. I added a test render pass class that records commands.
2024-01-16 21:52:54 +00:00
Jonah Williams
5083adf8f3 [Impeller] remove shared_ptr copy/release in main rendering loop. (flutter/engine#49801)
![image](https://github.com/flutter/engine/assets/8975114/7ce7c77e-fab3-483b-871f-437a681911c5)
2024-01-16 21:25:16 +00:00
auto-submit[bot]
6494f91cc5 Reverts "Manually bump Dart to 3.4.0-34.0.dev" (flutter/engine#49802)
Reverts flutter/engine#49792
Initiated by: zanderso
This change reverts the following previous change:
Original Description:
https://dart.googlesource.com/sdk.git/+log/d6c08fa9bb54..992d6c2562
2024-01-16 20:32:19 +00:00
Brandon DeRosier
c38b3676d9 [Flutter GPU] Run unittests on CI and fix HostBuffer. (flutter/engine#49789)
The Flutter GPU tests were broken, and it turns out that I had never set them up to run on CI. This fixes the HostBuffer and gets the test suite running on CI.
2024-01-16 19:01:54 +00:00
Brandon DeRosier
37233b0ec3 [Flutter GPU] Fix playground shader paths. (flutter/engine#49790)
Resolves https://github.com/flutter/flutter/issues/140969.

Makes the shader paths absolute to prevent issues caused by the working
directory differing across build environments.
2024-01-16 11:00:34 -08:00
Loïc Sharma
005c214a4b [Windows] Add README (flutter/engine#49779)
[Link to preview](https://github.com/loic-sharma/flutter-engine/blob/windows_readme/shell/platform/windows/README.md)

Inspired by the Android README @matanlurey added here: https://github.com/flutter/engine/tree/main/shell/platform/android#readme

This gives people quick pointers that might be useful when starting their Windows journey.
2024-01-16 17:51:33 +00:00
Dan Field
47218130f2 Fix typo (flutter/engine#49725) 2024-01-16 17:03:57 +00:00
Jason Simmons
33ff97be32 Truncate thread names on Linux to the maximum allowed length (flutter/engine#49781)
Also update some Impeller thread names to fit within that limit.
2024-01-16 17:02:34 +00:00
Dan Field
196bd4165f [Impeller] Fix hot reload for shaders on Impeller (flutter/engine#49739)
I broke this in https://github.com/flutter/engine/pull/49543

While investigating https://github.com/flutter/flutter/issues/141235 I
realized that the specific things that were wrong there were probably
artifacts of some intermediate issue in the previous patch - they no
longer appear. However, I had broken hot reload.

This patch fixes it and updates the `EntityTest.RuntimeEffect` to
artificially run the rendering callback a few times simulating a hot
reload. The test fails without my changes here.
2024-01-16 09:02:32 -08:00
Jia Hao
f03cc19612 Add flutter prefix to import (flutter/engine#49793)
This keeps things consistent with other imports and fixes the internal breakage (b/320443454).

While the build system here is able to handle imports both with and without the flutter prefix, the internal mechanism that rewrites these imports is currently unable to handle the latter case.
2024-01-16 16:11:19 +00:00
Ivan Inozemtsev
445a8fb328 Support running sound null safe kernels from dart_runner (flutter/engine#49598)
Before starting an isolate, `dart[_test]_component_controller` detects
sound null safety status for all given kernels and fails if they aren't
the same, and uses the result to set `null_safety` in isolate flags.

Also switch to `core` snapshots from `core-jit` snapshots, based on
https://github.com/flutter/engine/pull/30744, as it looks like
`core-jit` snapshots are not null safety agnostic.

See b/315776399


## 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 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.
2024-01-16 07:58:01 -08:00
Brandon DeRosier
6aced2dd87 Manually bump Dart to 3.4.0-34.0.dev (flutter/engine#49792)
https://dart.googlesource.com/sdk.git/+log/d6c08fa9bb54..992d6c2562
2024-01-16 07:11:37 -08:00
dependabot[bot]
b509a5786b Bump actions/upload-artifact from 3.1.3 to 4.1.0 (flutter/engine#49788)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3.1.3 to 4.1.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/actions/upload-artifact/releases">actions/upload-artifact's releases</a>.</em></p>
<blockquote>
<h2>v4.1.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Add migrations docs by <a href="https://github.com/robherley"><code>@​robherley</code></a> in <a href="https://redirect.github.com/actions/upload-artifact/pull/482">actions/upload-artifact#482</a></li>
<li>Update README.md by <a href="https://github.com/samuelwine"><code>@​samuelwine</code></a> in <a href="https://redirect.github.com/actions/upload-artifact/pull/492">actions/upload-artifact#492</a></li>
<li>Support artifact-url output by <a href="https://github.com/konradpabjan"><code>@​konradpabjan</code></a> in <a href="https://redirect.github.com/actions/upload-artifact/pull/496">actions/upload-artifact#496</a></li>
<li>Update readme to reflect new 500 artifact per job limit by <a href="https://github.com/robherley"><code>@​robherley</code></a> in <a href="https://redirect.github.com/actions/upload-artifact/pull/497">actions/upload-artifact#497</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/samuelwine"><code>@​samuelwine</code></a> made their first contribution in <a href="https://redirect.github.com/actions/upload-artifact/pull/492">actions/upload-artifact#492</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/actions/upload-artifact/compare/v4...v4.1.0">https://github.com/actions/upload-artifact/compare/v4...v4.1.0</a></p>
<h2>v4.0.0</h2>
<h2>What's Changed</h2>
<p>The release of upload-artifact@v4 and download-artifact@v4 are major changes to the backend architecture of Artifacts. They have numerous performance and behavioral improvements.</p>
<p>ℹ️ However, this is a major update that includes breaking changes. Artifacts created with versions v3 and below are not compatible with the v4 actions. Uploads and downloads <em>must</em> use the same major actions versions. There are also key differences from previous versions that may require updates to your workflows.</p>
<p>For more information, please see:</p>
<ol>
<li>The <a href="https://github.blog/changelog/2023-12-14-github-actions-artifacts-v4-is-now-generally-available/">changelog</a> post.</li>
<li>The <a href="https://github.com/actions/upload-artifact/blob/main/README.md">README</a>.</li>
<li>The <a href="https://github.com/actions/upload-artifact/blob/main/docs/MIGRATION.md">migration documentation</a>.</li>
<li>As well as the underlying npm package, <a href="https://github.com/actions/toolkit/tree/main/packages/artifact"><code>@​actions/artifact</code></a> documentation.</li>
</ol>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/vmjoseph"><code>@​vmjoseph</code></a> made their first contribution in <a href="https://redirect.github.com/actions/upload-artifact/pull/464">actions/upload-artifact#464</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/actions/upload-artifact/compare/v3...v4.0.0">https://github.com/actions/upload-artifact/compare/v3...v4.0.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="1eb3cb2b3e"><code>1eb3cb2</code></a> Merge pull request <a href="https://redirect.github.com/actions/upload-artifact/issues/497">#497</a> from actions/robherley/update-readme-limit</li>
<li><a href="8688a86492"><code>8688a86</code></a> Update readme to reflect new artifact/job limit</li>
<li><a href="73d8b66ede"><code>73d8b66</code></a> Support artifact-url output (<a href="https://redirect.github.com/actions/upload-artifact/issues/496">#496</a>)</li>
<li><a href="c320f57948"><code>c320f57</code></a> Update README.md (<a href="https://redirect.github.com/actions/upload-artifact/issues/492">#492</a>)</li>
<li><a href="cf8714cfea"><code>cf8714c</code></a> Merge pull request <a href="https://redirect.github.com/actions/upload-artifact/issues/482">#482</a> from actions/robherley/add-migration-docs</li>
<li><a href="7f16e37e88"><code>7f16e37</code></a> add migrations docs</li>
<li><a href="353073034f"><code>3530730</code></a> Merge pull request <a href="https://redirect.github.com/actions/upload-artifact/issues/468">#468</a> from actions/robherley/misc-updates</li>
<li><a href="6c139afa6f"><code>6c139af</code></a> update imports and old v4-beta references</li>
<li><a href="c7d193f32e"><code>c7d193f</code></a> Merge pull request <a href="https://redirect.github.com/actions/upload-artifact/issues/466">#466</a> from actions/v4-beta</li>
<li><a href="13131bb095"><code>13131bb</code></a> licensed cache</li>
<li>Additional commits viewable in <a href="https://github.com/actions/upload-artifact/compare/v3.1.3...1eb3cb2b3e0f29609092a73eb033bb759a334595">compare view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/upload-artifact&package-manager=github_actions&previous-version=3.1.3&new-version=4.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

</details>
2024-01-16 07:20:29 +00:00
Chinmay Garde
c6b8349d0a Remove pthread based thread local support. (flutter/engine#49297)
The thread_local storage class was not available pre-C++11. Even when C++11 was available, the C++ runtime in versions of iOS <= 9.0 was not capable of supporting this storage class. So we ended up using pthread directly in that case. The unique pointer support was added later. Now that the storage class has been supported on all Flutter platforms for a while, we can remove the fallback and remove a bunch of code. The ThreadLocalUniquePtr can be removed too but that can be attempted in a separate migration.
2024-01-13 21:28:26 +00:00
gaaclarke
6bd7574e88 [Impeller] fixed nested save layer mipmap counts (flutter/engine#49778)
resolves https://github.com/flutter/engine/pull/49607#discussion_r1450982660

[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
2024-01-13 01:34:22 +00:00
Dan Field
08e89db585 [Impeller] Properly size struct emplacements for Vulkan Runtime Effects (flutter/engine#49768)
This was introduced in the runtime effects PR.

This bug sometimes causes a segfault when we go to `memmove` latter with
an incorrect length/size/num parameter.
2024-01-12 15:35:28 -08:00
Zachary Anderson
5f893e5dff Fix linux_android_emulator_api_33 build config for rbe (flutter/engine#49776)
Following up from https://github.com/flutter/engine/pull/49660. Missed this `bringup: true` shard.
2024-01-12 23:33:11 +00:00
Tong Mu
f15bc4cb13 [Linux] Remove the usage of std::function in FlKeyEmbedderResponder (flutter/engine#49293)
Fixes https://github.com/flutter/flutter/issues/140183

[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
2024-01-12 23:08:52 +00:00
gaaclarke
85d2ba69cf [Impeller]: new blur - adds mips for backdrop filters (flutter/engine#49607)
If the new blur flag is on and a blur is used as a backdrop filter, the
rendered texture will now have mipmaps which will make the downscaling
step of the blur have more signal (and thus be less shimmery).

issue: https://github.com/flutter/flutter/issues/140193
fixes: https://github.com/flutter/flutter/issues/140949

## 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 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
[test-exempt]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#tests
[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
2024-01-12 14:18:06 -08:00
Jonah Williams
1e3b95a400 [Impeller] move TrackedObjectsVK to separate file. (flutter/engine#49773)
I've been thinking about making object tracking per-frame instead of per cmd pass. To make that easier to experiment with, I'd like to move this to its own file.
2024-01-12 22:14:06 +00:00
keyonghan
7f10aa5957 Add gclient_variables back for linux_license and fix the excluded files (flutter/engine#49775)
Last piece to fix: https://github.com/flutter/flutter/issues/141461
2024-01-12 22:12:00 +00:00
Jonah Williams
0d31627223 [Impeller] Descriptor pool incremental allocation. (flutter/engine#49686)
This returns descriptor set allocation to the previously used strategy of incrementally allocating descriptors and maintaing a vec of pools. This is required to remove deferred command encoding  as part of https://github.com/flutter/flutter/issues/140804

There are some potential further improvements: we may be able to share the descriptor pool across a frame, which would reduce allocation time slightly.
2024-01-12 21:56:17 +00:00
Zachary Anderson
74eb0981de Relands: Refactors RBE support (flutter/engine#49660)
Relands https://github.com/flutter/engine/pull/49416
2024-01-12 13:25:58 -08:00
Jonah Williams
6a1ac6c14a [Impeller] finish migration to new render pass API. (flutter/engine#49740)
Part of https://github.com/flutter/flutter/issues/140804

Migrate the rest of the commands in impeller to use the new API. Hide RenderPass::AddCommand. On subsequent changes I will be able to begin making some of these methods virtual so we can add more direct pass through. Though the vulkan backend will be blocked on changes to descriptor sets: https://github.com/flutter/engine/pull/49686
2024-01-12 21:13:19 +00:00
Jonah Williams
06ee89691e [Impeller] remove Buffer type and associated abstractions. (flutter/engine#49702)
Now that the HostBuffer isn't implementing Buffer, there is really no reason to have a Buffer/DeviceBuffer split. make BufferViews use a DeviceBuffer, and remove the data ptr from buffer views (as we can always reach into the device buffer).

Makes some other cleanups too, since we always use a std::shared_ptr<DeviceBuffer>, then we can eliminated the shared_from_this call for AsBufferView by making this a static method.
2024-01-12 20:22:11 +00:00
keyonghan
0d8738a2fa Remove gclient_variables from linux_license.json (flutter/engine#49766)
The `gclient_variables` has never been used and this is to unblock a recipes CL: https://flutter-review.googlesource.com/c/recipes/+/53902

Part of https://github.com/flutter/flutter/issues/141461
2024-01-12 20:07:06 +00:00
auto-submit[bot]
b174774059 Reverts "[Fuchsia] Use chromium test-scripts to download images and execute tests" (flutter/engine#49772)
Reverts flutter/engine#49650
Initiated by: CaseyHillers
This change reverts the following previous change:
Original Description:
This change requires https://github.com/flutter/buildroot/pull/811, and can be executed from buildroot by

```
python3 flutter/tools/fuchsia/with_envs.py flutter/testing/fuchsia/run_tests.py
```

Bug: https://github.com/flutter/flutter/issues/140179

- [V] I read the [Contributor Guide] and followed the process outlined there for submitting PRs.
- [V] I read the [Tree Hygiene] wiki page, which explains my responsibilities.
- [V] I read and followed the [Flutter Style Guide] and the [C++, Objective-C, Java style guides].
- [V] I listed at least one issue that this PR fixes in the description above.
- [V] I added new tests to check the change I am making or feature I am adding, or the PR is [test-exempt]. See [testing the engine] for instructions on writing and running engine tests.
- [V] I updated/added relevant documentation (doc comments with `///`).
- [V] I signed the [CLA].
- [V] All existing and new tests are passing.

[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
2024-01-12 19:30:29 +00:00
skia-flutter-autoroll
c6c71245bb Roll Skia from 2bc5d2ee9896 to 31309ff09537 (1 revision) (flutter/engine#49764)
https://skia.googlesource.com/skia.git/+log/2bc5d2ee9896..31309ff09537

2024-01-12 brianosman@google.com Remove template from scatter_masked

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 armansito@google.com,bdero@google.com,brianosman@google.com,rmistry@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
2024-01-12 18:03:29 +00:00
skia-flutter-autoroll
e75da409b5 Roll Dart SDK from 042dbc146a37 to d6c08fa9bb54 (2 revisions) (flutter/engine#49763)
https://dart.googlesource.com/sdk.git/+log/042dbc146a37..d6c08fa9bb54

2024-01-12 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.4.0-24.0.dev
2024-01-12 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.4.0-23.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 bdero@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 Engine: 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
2024-01-12 17:48:25 +00:00
zijiehe@
cc3c0eeca9 [Fuchsia] Use chromium test-scripts to download images and execute tests (flutter/engine#49650)
This change requires https://github.com/flutter/buildroot/pull/811, and can be executed from buildroot by

```
python3 flutter/tools/fuchsia/with_envs.py flutter/testing/fuchsia/run_tests.py
```

Bug: https://github.com/flutter/flutter/issues/140179

- [V] I read the [Contributor Guide] and followed the process outlined there for submitting PRs.
- [V] I read the [Tree Hygiene] wiki page, which explains my responsibilities.
- [V] I read and followed the [Flutter Style Guide] and the [C++, Objective-C, Java style guides].
- [V] I listed at least one issue that this PR fixes in the description above.
- [V] I added new tests to check the change I am making or feature I am adding, or the PR is [test-exempt]. See [testing the engine] for instructions on writing and running engine tests.
- [V] I updated/added relevant documentation (doc comments with `///`).
- [V] I signed the [CLA].
- [V] All existing and new tests are passing.

[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
2024-01-12 17:04:31 +00:00
skia-flutter-autoroll
543c4d8a45 Roll Skia from 7484d4a2514e to e04ca400c5d8 (2 revisions) (flutter/engine#49759)
https://skia.googlesource.com/skia.git/+log/7484d4a2514e..e04ca400c5d8

2024-01-12 johnstiles@google.com Add output file from new test.
2024-01-12 johnstiles@google.com Report top-level local variables that shadow parameters in SkSL.

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 armansito@google.com,bdero@google.com,brianosman@google.com,rmistry@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
2024-01-12 15:55:10 +00:00
skia-flutter-autoroll
47301fc0ab Roll Skia from 22fa87f32944 to 7484d4a2514e (1 revision) (flutter/engine#49757)
https://skia.googlesource.com/skia.git/+log/22fa87f32944..7484d4a2514e

2024-01-12 johnstiles@google.com Remove FunctionDefinition::parameterSymbolTable.

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 armansito@google.com,bdero@google.com,brianosman@google.com,rmistry@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
2024-01-12 15:11:01 +00:00