This enhances the overlay optimization by delaying combining pictures to get tighter bounds for the pictures that make up the scene, enabling more sophisticated optimization since we can determine if they intersect with platform views on a per-picture basis. Fixes https://github.com/flutter/flutter/issues/149863 Fixes https://github.com/flutter/flutter/issues/155833 On a Macbook in Chrome in an example app with an infinite scrolling grid of platform views, this brings the ratio of dropped frames from 93% to 55% (roughly 4 fps to 30 fps). This is a reland of https://github.com/flutter/engine/pull/54878 with a fix for scenes with pictures and shader masks that are eventually entirely clipped out. It also fixes a performance issue caused by making too many Canvases just to record the size of the picture elements in the scene. [C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
...............................................................................
Flutter Web Engine Test Suites
The flutter engine unit tests can be run with a number of different
configuration options that affect both compile time and run time. The
permutations of these options are specified in the felt_config.yaml file that
is colocated with this README. Here is an overview of the way the test suite
configurations are structured:
compile-configs
Specifies how the tests should be compiled. Each compile config specifies the following:
name- The name of the compile configuration.compiler- What compiler is used to compile the tests. Currently we supportdart2jsanddart2wasmas values.renderer- Which renderer to use when compiling the tests. Currently we supporthtml,canvaskit, andskwasm.
test-sets
A group of files that contain unit tests. Each test set specifies the following:
name- The name of the test set.directory- The name of the directory underflutter/lib/web_ui/testthat contains all the test files.
test-bundles
Specifies a group of tests and a compile configuration of those tests. The output
of the test bundles appears in flutter/lib/web_ui/build/test_bundles/<name>
where <name> is replaced by the name of the bundle. Each test bundle may be used
by multiple test suites. Each test bundle specifies the following:
name- The name of the test bundle.test-set- The name of the test set that contains the tests to be compiled.compile-config- The name of the compile configuration to use.
run-configs
Specifies the test environment that should be provided to a unit test. Each run config specifies the following:
name- Name of the run configuration.browser- The browser with which to run the tests. Valid values for this arechrome,firefox,safarioredge.canvaskit-variant- An optionally supplied argument that forces the tests to use a particular variant of CanvasKit, eitherfullorchromium. If none is specified, the engine will select the variant based on its normal selection logic.
test-suites
This is a fully specified run of a group of unit tests. They specify the following:
name- Name of the test suite.test-bundle- Which compiled test bundle to use when running the suite.run-config- Which run configuration to use when runnin the tests.artifact-deps- Which gn/ninja build artifacts are needed to run the suite. Valid values arecanvaskit,canvaskit_chromiumorskwasm.