Roll Skia from 5c9cdc4e0b61 to 2bab3a2a2953 (57 revisions) (#42731)

Roll Skia from 5c9cdc4e0b61 to 2bab3a2a2953 (57 revisions)

https://skia.googlesource.com/skia.git/+log/5c9cdc4e0b61..2bab3a2a2953

2023-06-10 skia-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from 4a513c734ca6 to 27c917dbec91 (1 revision)
2023-06-10 skia-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from 938975820ae4 to 4a513c734ca6 (3 revisions)
2023-06-10 skia-autoroll@skia-public.iam.gserviceaccount.com Roll SK Tool from 76c4b7d0e45f to aefb2afea477
2023-06-10 johnstiles@google.com Revert "Refactor SkJpegXmp into SkXmp which is more generic."
2023-06-09 johnstiles@google.com Refactor IR helper functions into reusable helper class.
2023-06-09 skia-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from 701c5daafb72 to 938975820ae4 (1 revision)
2023-06-09 robertphillips@google.com Disable the BigImageTest on IntelIris655 and IntelIris540 GPUs
2023-06-09 bungeman@google.com Reland "[pdf] Use DW when it is an integer"
2023-06-09 skia-autoroll@skia-public.iam.gserviceaccount.com Manual roll Dawn from 6e25bf7674bb to d2e4270f67b2 (10 revisions)
2023-06-09 maryla@google.com Refactor SkJpegXmp into SkXmp which is more generic.
2023-06-09 kjlubick@google.com Move DDL and SkSurfaceCharacterization to include/private/chromium
2023-06-09 johnstiles@google.com Improve WGSL codegen for break-if statements.
2023-06-09 johnstiles@google.com Optimize away logical-not applied to a comparison op.
2023-06-09 michaelludwig@google.com [skif] Update DisplacementMap to use FilterResult and runtime sksl
2023-06-09 robertphillips@google.com Minor refactor of tiled image unit test
2023-06-09 kjlubick@google.com Add codec files back (for now) to public.bzl
2023-06-09 jvanverth@google.com Revert "[graphite] Use SkSpan for YUVATextureProxies and YUVABackendTextures."
2023-06-09 jvanverth@google.com Revert "Add SkSpan constructor that takes const Container&"
2023-06-09 robertphillips@google.com Add clipping to the tiled image unit test
2023-06-09 robertphillips@google.com Restructure tiled image test
2023-06-09 senorblanco@google.com Manually roll Dawn from d7b8efa431ad to 6e25bf7674bb (16 revisions)
2023-06-09 kjlubick@google.com Remove Ganesh code from SkCanvasPriv
2023-06-09 boliu@google.com Null check GrGLBuffer::Make
2023-06-09 jvanverth@google.com [graphite] Use SkSpan for YUVATextureProxies and YUVABackendTextures.
2023-06-09 jvanverth@google.com [graphite] Add TextureFromYUVAImages.
2023-06-09 kjlubick@google.com Move XfermodeInterpretation -> SkBlendModePriv
2023-06-09 kjlubick@google.com [canvaskit] Fix exports in npm
2023-06-09 kjlubick@google.com Remove Ganesh code from SkBlendMode/XferMode
2023-06-09 zzyiwei@google.com Update VkHardwareBufferTest to also fallback for ahb mem type
2023-06-09 kjlubick@google.com Add more files to public.bzl
2023-06-09 bungeman@google.com Revert "[pdf] Use DW when it is an integer"
2023-06-09 kjlubick@google.com Manually Roll Dawn from d7b8efa431ad to 6e25bf7674bb (16 revisions)
2023-06-09 drott@chromium.org [Fontations] Make metrics scale with font variations
2023-06-09 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE from bc66167d304a to 8a62b4c44fc9 (11 revisions)
2023-06-09 skia-autoroll@skia-public.iam.gserviceaccount.com Roll Skia Infra from 03004105c7e9 to 76c4b7d0e45f (11 revisions)
2023-06-09 skia-autoroll@skia-public.iam.gserviceaccount.com Roll SK Tool from f24ac179ced6 to eb8ee01a4b8b
2023-06-09 skia-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from dbc2d4fbc1cf to 701c5daafb72 (2 revisions)
2023-06-09 herb@google.com Improve quadratic evaluation at t
2023-06-08 bungeman@google.com [pdf] Use DW when it is an integer
2023-06-08 johnstiles@google.com Remove TArray::reserve_back.
2023-06-08 johnstiles@google.com Convert TArray::reserve_back to reserve_exact throughout Skia.
2023-06-08 johnstiles@google.com Remove unused test file.
2023-06-08 johnstiles@google.com Add support for array-equality and struct-equality expressions.
2023-06-08 jvanverth@google.com Add SkSpan constructor that takes const Container&
2023-06-08 zzyiwei@google.com Fallback to use any available memory type for AHB import
2023-06-08 robertphillips@google.com Add picture-backed images to big image unit test
...
https://dart.googlesource.com/external/github.com/flutter/engine/+/7c6770083e5c5278b30b23bfb95505d0011f70d7
2 files changed
tree: d9aaeac7e04d35a6545322ab0b7dbadb7b47d2c6
  1. ci/
  2. tools/
  3. .gitignore
  4. commits.json
  5. DEPS
  6. OWNERS
  7. README.md
README.md

Monorepo

A gclient solution for checking out Dart and Flutter source trees

Monorepo is:

  • Optimized for Tip-of-Tree testing: The Monorepo DEPS used to check out Dart and Flutter dependencies comes from the Flutter engine DEPS with updated dependencies from Dart.

Checking out Monorepo

With depot_tools installed and on your path, create a directory for your monorepo checkout and run these commands to create a gclient solution in that directory:

mkdir monorepo
cd monorepo
gclient config --unmanaged https://dart.googlesource.com/monorepo
gclient sync -D

This gives you a checkout in the monorepo directory that contains:

monorepo/
  DEPS - the DEPS used for this gclient checkout
  commits.json - the pinned commits for Dart, flutter/engine,
                 and flutter/flutter
  tools/ - scripts used to create monorepo DEPS
engine/src/ - the flutter/buildroot repo
    flutter/ - the flutter/engine repo
    out/ - the build directory, where Flutter engine builds are created
    third_party/ - Flutter dependencies checked out by DEPS
      dart/ - the Dart SDK checkout.
        third_party - Dart dependencies, also used by Flutter
flutter/ - the flutter/flutter repo

Building Flutter engine

Flutter's instructions for building the engine are at Compiling the engine

They can be followed closely, with a few changes:

  • Googlers working on Dart do not need to switch to Fuchsia's Goma RBE, except for Windows. The GOMA_DIR enviroment variable can just point to the .cipd_bin directory in a depot_tools installation, and just goma_ctl ensure_start is sufficient.
  • The --no-prebuilt-dart-sdk option has to be added to every gn command, so that the build is set up to build and use a local Dart SDK.
  • The --full-dart-sdk option must be added to gn for the host build target if you will be building web or desktop apps.

Example build commands that work on linux:

MONOREPO_PATH=$PWD
if [[ ! $PATH =~ (^|:)$MONOREPO_PATH/flutter/bin(:|$) ]]; then
  PATH=$MONOREPO_PATH/flutter/bin:$PATH
fi

export GOMA_DIR=$(dirname $(command -v gclient))/.cipd_bin
goma_ctl ensure_start

pushd engine/src
flutter/tools/gn --goma --no-prebuilt-dart-sdk --unoptimized --full-dart-sdk
autoninja -C out/host_debug_unopt
popd

Building Flutter apps

The Flutter commands used to build and run apps will use the locally built Flutter engine and Dart SDK, instead of the one downloaded by the Flutter tool, if the --local-engine option is provided.

For example, to build and run the Flutter spinning square sample on the web platform,

MONOREPO_PATH=$PWD
cd flutter/examples/layers
flutter --local-engine=host_debug_unopt \
  -d chrome run widgets/spinning_square.dart
cd $MONOREPO_PATH

To build for desktop, specify the desktop platform device in flutter run as -d macos or -d linux or -d windows. You may also need to run the command

flutter create --platforms=windows,macos,linux

on existing apps, such as sample apps. New apps created with flutter create already include these support files. Details of desktop support are at Desktop Support for Flutter

Testing

Tests in the Flutter source tree can be run with the flutter test command, run in the directory of a package containing tests. For example:

MONOREPO_PATH=$PWD
cd flutter/packages/flutter
flutter test --local-engine=host_debug_unopt
cd $MONOREPO_PATH

Troubleshooting

Please file an issue or email the dart-engprod team with any problems with or questions about using monorepo.

We will update this documentation to address them.

  • flutter commands may download the engine and Dart SDK files for the configured channel, even though they will be using the local engine and its SDK.

Windows

  • On Windows, gclient sync needs to be run in an administrator session, because some installed dependencies create symlinks.