Jim Graham bc69788f05 [DisplayList] DlPath object provides auto-conversion from Skia to Impeller (flutter/engine#55055)
Switch from using the clumsy manual CacheablePath object to a more automatic DlPath object for holding paths in DisplayLists and dispatching them to either Skia or Impeller with auto-conversion.

For now DlPath is just a wrapper around SkPath with an auto-generating Impeller Path object which is very similar in design from what was done with the CacheablePath object except that it manages the caching of the Impeller path internally without extra burden on Impeller or Skia. There is also no need to communicate with the Dispatch method as to which type of path you prefer, they're all "auto-converting" DlPath objects now.

For now, ui.Path still generates an SkPath and so we wrap it when we record it into a DisplayList, just like the former CacheablePath mechanism. It will be a simple conversion to create the DlPath wrapper in ui.Path, though, so as to maintain the cached Impeller paths across frames even if the DisplayList itself is not preserved.

Eventually DlPath will take on more of a role of hiding the construction and internal representation of the paths so that we could be using SkPath, impeller::Path, or some other internal storage. For now, SkPath will likely remain primary storage for a while so that we can deal with PathOps.
2024-09-12 01:20:59 +00:00
..

flutter/third_party

This directory contains third-party code that is a combination of:

  • Code that is vendored into the Flutter repository, from an external source. For example, we might have third_party/glfw, which contains the GLFW library, vendored from an external repository.

    💡 TIP: See DEPS for where these sources are declared.

  • Code that originates from another repository, but is copied (sometimes with alterations) into the Flutter repository. For an example, see third_party/spring_animation.

  • Code that is licensed separately from the rest of the Flutter repository. For example, see third_party/txt.

When adding a new externally sourced third-party library, update .gitignore:

# Ignores all third_party/ directories except for the ones we want to track.

+ !{folder_name}/