29484 Commits

Author SHA1 Message Date
skia-flutter-autoroll
2e891742b6 Roll Skia from 3a58be4817a8 to e11d70745224 (2 revisions) (flutter/engine#57082)
https://skia.googlesource.com/skia.git/+log/3a58be4817a8..e11d70745224

2024-12-09 lukasza@chromium.org [rust png] Support for encoding `tEXt` chunks.
2024-12-09 kylechar@chromium.org Set FragmentState::constants

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 bdero@google.com,kjlubick@google.com,maxhudnell@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-12-10 04:01:17 +00:00
gaaclarke
33306239b4 Revert "[Impeller] switch Pipeline to use raw ptr instead of shared ptr for recorded references." (flutter/engine#57079)
Reverts flutter/engine#57015
fixes https://github.com/flutter/flutter/issues/160004
2024-12-09 17:30:26 -08:00
Jonah Williams
b425a87fd3 [Impeller] simplify render target size rounding up heuristics. (flutter/engine#57043)
Remove the over-engineered "slide around round up" herusistic for the same heuristic used by the image filters: if the coverage size is within 30% of the cull rect size, just use the cull rect size.

This stabilizes allocations for the new android slide in page transition, but in a less complicated way than the old herustic.
2024-12-10 01:16:23 +00:00
gaaclarke
2695e35d9d moved device buffer to an untracked handle (flutter/engine#57021)
fixes: https://github.com/flutter/flutter/issues/159745

[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
2024-12-09 23:00:57 +00:00
Jonah Williams
81d3d7fbca [Impeller] switch Pipeline to use raw ptr instead of shared ptr for recorded references. (flutter/engine#57015)
Fixes https://github.com/flutter/flutter/issues/159566

We don't need recorded commands to keep pipelines alive as the context does that already.
2024-12-09 20:42:03 +00:00
Jonah Williams
5964dc2244 [Impeller] disable all Adrenos older than 630 (flutter/engine#57069)
Fixes https://github.com/flutter/flutter/issues/159834

Disable all older Adreno GPUs
2024-12-09 20:32:33 +00:00
Brandon DeRosier
4b87db55c6 Roll Skia to 14f8f6d984ff (flutter/engine#57068)
Resolves https://github.com/flutter/engine/pull/57068.

Set args `skia_use_libpng_decode=true` and `skia_use_rust_png_decode=false`.

https://skia.googlesource.com/skia.git/+log/e78dd0265002..14f8f6d984ff

2024-12-09 kjlubick@google.com Update GN build to allow for rust PNG decoding only
2024-12-09 lukasza@chromium.org [rust png] Update Skia => `png` dependency to version 0.17.15.
2024-12-09 kjlubick@google.com Add placeholder files for jsonreader
2024-12-09 20:29:19 +00:00
Robert Ancell
f3c1d7bab8 Make fl_key_channel_responder_handle_event async (flutter/engine#56959)
Replace a callback with a more standard async call
2024-12-10 09:06:22 +13:00
Jonah Williams
529d0d6757 [Impeller] use ES3 extension for external images. (flutter/engine#57018)
The shader language level is 300 or more we need to use GL_OES_EGL_image_external_essl3 instead of GL_OES_EGL_image_external
2024-12-09 18:25:00 +00:00
skia-flutter-autoroll
15af0c4f83 Roll Dart SDK from 264c0c6f5894 to 9694974b6d41 (1 revision) (flutter/engine#57066)
https://dart.googlesource.com/sdk.git/+log/264c0c6f5894..9694974b6d41

2024-12-09 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.7.0-226.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-12-09 18:21:06 +00:00
skia-flutter-autoroll
4037bf256a Roll Skia from afa77852dcde to e78dd0265002 (1 revision) (flutter/engine#57063)
https://skia.googlesource.com/skia.git/+log/afa77852dcde..e78dd0265002

2024-12-09 kjlubick@google.com Reland "Remove JSON output from public API of SkSLDebugTrace"

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 bdero@google.com,kjlubick@google.com,maxhudnell@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-12-09 16:50:27 +00:00
skia-flutter-autoroll
ffc8dad48b Roll Dart SDK from c7e47c6c5df6 to 264c0c6f5894 (1 revision) (flutter/engine#57060)
https://dart.googlesource.com/sdk.git/+log/c7e47c6c5df6..264c0c6f5894

2024-12-09 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.7.0-225.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-12-09 14:02:38 +00:00
skia-flutter-autoroll
9ff9419e6d Roll Fuchsia Linux SDK from BFJjwUVtBDA2mqqpH... to tVShMDVFeKJFcDFHJ... (flutter/engine#57058)
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 bdero@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-12-09 11:47:23 +00:00
skia-flutter-autoroll
01c681d9b1 Roll Skia from c80d6609b95b to ac432c094232 (1 revision) (flutter/engine#57056)
https://skia.googlesource.com/skia.git/+log/c80d6609b95b..ac432c094232

2024-12-09 skia-autoroll@skia-public.iam.gserviceaccount.com Roll Skia Infra from 48b61740d60f to ca6066d7097c (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 bdero@google.com,kjlubick@google.com,maxhudnell@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-12-09 07:33:32 +00:00
Robert Ancell
8cc75a926e Cleanup refactoring in FlKeyboardManager (flutter/engine#56956)
Remove pending keyboard event ID and use the object directly.

Use references to make sure FlKeyboardManagerData is freed.

Refactor marking events as handled
2024-12-09 09:53:58 +13:00
skia-flutter-autoroll
a9c77c889f Roll Fuchsia Linux SDK from __h1RRphItwU5H0tL... to BFJjwUVtBDA2mqqpH... (flutter/engine#57050)
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 bdero@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-12-08 10:39:11 +00:00
skia-flutter-autoroll
fd266b33d7 Roll Skia from b37f1430f87a to d1e261ca7f6f (1 revision) (flutter/engine#57039)
https://skia.googlesource.com/skia.git/+log/b37f1430f87a..d1e261ca7f6f

2024-12-07 jie.a.chen@intel.com [Graphite]: Use DawnTexelCopyBufferRowAlignment

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 bdero@google.com,jvanverth@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
2024-12-07 10:26:23 +00:00
skia-flutter-autoroll
d32d2ec609 Roll Dart SDK from 838ed940b056 to c7e47c6c5df6 (1 revision) (flutter/engine#57038)
https://dart.googlesource.com/sdk.git/+log/838ed940b056..c7e47c6c5df6

2024-12-07 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.7.0-224.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-12-07 06:19:28 +00:00
skia-flutter-autoroll
99c5f6e7f2 Roll Dart SDK from 67ce49b905f7 to 838ed940b056 (2 revisions) (flutter/engine#57037)
https://dart.googlesource.com/sdk.git/+log/67ce49b905f7..838ed940b056

2024-12-07 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.7.0-223.0.dev
2024-12-06 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.7.0-222.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-12-07 02:05:05 +00:00
skia-flutter-autoroll
897529e800 Roll Fuchsia Linux SDK from DDdLABVLcqOv_axv-... to __h1RRphItwU5H0tL... (flutter/engine#57028)
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 bdero@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-12-07 00:19:14 +00:00
Brandon DeRosier
83d36af187 Cover offset+bounds wrapping in the APNG frame region check. (flutter/engine#57025)
The `offset + bounds` calculation in the bounds checks could wrap around, bypassing the check.

(Follow up to https://github.com/flutter/engine/pull/56928)
2024-12-06 23:26:31 +00:00
skia-flutter-autoroll
849bf8bd37 Roll Skia from 0d94e966268b to c9e9ce277b80 (3 revisions) (flutter/engine#57024)
https://skia.googlesource.com/skia.git/+log/0d94e966268b..c9e9ce277b80

2024-12-06 lokokung@google.com [dawn][headers] Update uses to new APIs and enums in buffer/queue.
2024-12-06 skia-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from 11d17e6bd029 to 94052ee8a2fb (2 revisions)
2024-12-06 danieldilan@google.com Reland "Initialize decompress struct with libjpeg-turbo's API"

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 bdero@google.com,jvanverth@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
2024-12-06 23:06:47 +00:00
Jonah Williams
ebd057a46f [Impeller] store vertex buffers in render pass for gles. (flutter/engine#56991)
Move vertex buffer storage off of the command object. Because we can bind up to 16 (but usually 1) vertex buffers per cmd, storing it on the command requires allocating storage for the full 16 buffers. MOving this to a secondary vector decreases the size of the command object from ~800 bytes to ~200 bytes.
2024-12-06 22:03:11 +00:00
Jonah Williams
d58cd98b8c [Impeller] Add keep alive for 4 frames in render target cache. (flutter/engine#57020)
Improve cache usage by keeping textures alive for 4 frames after the last usage. This improves cache usage in scenarios such as repeatidly dragging the android overscroll functionality.

THis isn't expected to have a negative impact on memory, because a texture cannot be _immediately_ deleted anyway.
2024-12-06 21:43:56 +00:00
hellohuanlin
13c0f5ad58 [ios][platform_view] workaround for non-tappable webview (flutter/engine#56804)
This is pretty tricky bug - I suspect that because Apple's internal recognizer caching an outdated state of our delaying recognizer. 

The conflict happens between WebKit and platform view's recognizers. It happens to all plugins that uses a WKWebView, or any view that has a similar (unknown) gesture setup. 

This fix has to be in the engine (rather than the plugin), because the plugin itself knows nothing about the existence of our delaying recognizer. 

Here are the steps of my research for future reference: 

1. The bug only happens when the overlay flutter widgets blocks the gestures for the platform view (e.g. tap on the platform view area when a flutter context menu is displayed). When the bug happens, WKWebView's link doesn't work anymore, however, the link can still be highlighted when tapped. 

2. When I remove the delaying recognizer from platform view, the link became clickable again. This means that the bug is related to some conflict between WKWebView's internal recognizers and our delaying recognizer. This also means that it is not possible to fix this issue at plugin level, which knows nothing about the delaying recognizer. 

3. When we tap on the web view when context menu is displayed, `blockGesture` will be called, which simply toggles delaying recognizer's state from `possible` to `ended` state, meaning it should block all recognizers from the current gesture (and it correctly did so). Then I use `dispatch_async` and check the state again, and confirmed the state is correctly reset to `possible` state. 

4. Subsequent tap on web view triggers `acceptGesture`, which turns the `possible` state into `failed` state. This subsequent tap only highlights the link, but not activate the link. This suggests that some internal web kit recognizer that handles the highlight sees the `failed` state of delaying recognizer (which is correct), but the recognizer that handles the link activation probably sees the stale state of `possible` or `ended` (which is outdated old state). 

5. So the solution is trying to make the recognizer "see" the updated state rather than the cached old state. 

6. I tried recreating a new delaying recognizer when `blockGesture` is called: 
```
- blockGesture {
  delayingRecognizer.state = .ended
  dispatch_async {
    // force re-create the delaying recognizer
  }
}
```
This fixed the link activation bug, however, when opening the context menu again, the gesture is not blocked anymore. This means web kit internal recognizers likely cache the old delaying recognizer for state update, thus the new instance of delaying recognizer won't work anymore. So we can't change the instance. However, it's a good experiment that confirms my hypothesis that some internal webkit recognizer caches the outdated state of delaying recognizer. 

7. For the above code, rather than using `dispatch_async`, I also tried `dispatch_after`, and it turns out that it only works if the dispatch_after delay is `0` - even if the delay is much smaller than 1 frame's time (16.7ms), it doesn't work. This means the state checking happens either at the end of the current run loop, or beginning of the next run loop. (not too important information, but it helps me better understand how UIKit works). 

8. So from 6, we know that we have to keep the original instance of delaying recognizer. I tried toggling `recognizer.enabled`, it didn't work. I also tried inserting a dummy recognizer, it didn't work. Neither approach triggers the state "refresh" for those webkit internal recognizers. 

9. I tried removing and adding back the delaying recognizer, and it just worked! This means that removing and adding back the delaying recognizer probably triggered UIKit to refresh the states for all its related recognizers (i.e. those recognizers either blocking or being blocked by the delaying recognizer), hence getting the updated state. 

*List which issues are fixed by this PR. You must list at least one issue.*

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

*If you had to change anything in the [flutter/tests] repo, include a link to the migration guide as per the [breaking change policy].*

[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
2024-12-06 21:43:54 +00:00
gaaclarke
592ceb7326 Reland: Replaces bespoke call captures from mock gles with gmock (flutter/engine#57019)
relands https://github.com/flutter/engine/pull/56995

It previously landed with stale presubmits, this should be up to date now.  I have the fix in a separate commit.

[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
2024-12-06 21:38:40 +00:00
skia-flutter-autoroll
0e4fafd629 Roll Skia from c9647f13cded to 0d94e966268b (36 revisions) (flutter/engine#57023)
Roll Skia from c9647f13cded to 0d94e966268b (36 revisions)

https://skia.googlesource.com/skia.git/+log/c9647f13cded..0d94e966268b

2024-12-06 alecmouri@google.com Support PNG gainmaps
2024-12-06 danieldilan@google.com Revert "Initialize decompress struct with libjpeg-turbo's API"
2024-12-06 danieldilan@google.com Initialize decompress struct with libjpeg-turbo's API
2024-12-06 skia-autoroll@skia-public.iam.gserviceaccount.com Manual roll Dawn from 1e61e82b1b7a to 92c3ee90cfff (9 revisions)
2024-12-06 lukasza@chromium.org Reapply "[rust png] Extract `SkPngEncoderBase::onEncodeRows`."
2024-12-06 jvanverth@google.com Revert "Remove JSON output from public API of SkSLDebugTrace"
2024-12-06 jvanverth@google.com Revert "Move SkJSON.h to //modules/jsonreader"
2024-12-06 jvanverth@google.com Revert "[rust png] Extract `SkPngEncoderBase::onEncodeRows`."
2024-12-06 skia-autoroll@skia-public.iam.gserviceaccount.com Roll Dawn from 38268c8df30d to 1e61e82b1b7a (6 revisions)
2024-12-06 skia-autoroll@skia-public.iam.gserviceaccount.com Roll Skia Infra from 73c103d87739 to 48b61740d60f (9 revisions)
2024-12-06 skia-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from 0846b50db6b1 to 11d17e6bd029 (6 revisions)
2024-12-05 kjlubick@google.com Move SkJSON.h to //modules/jsonreader
2024-12-05 kjlubick@google.com Remove JSON output from public API of SkSLDebugTrace
2024-12-05 skia-autoroll@skia-public.iam.gserviceaccount.com Manual roll Dawn from 3ee07d9e3ba7 to 38268c8df30d (12 revisions)
2024-12-05 jamesgk@google.com [graphite] Add a test for unused target surface on replay
2024-12-05 jamesgk@google.com [graphite] Allow providing unused target surface on replay
2024-12-05 jamesgk@google.com Ignore all deferred canvas tests in Protected configs
2024-12-05 lukasza@chromium.org [rust png] Integrate Rust `png` crate into `SkPngRustEncoderImpl`.
2024-12-05 lukasza@chromium.org [rust png] Extract `SkPngEncoderBase::onEncodeRows`.
2024-12-05 briansalomon@gmail.com Show timer queries for Graphite/Dawn in Viewer stats
2024-12-05 lukasza@chromium.org [rust png] Extract `SkPngEncoderBase::getTargetInfo`.
2024-12-05 lukasza@chromium.org [rust png] Test that can detect encoding RGB vs RGBA mismatch.
2024-12-05 michaelludwig@google.com [ganesh] Check index count for overflow for good measure
2024-12-05 robertphillips@google.com Address some numerical instability in SkRRect::transform
2024-12-05 jamesgk@google.com [graphite] Support mipmapped deferred canvases
2024-12-05 kjlubick@google.com Add graphite-specific version of tools/DisplayParams
2024-12-05 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE from 0bb109aa3311 to e42047f0bbac (16 revisions)
2024-12-05 skia-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from ef19ac786024 to 0846b50db6b1 (6 revisions)
2024-12-05 skia-autoroll@skia-public.iam.gserviceaccount.com Roll Skia Infra from 2d420a4dcfc4 to 73c103d87739 (7 revisions)
2024-12-05 skia-autoroll@skia-public.iam.gserviceaccount.com Roll Dawn from e0d7445de8cd to 3ee07d9e3ba7 (18 revisions)
2024-12-04 kjlubick@google.com Slightly improve readability of SkSwizzler_opts
2024-12-04 kjlubick@google.com Help type deduction for old compilers
2024-12-04 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE from 7adbb3e81110 to 0bb109aa3311 (14 revisions)
2024-12-04 jvanverth@google.com Catch some excessive loop cases in GrTriangulator.
2024-12-04 skia-autoroll@skia-public.iam.gserviceaccount.com Roll skottie-base from 04ad645c0403 to 32e4afed6d80
2024-12-04 fmalita@chromium.org [svg] Conditional debugging

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 bdero@google.com,jvanverth@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

...
2024-12-06 21:38:39 +00:00
Chris Bracken
f5db949a32 iOS: add null check on create impeller context (flutter/engine#56952)
In the case where `CreateImpellerContext` encounters an error while creating an `impeller::ContextMTL`, we logged an error, returned nullptr, then immediately dereferenced the null pointer. Now, rather than crash due to a segfault, we now intentionally abort with an appropriate error message.

This adds checks in the `FlutterDarwinContextMetalImpeller` initialiser that aborts with an appropriate error message if impeller context creation fails, Metal device creation fails, or texture cache creation fails.

Rather than bailing out and returning nil from the initialiser to pass the buck to the caller, we terminate since without a graphics context, the app won't be able to render anything to begin with.

Issue: https://github.com/flutter/flutter/issues/157489
Issue: [b/378790930](http://b/378790930)

No test changes since this just changes an accidental crash to an intentional crash.

[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
2024-12-06 19:32:25 +00:00
skia-flutter-autoroll
87af85b89c Roll Dart SDK from 9c9a333c496c to 67ce49b905f7 (2 revisions) (flutter/engine#57013)
https://dart.googlesource.com/sdk.git/+log/9c9a333c496c..67ce49b905f7

2024-12-06 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.7.0-221.0.dev
2024-12-06 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.7.0-220.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-12-06 19:32:24 +00:00
auto-submit[bot]
3e5e7086d5 Reverts "Replaces bespoke call captures from mock gles with gmock (#56995)" (flutter/engine#57016)
Reverts: flutter/engine#56995
Initiated by: jonahwilliams
Reason for reverting: compilation error at head.
Original PR Author: gaaclarke

Reviewed By: {jonahwilliams}

This change reverts the following previous change:
test exempt: test only code

[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
2024-12-06 18:01:35 +00:00
gaaclarke
afb249fd2b Replaces bespoke call captures from mock gles with gmock (flutter/engine#56995)
test exempt: test only code

## 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/blob/master/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/master/docs/contributing/Style-guide-for-Flutter-repo.md
[C++, Objective-C, Java style guides]:
https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
[testing the engine]:
https://github.com/flutter/engine/blob/main/docs/testing/Testing-the-engine.md
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/master/docs/contributing/Chat.md
2024-12-06 09:17:57 -08:00
Jason Simmons
30289be8ba [Impeller] Require the GLES multisampled_render_to_texture2 extension for offscreen MSAA (flutter/engine#56997)
Offscreen MSAA needs the ability to create multisample depth and stencil attachments.
2024-12-06 15:43:23 +00:00
skia-flutter-autoroll
e9540f935e Roll Dart SDK from d7903a0fedc5 to 9c9a333c496c (1 revision) (flutter/engine#57006)
https://dart.googlesource.com/sdk.git/+log/d7903a0fedc5..9c9a333c496c

2024-12-06 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.7.0-219.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-12-06 10:03:22 +00:00
skia-flutter-autoroll
2c5c35afe6 Roll Dart SDK from 56bbedca60f9 to d7903a0fedc5 (2 revisions) (flutter/engine#56998)
https://dart.googlesource.com/sdk.git/+log/56bbedca60f9..d7903a0fedc5

2024-12-06 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.7.0-218.0.dev
2024-12-05 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.7.0-217.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-12-06 02:03:22 +00:00
Michael Goderbauer
75f9549553 Bump Dart SDK to 3.7 (flutter/engine#56989) 2024-12-06 01:41:03 +00:00
skia-flutter-autoroll
0773b06391 Roll Fuchsia Linux SDK from CCKZcL47N_2_vxAtS... to DDdLABVLcqOv_axv-... (flutter/engine#56988)
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 bdero@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-12-05 22:14:05 +00:00
Michael Goderbauer
a8c8d2f15e Configure Page Width (flutter/engine#56987) 2024-12-05 22:12:03 +00:00
Jim Graham
1c2cd45f88 [DisplayList] Disable group opacity when a RuntimeEffect is in use (flutter/engine#56936)
Fixes https://github.com/flutter/flutter/issues/158500

Impeller does not support group opacity for RuntimeEffects so we disable the optimization with a flag when it is detected.
2024-12-05 21:39:50 +00:00
gaaclarke
72d1c2fea6 Removes ReactorGLES::Ref (flutter/engine#56981)
This typedef really wasn't making the codebase any easier to work with.  We don't do this for other std::shared_ptr's

test-exempt: just removes typedef

[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
2024-12-05 21:06:11 +00:00
Jonah Williams
2e80dbea2c [Impeller] create a 300 es variant of all GLES shaders to support UBO binding. (flutter/engine#56960)
Create a GLES3 "backend" by compiling a second set of GLES shaders to 300 es. This allows the usage of UBOs and SSBOs.
2024-12-05 20:56:16 +00:00
Tong Mu
f5325bf597 [Impeller] Add rounded superellipse (flutter/engine#56726)
Support rounded superellipse.

Part of https://github.com/flutter/flutter/issues/139321 and
https://github.com/flutter/flutter/issues/13914, also related to
https://github.com/flutter/flutter/issues/91523.

### Open questions

* Alternative names:
  * Round**ed**Superellipse
  * Squircle
  * ContinuousBorderRectangle (or something like this...)
* I chose rounded superellipse because this name, albeit its length,
precisely describe this shape. "Squircle" is not strictly defined but
generally refers any shape intermediate between a rectangle and a
circle.
* Alternative definition for `corner_radius`:
* Currently the `corner_radius` corresponds to SwiftUI parameters. To
make the shape definition more generalized, we can instead define the
`corner_radius` to be the radius of the corner circles, and make the
framework do a look up table.
* The down side is, not only the work to re-calculate the table, but
also that it doesn't completely eliminates the relationship with
SwiftUI, since currently the degree of the superellipse (`n`) is also
mapped from the SwiftUI `cornerRadius`, which is not necessary for the
shape per se.
* To some extent it boils down to the question of whether we'd like this
shape to support anything beyond SwiftUI.

### Demo


https://github.com/user-attachments/assets/806ac0e9-d62f-4b04-ab6a-83436a11f6f3

Low ratio: (900, 900, 445)

<img width="520" alt="image"
src="https://github.com/user-attachments/assets/54087467-85cd-4021-91cc-a948866ab5a8">

Mid ratio: (900, 650, 180)

<img width="508" alt="image"
src="https://github.com/user-attachments/assets/460a4927-0396-462b-948d-0846a781c92c">

High ratio: (900, 650, 17)

<img width="490" alt="image"
src="https://github.com/user-attachments/assets/8d7f625d-8a3b-4aba-b3f9-f292b874b606">


## 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] 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.
- [ ] I updated/added relevant documentation (doc comments with `///`).
- [ ] I signed the [CLA].
- [ ] 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-12-05 11:27:20 -08:00
gaaclarke
4931dd81fb Moved gles pipelines to untracked handles. (flutter/engine#56955)
issue: https://github.com/flutter/flutter/issues/159745

[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
2024-12-05 19:21:18 +00:00
skia-flutter-autoroll
5cb8e71fd5 Roll Dart SDK from a2a9428e761f to 56bbedca60f9 (7 revisions) (flutter/engine#56980)
https://dart.googlesource.com/sdk.git/+log/a2a9428e761f..56bbedca60f9

2024-12-05 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.7.0-216.0.dev
2024-12-05 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.7.0-215.0.dev
2024-12-05 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.7.0-214.0.dev
2024-12-05 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.7.0-213.0.dev
2024-12-05 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.7.0-212.0.dev
2024-12-04 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.7.0-211.0.dev
2024-12-04 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version 3.7.0-210.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-12-05 18:41:21 +00:00
Mouad Debbar
a3ed100995 [web] Use eventTarget when computing pointer offset (flutter/engine#56949)
These changes are mainly things I missed in https://github.com/flutter/engine/pull/56719

Fixes https://github.com/flutter/flutter/issues/159804
2024-12-05 18:07:20 +00:00
Brandon DeRosier
ba21393f49 Drop APNG frames that don't fit entirely within the destination surface. (flutter/engine#56928)
As per the [spec](https://www.w3.org/TR/png/#fcTL-chunk):

> The frame must be rendered within the region defined by x_offset, y_offset, width, and height. This region may not fall outside of the default image; thus x_offset plus width must not be greater than the [IHDR](https://www.w3.org/TR/png/#11IHDR) width; similarly y_offset plus height must not be greater than the [IHDR](https://www.w3.org/TR/png/#11IHDR) height.
2024-12-05 09:34:32 +00:00
Jonah Williams
7b1b6d13f2 [Impeller] store GLES bindings on render pass w/ offsets instead of per-command. (flutter/engine#56910)
To reduce heap fragmentation from tons of little vectors.
2024-12-05 06:13:30 +00:00
Jonah Williams
4453a2b85b [Impeller] avoid re-binding winding order and cull mode. (flutter/engine#56943)
Winding order and cull mode almost never change, so avoid re-binding them over and over again. Minor performance improvement.
2024-12-05 03:26:05 +00:00
gaaclarke
8c736f4144 Implements the naming of untracked gles handles (flutter/engine#56948)
issue: https://github.com/flutter/flutter/issues/159745

https://github.com/flutter/engine/pull/56927 introduced untracked handles, but naming them didn't work.  This adds a test to make sure they work.  I kept naming thread-safe since it isn't happening often anyways.

[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
2024-12-05 02:06:44 +00:00
Jonah Williams
ae6555d5a9 [Impeller] remove extra validation checks in GLES backend. (flutter/engine#56944)
We're already doing a check if the pipeline is valid in RenderPass::AddCommand. The index checks are validated during binding, and the check for instancing is unecessary given that we don't expose.

While I'm at it do some minor cleanups.
2024-12-04 23:24:09 +00:00
Robert Ancell
fd12f3489c Remove LSAN supressions for Linux embedder (flutter/engine#56913)
Fixes https://github.com/flutter/flutter/issues/90155
2024-12-05 11:44:08 +13:00