This patch introduces a picture composite mode that caches the surface in a grid of tiles in the texture cache. This is enabled by setting the picture composite mode to PictureCompositeMode::TileCache. Basic overview: * During initial picture traversal, any tile caches encountered are pushed / popped onto the PictureUpdateState stack. * If a tile cache is present, and if the transforms have changed since last frame build, then the primitive instances are walked, mapping each prim instance to a set of tiles in the cache. This allows dependencies for each tile (transforms, images, animated property bindings etc) to be set. Although this does involve an extra pass of primitive instances, it's only used when the tile cache mappings (the relative transforms) have changed, so it's done quite rarely. In addition, in the future we can move much of the second primitive traversal (clip chain building) etc to also happen here, which will mean that doesn't get done each frame build. * During prim prepare, a picture with tile cache enabled checks the dependencies on each tile, to see if it needs to be invalidated. It builds a dirty rect that is the union of the set of dirty tiles for this picture. Right now, we support only a single dirty rect for simplicity, but this can easily be expanded in the future to support a number of regions as required. This dirty rect is then passed via the PictureContext to any child primitives, and is used as the culling rect for primitive, clip mask and child picture allocations. * The picture preparation step also maintains a list of texture cache handles per tile, and records a series of blit commands for the renderer to execute after drawing the picture. These blits are executed to cache the picture output in texture cache tiles. * On subsequent frames, if the tile(s) are not invalid, they are drawn as a series of images with the brush_image shader.