Repository: flutter
Issue: DL/Geometry engine migration tracking issue
Labels: engine,P2,team-engine,triaged-engine

The engine is slowly being migrated to only use DisplayList/Impeller geometry classes throughout its code and the associated Skia objects will only be used when talking directly to Skia, say, in the Skia DisplayList adapter interfaces.

Converted/done items:
- [x] Unit tests in the impeller/ directory (see https://github.com/flutter/flutter/pull/161855) (reland https://github.com/flutter/flutter/pull/162146)
- [x] Unit tests in the display_list/ directory (see https://github.com/flutter/flutter/pull/161453)
- [x] AccumulationRect and MatrixClipTracker (see https://github.com/flutter/flutter/pull/161553)
- [x] SkRSXform which has no Impeller equivalent yet (see https://github.com/flutter/flutter/pull/161652)

Things which will be converted to DisplayList/Impeller mechanisms proactively:
- [ ] ImageFilter unit tests which use Skia filters to compare things like bounds behaviors.
  - [ ] there are still some bugs filed against this mechanism that should be fixed before we remove these tests
  - [ ] they should be replaced with "here is the expected answer" tests in lieu of using Skia to generate the correct answers
- [ ] dl_geometry unit tests which only use Skia classes to test the current Skia/Impeller conversion macros which will eventually go away when all non-Skia code is solely using the dl_geometry stubs
- [ ] dl_path unit tests which will switch to Impeller's PathBuilder when we beef it up to completely replace SkPath
- [ ] dl_region unit tests which only use Skia geometry to test results
  - [ ] these should be replaced with "expected answer" tests rather than comparing to Skia results
- [ ] impeller/
- [ ] flow/
- [ ] shell/
- [ ] embedders

Things being worked on:

Things that might require significant effort to convert:
- [ ] dl_path itself which defers to SkPath for most of its construction work. It supports bidirectional conversion to/from Impeller Paths, but requires the ui.Path Flutter API to use SkPath as the originating path because the Impeller Path does not support the entire Flutter path construction API
- [ ] SkPathOps which are a major geometry sub-system living in the Skia source base and support only SkPath objects. It may be possible to use them with Impeller Paths by just converting the path to an SkPath, but eventually the engine should have a self-sufficient set of path ops.
- [ ] dl_rendering_unittests
  - [ ] we should eliminate the "does rendering via DisplayList match rendering via SkPicture?" tests as we no longer support SkPicture at all
  - [ ] we should also get these up and running on Impeller as an output backend (sort of works, but needs bug fixing)
- [ ] Any use of SkSurface, SkColorSpace and their associated classes to manage surfaces

Things that will never be converted as they will eventually be deleted when we stop using Skia:
- [ ] skia/ directory - will never be converted as its purpose is to interpret DisplayLists for Skia
- [ ] raster_cache classes which won't be used under Impeller
- [ ] complexity benchmarks which are only used for raster caching decisions which won't be used under Impeller