These keep turning up, so I did a little bash-fu to find them all.
```bash
grep -lL "#pragma once" $(grep -lL "#ifndef .*_H_" $(find . | grep "\.h$")) | cut -c 3-
```
With this PR we no longer need to hold DisplayLists in GPUObject wrappers and they can be disposed instantly instead of queueing on the Unref thread.
This will definitely be a win for Impeller as none of the objects used in a frame now require queueing, but the performance impact on apps running on top of skia is less clear if they depend on a lot of images inside their DisplayLists that still need to be queued to be freed. After getting further in the work, it looks like only decoded images need to use the protected DlImage wrappers and most of those should survive many frames before they are disposed. That should hopefully leave very few unrefs happening per frame.
~There are 3 unit tests in `shell_unittests.cc` and `embedder_metal_unittests.mm` that are now GSKIP'd as they now invoke code that needs a fully initialized UIDartState in order to protect their images. I will look into fixing the tests and/or making the code they invoke provide protection without relying on UIDartState.~ (This looks to be fixed in the latest commit by simply not creating DlImageGPUs all over the source base and simply catching only those that end up in UI data structures. There is actually existing code in one of the modules that feeds ui.Image with an answer to wrap the image in a DlImageGPU if it has a skia image anyway, so most of these additional uses of DlImageGPU that were having trouble getting the Skia unref queue just didn't need it anyway.)
Previously this was comparing a float overlay rectangle size with an
integer cache bitmap size. This could result in mismatches if the
overlay width is not an integer.
* Implemented wide gamut images for iOS
Moved the surface to an extended range color format.
* wrong gamma but default pixel format set to bgra10_xr
* BGR10_XR add
* format
* updated todos
* updated todo with information about pixel formats
* switched logic for determining if we have a wide gamut image
* cleaned up gamut math to match style and linked source
* made the color attachment pixel format match the surface
* updated vulkan format switch
* removed comment
* added enable disable switch
* moved default to bgr10 for now since there is a bug where someone is still reading this, msaa?
* fixed the decoder settings to make sure we don't lose wide gamut colors
* fixed stored srgb gamut variable
* fixed false lint
* updated test
* added ability to grab the surface data for tests
* made the screenshot utility return the format
* added width and height to the platform channel payload
* fixed a couple of broken targets
* moved back the default pixel buffer format
* cleanup and add docstrings
* made the surfacedata feature only available in debug builds
* added decoding unit test
* fixed objc tests
* turned off by default
* bdero feedback1
* bdero2
* bdero3
* fixed merge issue
* removed using std::shared_ptr
* add support to run dl_canvas_unittests on GPU surfaces (off by default)
* empty commit to trigger build
* conditionally include platform-specific surface provider headers
* ignore DL test files during license checks
* typo
* add dependencies to rendertests to hopefully build on Windows
* remove benchmarking deps from dl_rendertests
* more changes to get Windows rendertests to link
* add --enable-gl synonym and prevent non-SW surface provider dest on Windows
* fix gn formatting
* review feedback
* collect DL indices in RTree for clip culling
* fix bounds in unit test and minor opt in Dispatch
* normalize inline matrix objects and minor fixes to unit test
* remove over-eager DCHECK and improve R-Tree comments
* formatting
* include vector for Windows
* method rename and distribute child nodes more evenly
* add R-Tree specific unit tests and debug checks
* add comments about geometry to R-Tree unit tests and adjust spacing
* licenses
* licenses attempt 2
* fix potential overflow with uint32_t
* aggressively const DisplayList fields and methods
* add implementation comments per review feedback
* Revert "Revert "Reland layer state stack" (#37178)"
This reverts commit 21cc000359d8a4da097e8849e83dcbe8ac941e01.
* fix double-transform rendering issues in #114359
* adjust recently added unit test to state_stack APIs
* introduce LSS delegates to simplify some code and reduce overhead
* Fix ShellTest.OnServiceProtocolEstimateRasterCacheMemoryWorks
* add unit test for tracker.setTransform(4x4) and fix bug
* fix culling issue in LayerTree::Flatten
* Tweak Texture::Paint API
* Support external textures for iOS
* format code
* Tweak code
* format
* Clean code
* [Impeller] Support YUV external textures on iOS
* Fix test
* Clean code
* Fix compile error
* Add todo link
* Clean code